cgv
|
extends the clipped view with information on eye distance and parallax zero information. More...
#include <stereo_view.h>
Public Member Functions | |
stereo_view () | |
construct with standard values | |
virtual void | set_default_values () |
double | get_eye_distance () const |
query distance between eyes | |
virtual void | set_eye_distance (double e) |
set distance between eyes | |
double | get_parallax_zero_scale () const |
query scale of parallax zero depth with respect to eye focus distance | |
double | get_parallax_zero_depth () const |
query parallax zero depth | |
virtual void | set_parallax_zero_scale (double pzs) |
set parallax zero scale | |
![]() | |
clipped_view () | |
construct a parallel view with focus in the world origin looking in negative z-direction and the y-direction as up-direction with an extent of +-1 | |
void | compute_clipping_planes (double &z_near_derived, double &z_far_derived, bool clip_relative_to_extent=false) const |
compute clipping planes adapted to the current scene extent, z_near_derived is at least z_near and as large as possible to include the scene, similarly z_far_derived is as small as possible | |
void | compute_clipping_planes (const view &view, double &z_near_derived, double &z_far_derived, bool clip_relative_to_extent=false) const |
compute clipping planes according to given view adapted to the current scene extent, z_near_derived is at least z_near and as large as possible to include the scene, similarly z_far_derived is as small as possible | |
void | compute_clipping_planes (const dvec3 &eye, const dvec3 &view_dir, double &z_near_derived, double &z_far_derived, bool clip_relative_to_extent=false) const |
compute clipping planes according to given view adapted to the current scene extent, z_near_derived is at least z_near and as large as possible to include the scene, similarly z_far_derived is as small as possible | |
double | get_z_near () const |
return the currently set z-value for the z-near clipping plane | |
double & | ref_z_near () |
reference to z_near value for ui construction | |
virtual void | set_z_near (double z) |
set the z-value for the z-near clipping plane | |
double | get_z_far () const |
return the currently set z-value for the z-far clipping plane | |
double & | ref_z_far () |
reference to z_far value for ui construction | |
virtual void | set_z_far (double z) |
set the z-value for the z-far clipping plane | |
virtual void | set_scene_extent (const dbox3 &_box) |
set the extent of the scene in world coordinates used by the compute_clipping_planes functions to adapt the clipping planes to the scene | |
dbox3 | get_scene_extent () const |
return the currently set scene extent | |
virtual void | set_default_view () |
reset view with focus and y-extent based on current scene extent | |
![]() | |
view () | |
construct a parallel view with focus in the world origin looking in negative z-direction and the y-direction as up-direction with an extent of +-1 | |
const dvec3 & | get_focus () const |
query focus point | |
virtual void | set_focus (const dvec3 &foc) |
set a new focus point keeping y extent at focus and y view angle fix, such that the eye position is also changed | |
void | set_focus (const vec3 &foc) |
void | set_focus (double x, double y, double z) |
set focus from coordinates | |
dvec3 & | ref_focus () |
write access to focus point | |
const dvec3 & | get_view_dir () const |
query current view direction | |
virtual void | set_view_dir (const dvec3 &vd) |
set view direction without ensuring orthogonality to view up direction | |
void | set_view_dir (const vec3 &vd) |
void | set_view_dir (double x, double y, double z) |
set view direction from coordinates | |
dvec3 & | ref_view_dir () |
write access to view dir | |
const dvec3 & | get_view_up_dir () const |
query current view up direction | |
virtual void | set_view_up_dir (const dvec3 &vud) |
set view up direction without ensuring orthogonality to view direction | |
void | set_view_up_dir (const vec3 &vud) |
void | set_view_up_dir (double x, double y, double z) |
set view up direction from coordinates | |
dvec3 & | ref_view_up_dir () |
write access to view up direction | |
double & | ref_y_extent_at_focus () |
write access to extent at focus | |
double | get_y_view_angle () const |
query opening angle (degrees) of view in y-direction | |
virtual void | set_y_view_angle (double angle) |
set opening angle (degrees) of view in y-direction keeping y extent at focus resulting in a dolly zoom | |
double | get_y_extent_at_focus () const |
query y extent of viewing window at focus point | |
virtual void | set_y_extent_at_focus (double ext) |
set y extent of viewing window at focus point keeping y view angle resulting in a zoom | |
double & | ref_y_view_angle () |
write access to view angle | |
double | get_tan_of_half_of_fovy (bool ensure_non_zero) const |
compute tan of half of y view angle, if ensure_non_zero is true, replace y view angles < 0.1 with 0.1 | |
double | get_y_extent_at_depth (double depth, bool ensure_non_zero) const |
get y extent of viewing window at an arbitrary depth, if ensure_non_zero is true, replace y view angles < 0.1 with 0.1 | |
double | get_depth_of_focus () const |
return the depth of the focus point | |
void | put_coordinate_system (dvec3 &x, dvec3 &y, dvec3 &z) const |
construct coordinate system with z in negative view direction and x and y aligned with the right and up direction of the viewed image | |
void | put_coordinate_system (vec3 &x, vec3 &y, vec3 &z) const |
int | compute_axis_and_angle (const dvec3 &target_view_dir, const dvec3 &target_view_up_dir, dvec3 &axis, double &angle) |
compute axis and angle of a rotation that the current view_dir and view_up_dir to the given target_view_dir and target_view_up_dir | |
bool | is_parallel () const |
return whether the y view angle is zero | |
const dvec3 | get_eye () const |
query the eye point, which is computed from focus, view dir, y extent at focus and y view angle | |
bool | set_eye_keep_extent (const dvec3 &eye) |
set view dir and y view angle keeping focus and y extent such that get_eye() returns the passed point, return whether this was successful. | |
bool | set_eye_keep_view_angle (const dvec3 &eye) |
set the view dir and y extent at focus keeping focus and y view angle such that get_eye() returns the passed point, return whether this was successful. | |
void | view_look_at_keep_view_angle (const dvec3 &eye, const dvec3 &foc, const dvec3 &vud) |
set the view according to the standard view lookat definition from eye, focus and view up direction keeping the y-extent at the focus point constant | |
void | view_look_at_keep_extent (const dvec3 &eye, const dvec3 &foc, const dvec3 &vud) |
set the view according to the standard view lookat definition from eye, focus and view up direction keeping the y-view angle constant | |
void | roll (double angle) |
roll view around view direction by angle | |
void | rotate (double axis_direction_x, double axis_direction_y, double axis_point_depth) |
rotated view around axis by angle | |
void | move (double step) |
move along view direction by given step length in world coordinates | |
void | pan (double step_x, double step_y) |
move in screen x and screen y directions by given step lengths in world coordinates | |
void | zoom (double factor) |
zoom by given factor | |
virtual void | enable_viewport_splitting (unsigned nr_cols, unsigned nr_rows) |
call this function before a drawing process to support viewport splitting inside the draw call via the activate/deactivate functions | |
virtual bool | is_viewport_splitting_enabled (unsigned *nr_cols_ptr=0, unsigned *nr_rows_ptr=0) const |
check whether viewport splitting is activated and optionally set the number of columns and rows if corresponding pointers are passed | |
virtual void | disable_viewport_splitting () |
disable viewport splitting | |
virtual void | activate_split_viewport (context &ctx, unsigned col_index, unsigned row_index) |
inside the drawing process activate the sub-viewport with the given column and row indices, always terminate an activated viewport with deactivate_split_viewport | |
virtual void | deactivate_split_viewport (context &ctx) |
deactivate the previously split viewport | |
virtual void | enable_viewport_individual_view (unsigned col_index, unsigned row_index, bool enable=true) |
make a viewport manage its own view | |
virtual bool | does_viewport_use_individual_view (unsigned col_index, unsigned row_index) const |
check whether viewport manage its own view | |
virtual view & | ref_viewport_view (unsigned col_index, unsigned row_index) |
access the view of a given viewport | |
virtual int | get_modelview_projection_window_matrices (int x, int y, int width, int height, const dmat4 **MPW_pptr, const dmat4 **MPW_other_pptr=0, int *x_other_ptr=0, int *y_other_ptr=0, int *vp_col_idx_ptr=0, int *vp_row_idx_ptr=0, int *vp_width_ptr=0, int *vp_height_ptr=0, int *vp_center_x_ptr=0, int *vp_center_y_ptr=0, int *vp_center_x_other_ptr=0, int *vp_center_y_other_ptr=0) const |
given an opengl pixel location and the size in pixels of the opengl window, return the modelview_projection_window matrix for unprojection | |
virtual int | get_modelview_projection_device_matrices (int x, int y, int width, int height, const dmat4 **MVPD_pptr, const dmat4 **MVPD_other_pptr=0, int *x_other_ptr=0, int *y_other_ptr=0, int *vp_col_idx_ptr=0, int *vp_row_idx_ptr=0, int *vp_width_ptr=0, int *vp_height_ptr=0, int *vp_center_x_ptr=0, int *vp_center_y_ptr=0, int *vp_center_x_other_ptr=0, int *vp_center_y_other_ptr=0) const |
virtual double | get_z_and_unproject (context &ctx, int x, int y, dvec3 &p) |
given an opengl pixel location x,y return the window z-value from the depth buffer | |
double | get_z_and_unproject (context &ctx, int x, int y, vec3 &p) |
void | compute_screen_rectangle (std::vector< dvec3 > &rect, double depth, double aspect) const |
fill rect with four points covering the screen rectangle at given depth from eye with given aspect ratio | |
void | compute_screen_rectangle (std::vector< vec3 > &rect, double depth, double aspect) const |
Protected Attributes | |
double | eye_distance |
distance between eyes | |
double | parallax_zero_scale |
scale of parallax zero depth with respect to eye focus distance | |
![]() | |
double | z_near |
double | z_far |
dbox3 | scene_extent |
![]() | |
dvec3 | focus |
focus of the view | |
dvec3 | view_up_dir |
dvec3 | view_dir |
double | y_view_angle |
double | y_extent_at_focus |
Additional Inherited Members | |
![]() | |
static double | get_z_D (double z_eye, double z_near, double z_far) |
transform a z value in eye-coordinates (should be negative!) to device coordinate | |
extends the clipped view with information on eye distance and parallax zero information.
Definition at line 11 of file stereo_view.h.
cgv::render::stereo_view::stereo_view | ( | ) |
construct with standard values
Definition at line 8 of file stereo_view.cxx.
double cgv::render::stereo_view::get_eye_distance | ( | ) | const |
double cgv::render::stereo_view::get_parallax_zero_depth | ( | ) | const |
query parallax zero depth
Definition at line 42 of file stereo_view.cxx.
References cgv::render::view::get_eye(), cgv::render::view::get_focus(), and parallax_zero_scale.
double cgv::render::stereo_view::get_parallax_zero_scale | ( | ) | const |
query scale of parallax zero depth with respect to eye focus distance
Definition at line 37 of file stereo_view.cxx.
References parallax_zero_scale.
|
virtual |
Definition at line 20 of file stereo_view.cxx.
|
virtual |
|
virtual |
set parallax zero scale
Definition at line 48 of file stereo_view.cxx.
References parallax_zero_scale.
|
protected |
distance between eyes
Definition at line 15 of file stereo_view.h.
Referenced by get_eye_distance(), and set_eye_distance().
|
protected |
scale of parallax zero depth with respect to eye focus distance
Definition at line 17 of file stereo_view.h.
Referenced by get_parallax_zero_depth(), get_parallax_zero_scale(), and set_parallax_zero_scale().