Struct three_d::camera::Camera [−][src]
pub struct Camera { /* fields omitted */ }
Expand description
Used in a render call to define how to view the 3D world.
Implementations
impl Camera
[src]
impl Camera
[src]pub fn new_orthographic(
context: &Context,
position: Vec3,
target: Vec3,
up: Vec3,
width: f32,
height: f32,
depth: f32
) -> Result<Camera, Error>
[src]
pub fn new_orthographic(
context: &Context,
position: Vec3,
target: Vec3,
up: Vec3,
width: f32,
height: f32,
depth: f32
) -> Result<Camera, Error>
[src]New camera which projects the world with an orthographic projection. See also set_view, set_perspective_projection and set_orthographic_projection.
pub fn new_perspective(
context: &Context,
position: Vec3,
target: Vec3,
up: Vec3,
field_of_view_y: Degrees,
aspect: f32,
z_near: f32,
z_far: f32
) -> Result<Camera, Error>
[src]
pub fn new_perspective(
context: &Context,
position: Vec3,
target: Vec3,
up: Vec3,
field_of_view_y: Degrees,
aspect: f32,
z_near: f32,
z_far: f32
) -> Result<Camera, Error>
[src]New camera which projects the world with a perspective projection.
pub fn set_perspective_projection(
&mut self,
field_of_view_y: Degrees,
aspect: f32,
z_near: f32,
z_far: f32
) -> Result<(), Error>
[src]
pub fn set_perspective_projection(
&mut self,
field_of_view_y: Degrees,
aspect: f32,
z_near: f32,
z_far: f32
) -> Result<(), Error>
[src]Specify the camera to use perspective projection with the given field of view in the y-direction, aspect and near and far plane.
pub fn set_orthographic_projection(
&mut self,
width: f32,
height: f32,
depth: f32
) -> Result<(), Error>
[src]
pub fn set_orthographic_projection(
&mut self,
width: f32,
height: f32,
depth: f32
) -> Result<(), Error>
[src]Specify the camera to use orthographic projection with the given width, height and depth. The view frustum width is +/- width/2, height is +/- height/2 and depth is 0 to depth.
pub fn set_aspect(&mut self, value: f32) -> Result<bool, Error>
[src]
pub fn set_aspect(&mut self, value: f32) -> Result<bool, Error>
[src]Change the current projection to abide to the given aspect ratio.
pub fn set_view(
&mut self,
position: Vec3,
target: Vec3,
up: Vec3
) -> Result<(), Error>
[src]
pub fn set_view(
&mut self,
position: Vec3,
target: Vec3,
up: Vec3
) -> Result<(), Error>
[src]Change the view of the camera. The camera is placed at the given position, looking at the given target and with the given up direction.
pub fn mirror_in_xz_plane(&mut self) -> Result<(), Error>
[src]
pub fn mirror_in_xz_plane(&mut self) -> Result<(), Error>
[src]Change the camera view such that it is mirrored in the xz-plane.
pub fn in_frustum(&self, aabb: &AxisAlignedBoundingBox) -> bool
[src]
pub fn in_frustum(&self, aabb: &AxisAlignedBoundingBox) -> bool
[src]Returns whether or not the given bounding box is within the camera frustum. It returns false if it is fully outside and true if it is inside or intersects.
pub fn pick(
&self,
screen_coordinates: (f32, f32),
max_depth: f32,
objects: &[&dyn Geometry]
) -> Result<Option<Vec3>, Error>
[src]
pub fn pick(
&self,
screen_coordinates: (f32, f32),
max_depth: f32,
objects: &[&dyn Geometry]
) -> Result<Option<Vec3>, Error>
[src]Finds the closest intersection between a ray from this camera in the direction of the given screen coordinates and the given geometries.
Returns None
if no geometry was hit before the given maximum depth.
pub fn position_at(&self, screen_coordinates: (f32, f32)) -> Vec3
[src]
pub fn position_at(&self, screen_coordinates: (f32, f32)) -> Vec3
[src]Returns the 3D position at the given screen/image plane coordinates. The coordinates must be between 0 and 1, where (0, 0) indicate the top left corner of the screen and (1, 1) indicate the bottom right corner.
pub fn view_direction_at(&self, screen_coordinates: (f32, f32)) -> Vec3
[src]
pub fn view_direction_at(&self, screen_coordinates: (f32, f32)) -> Vec3
[src]Returns the 3D view direction at the given screen/image plane coordinates. The coordinates must be between 0 and 1, where (0, 0) indicate the top left corner of the screen and (1, 1) indicate the bottom right corner.
pub fn view(&self) -> &Mat4
[src]
pub fn view(&self) -> &Mat4
[src]Returns the view matrix, ie. the matrix that transforms objects from world space (as placed in the world) to view space (as seen from this camera).
pub fn projection(&self) -> &Mat4
[src]
pub fn projection(&self) -> &Mat4
[src]Returns the projection matrix, ie. the matrix that projects objects in view space onto this cameras image plane.
pub fn target(&self) -> &Vec3
[src]
pub fn target(&self) -> &Vec3
[src]Returns the target of this camera, ie the point that this camera looks towards.
pub fn view_direction(&self) -> Vec3
[src]
pub fn view_direction(&self) -> Vec3
[src]Returns the view direction of this camera, ie. the direction the camera is looking.
pub fn right_direction(&self) -> Vec3
[src]
pub fn right_direction(&self) -> Vec3
[src]Returns the right direction of this camera.
pub fn uniform_buffer(&self) -> &UniformBuffer
[src]
pub fn uniform_buffer(&self) -> &UniformBuffer
[src]Returns an uniform buffer containing camera information which makes it easy to transfer all necessary camera information to a shader.
Use this buffer in your Program like this program.use_uniform_block(camera.uniform_buffer(), "Camera");
and add the following to your shader code:
layout (std140) uniform Camera { mat4 viewProjection; mat4 view; mat4 projection; vec3 position; float padding; } camera;