Trait kiss3d::camera::Camera
[−]
[src]
pub trait Camera { fn handle_event(&mut self, _window: &Window, _event: &WindowEvent); fn eye(&self) -> Point3<f32>; fn view_transform(&self) -> Isometry3<f32>; fn transformation(&self) -> Matrix4<f32>; fn inverse_transformation(&self) -> Matrix4<f32>; fn clip_planes(&self) -> (f32, f32); fn update(&mut self, window: &Window); fn upload(&self, _pass: usize, uniform: &mut ShaderUniform<Matrix4<f32>>) { ... } fn num_passes(&self) -> usize { ... } fn start_pass(&self, _pass: usize, _window: &Window) { ... } fn render_complete(&self, _window: &Window) { ... } fn project(&self,
world_coord: &Point3<f32>,
size: &Vector2<f32>)
-> Vector2<f32> { ... } fn unproject(&self,
window_coord: &Point2<f32>,
size: &Vector2<f32>)
-> (Point3<f32>, Vector3<f32>) { ... } }
Trait every camera must implement.
Required Methods
fn handle_event(&mut self, _window: &Window, _event: &WindowEvent)
Handle a mouse event.
fn eye(&self) -> Point3<f32>
The camera position.
fn view_transform(&self) -> Isometry3<f32>
The camera view transform.
fn transformation(&self) -> Matrix4<f32>
The transformation applied by the camera to transform a point in world coordinates to a point in device coordinates.
fn inverse_transformation(&self) -> Matrix4<f32>
The transformation applied by the camera to transform point in device coordinates to a point in world coordinate.
fn clip_planes(&self) -> (f32, f32)
The clipping planes, aka. (znear
, zfar
).
fn update(&mut self, window: &Window)
Update the camera. This is called once at the beginning of the render loop.
Provided Methods
fn upload(&self, _pass: usize, uniform: &mut ShaderUniform<Matrix4<f32>>)
Upload the camera transformation to the gpu. This can be called multiple times on the render loop.
fn num_passes(&self) -> usize
The number of passes required by this camera.
fn start_pass(&self, _pass: usize, _window: &Window)
Indicates that a pass will begin.
fn render_complete(&self, _window: &Window)
Indicates that the scene has been rendered and the post-processing is being run.
fn project(&self,
world_coord: &Point3<f32>,
size: &Vector2<f32>)
-> Vector2<f32>
world_coord: &Point3<f32>,
size: &Vector2<f32>)
-> Vector2<f32>
Converts a 3d point to 2d screen coordinates, assuming the screen has the size size
.
fn unproject(&self,
window_coord: &Point2<f32>,
size: &Vector2<f32>)
-> (Point3<f32>, Vector3<f32>)
window_coord: &Point2<f32>,
size: &Vector2<f32>)
-> (Point3<f32>, Vector3<f32>)
Converts a point in 2d screen coordinates to a ray (a 3d position and a direction).
The screen is assumed to have a size given by size
.
Implementors
impl Camera for ArcBall
impl Camera for FirstPerson
impl Camera for FirstPersonStereo