#include <vrj/Display/CameraProjection.h>
Inheritance diagram for vrj::CameraProjection:


Public Member Functions | |
| CameraProjection () | |
| virtual void | config (jccl::ConfigElementPtr element) |
| Configures the projection. | |
| void | setVerticalFOV (const float fov) |
| virtual void | calcViewMatrix (const gmtl::Matrix44f &cameraPos, const float scaleFactor) |
| Calculate the viewmatrix and frustum for the camera Calculates a perspective transform for the given settings. | |
| virtual std::ostream & | outStream (std::ostream &out, const unsigned int indentLevel=0) |
| Virtual output oporators. | |
Public Attributes | |
| float | mVertFOV |
Definition at line 51 of file CameraProjection.h.
| vrj::CameraProjection::CameraProjection | ( | ) | [inline] |
Definition at line 54 of file CameraProjection.h.
00054 : mVertFOV(60.0f) 00055 { 00056 //mType = Projection::SIM; 00057 }
| void vrj::CameraProjection::config | ( | jccl::ConfigElementPtr | element | ) | [virtual] |
Configures the projection.
The default implementation does nothing.
Reimplemented from vrj::Projection.
Definition at line 49 of file CameraProjection.cpp.
References vrj::Projection::config().
00050 { 00051 Projection::config(element); 00052 }
| void vrj::CameraProjection::setVerticalFOV | ( | const float | fov | ) | [inline] |
| void vrj::CameraProjection::calcViewMatrix | ( | const gmtl::Matrix44f & | cameraPos, | |
| const float | scaleFactor | |||
| ) | [virtual] |
Calculate the viewmatrix and frustum for the camera Calculates a perspective transform for the given settings.
Calculates a perspective transform for the given settings. Auto-calculates aspect ratio from the current size of the window and viewport.
Implements vrj::Projection.
Definition at line 58 of file CameraProjection.cpp.
References vrj::Viewport::getDisplay(), vrj::Viewport::getOriginAndSize(), vrj::Display::getOriginAndSize(), vrj::Projection::getViewport(), vrj::Projection::mFarDist, vrj::Projection::mFrustum, vrj::Projection::mNearDist, mVertFOV, vrj::Projection::mViewMat, and vrj::Frustum::set().
00060 { 00061 boost::ignore_unused_variable_warning(scaleFactor); 00062 mViewMat = cameraPos; 00063 00064 gmtl::Vec3f camera_trans = gmtl::makeTrans<gmtl::Vec3f>(cameraPos); 00065 vprDEBUG(vprDBG_ALL, vprDBG_DETAILED_LVL) << "calcView: Cam pos:" << camera_trans << std::endl << vprDEBUG_FLUSH; 00066 00067 int win_xo, win_yo, win_xs, win_ys; // origin and size of display window 00068 float vp_xo, vp_yo, vp_xs, vp_ys; // origin and size of viewport 00069 float width, height; 00070 float aspect_ratio; 00071 00072 getViewport()->getDisplay()->getOriginAndSize(win_xo,win_yo, win_xs, win_ys); 00073 getViewport()->getOriginAndSize( vp_xo, vp_yo, vp_xs, vp_ys ); 00074 width = float(win_xs) * vp_xs; 00075 height = float(win_ys) * vp_ys; 00076 00077 aspect_ratio = (width/height); 00078 00079 // Calculate frustum 00080 float top, right; 00081 top = gmtl::Math::tan( gmtl::Math::deg2Rad(mVertFOV/2.0f) ) * mNearDist; // Calculate the top based on fovy 00082 right = aspect_ratio * top; 00083 00084 // Calculate the frustum to use for the camera 00085 mFrustum.set(-right, right, -top, top, mNearDist, mFarDist); 00086 }
| std::ostream & vrj::CameraProjection::outStream | ( | std::ostream & | out, | |
| const unsigned int | indentLevel = 0 | |||
| ) | [virtual] |
Virtual output oporators.
Every class derived from us shoudl just define this, and the opertetor<< will "just work".
Reimplemented from vrj::Projection.
Definition at line 88 of file CameraProjection.cpp.
References vrj::Projection::outStream().
00090 { 00091 // const int pad_width_dot(20 - indentLevel); 00092 out.setf(std::ios::left); 00093 00094 const std::string indent_text(indentLevel, ' '); 00095 00096 out << indent_text << "vrj::CameraProjection:\n"; 00097 00098 return Projection::outStream(out, indentLevel); 00099 }
1.5.1