![]() |
SLProject 4.0.000
|
Active or visible camera node class. More...
#include <SLCamera.h>
Public Member Functions | |
SLCamera (const SLstring &name="Camera", SLStdShaderProg textureOnlyProgramId=SP_TextureOnly, SLStdShaderProg colorAttributeProgramId=SP_colorAttribute) | |
~SLCamera () override | |
void | statsRec (SLNodeStats &stats) override |
SLCamera::statsRec updates the statistic parameters. More... | |
void | drawMesh (SLSceneView *sv) override |
SLCamera::drawMeshes draws the cameras frustum lines. More... | |
virtual SLbool | camUpdate (SLSceneView *sv, SLfloat timeMS) |
void | preShade (SLRay *ray) |
void | calcMinMax (SLVec3f &minV, SLVec3f &maxV) const |
void | buildAABB (SLAABBox &aabb, const SLMat4f &wmNode) |
SLVec2f | frustumSizeAtDistance (SLfloat distance) |
Calculate and return frustum size at distance to camera center. More... | |
SLbool | onMouseDown (SLMouseButton button, SLint x, SLint y, SLKey mod) override |
Gets called whenever a mouse button gets pressed. More... | |
SLbool | onMouseMove (SLMouseButton button, SLint x, SLint y, SLKey mod) override |
Gets called whenever the mouse is moved. More... | |
SLbool | onMouseUp (SLMouseButton button, SLint x, SLint y, SLKey mod) override |
Gets called whenever the mouse button is released. More... | |
SLbool | onMouseWheel (SLint delta, SLKey mod) override |
SLbool | onTouch2Down (SLint x1, SLint y1, SLint x2, SLint y2) override |
SLbool | onTouch2Move (SLint x1, SLint y1, SLint x2, SLint y2) override |
SLbool | onTouch2Up (SLint x1, SLint y1, SLint x2, SLint y2) override |
SLbool | onKeyPress (SLKey key, SLKey mod) override |
SLbool | onKeyRelease (SLKey key, SLKey mod) override |
void | eyeToPixelRay (SLfloat x, SLfloat y, SLRay *ray) |
eyeToPixelRay returns the a ray from the eye to the center of a pixel. More... | |
void | UVWFrame (SLVec3f &EYE, SLVec3f &U, SLVec3f &V, SLVec3f &W) |
SLVec2f | projectWorldToNDC (const SLVec4f &worldPos) const |
Project a world position into screen coordinates. More... | |
SLVec3f | trackballVec (SLint x, SLint y) const |
Returns a vector from the window center to a virtual trackball at [x,y]. More... | |
SLbool | isInFrustum (SLAABBox *aabb) |
SLCamera::isInFrustum does a simple and fast frustum culling test for AABBs. More... | |
void | passToUniforms (SLGLProgram *program) |
Pass camera parameters to the uniform variables. More... | |
void | setViewport (SLSceneView *sv, SLEyeType eye) |
Sets the viewport transform depending on the projection. More... | |
void | setProjection (SLSceneView *sv, SLEyeType eye) |
void | setView (SLSceneView *sv, SLEyeType eye) |
void | setFrustumPlanes () |
SLCamera::setFrustumPlanes set the 6 plane from the view frustum. More... | |
void | projType (SLProjType p) |
void | fov (const SLfloat fov) |
vertical field of view More... | |
void | camAnim (SLCamAnim ca) |
void | clipNear (const SLfloat cNear) |
void | clipFar (const SLfloat cFar) |
void | lookFrom (const SLVec3f &fromDir, const SLVec3f &upDir=SLVec3f::AXISY) |
Sets the view to look from a direction towards the current focal point. More... | |
void | maxSpeed (const SLfloat ms) |
void | moveAccel (const SLfloat accel) |
void | brakeAccel (const SLfloat accel) |
void | drag (const SLfloat drag) |
void | focalDist (const SLfloat f) |
void | lensDiameter (const SLfloat d) |
void | lensSamples (SLuint x, SLuint y) |
void | stereoEyeSeparation (const SLfloat es) |
void | devRotLoc (SLDeviceRotation *devRot, SLDeviceLocation *devLoc) |
void | fogIsOn (const bool isOn) |
void | fogMode (const SLFogMode mode) |
void | fogDensity (const float density) |
void | onCamUpdateCB (function< void(SLSceneView *sv)> callbackFunc) |
const SLMat4f & | updateAndGetVM () const |
SLProjType | projType () const |
SLstring | projTypeStr () const |
SLfloat | unitScaling () const |
SLfloat | fovV () const |
Vertical field of view. More... | |
SLfloat | fovH () const |
Horizontal field of view. More... | |
SLRecti | viewport () const |
SLfloat | aspect () const |
SLfloat | clipNear () const |
SLfloat | clipFar () const |
SLCamAnim | camAnim () const |
SLstring | animationStr () const |
SLCamera::animationStr() returns the animation enum as string. More... | |
SLfloat | stereoEyeSeparation () const |
SLint | stereoEye () const |
SLMat3f | stereoColorFilter () const |
SLfloat | lensDiameter () const |
SLRaySamples2D * | lensSamples () |
SLfloat | focalDist () const |
SLfloat | focalDistScrW () const |
SLfloat | focalDistScrH () const |
SLVec3f | focalPointWS () const |
SLVec3f | focalPointOS () const |
SLbool | fogIsOn () const |
SLFogMode | fogMode () const |
SLfloat | fogDensity () const |
SLfloat | fogDistStart () const |
SLfloat | fogDistEnd () const |
SLCol4f | fogColor () const |
SLfloat | trackballSize () const |
SLBackground & | background () |
SLfloat | maxSpeed () const |
SLfloat | moveAccel () const |
SLfloat | brakeAccel () const |
SLfloat | drag () const |
SLstring | toString () const |
SLCamera::to_string returns important camera parameter as a string. More... | |
SLRectf & | selectRect () |
SLRectf & | deselectRect () |
void | updateEnuCorrRenu (SLSceneView *sv, const SLMat3f &enuRc, float &f, SLVec3f &enuOffsetPix) |
Calculate and apply correction from finger x-y-rotation. More... | |
![]() | |
SLNode (const SLstring &name="Node") | |
SLNode (SLMesh *mesh, const SLstring &name="Node") | |
SLNode (SLMesh *mesh, const SLVec3f &translation, const SLstring &name) | |
~SLNode () override | |
virtual void | cull3DRec (SLSceneView *sv) |
virtual void | cullChildren3D (SLSceneView *sv) |
virtual void | cull2DRec (SLSceneView *sv) |
virtual bool | hitRec (SLRay *ray) |
virtual void | statsRec (SLNodeStats &stats) |
virtual SLNode * | copyRec () |
virtual SLAABBox & | updateAABBRec (SLbool updateAlsoAABBinOS) |
virtual void | dumpRec () |
void | setDrawBitsRec (SLuint bit, SLbool state) |
void | setPrimitiveTypeRec (SLGLPrimitiveType primitiveType) |
virtual void | addMesh (SLMesh *mesh) |
virtual void | drawMesh (SLSceneView *sv) |
Draws the single mesh. More... | |
bool | removeMesh () |
Returns true if a mesh was assigned and set it to nullptr. More... | |
bool | removeMesh (SLMesh *mesh) |
Returns true if the passed mesh was assigned and sets it to nullptr. More... | |
SLint | numChildren () |
void | addChild (SLNode *child) |
bool | insertChild (SLNode *insertC, SLNode *afterC) |
void | deleteChildren () |
bool | deleteChild () |
bool | deleteChild (SLNode *child) |
bool | deleteChild (const SLstring &name) |
bool | removeChild (SLNode *child) |
remove child from vector of children. Removes false if not found, else true. More... | |
template<typename T > | |
T * | find (const SLstring &name="", SLbool findRecursive=true) |
template<typename T > | |
T * | findChild (const SLstring &name="", SLbool findRecursive=true) |
template<typename T > | |
deque< T * > | findChildren (const SLstring &name="", SLbool findRecursive=true, SLbool canContain=false) |
deque< SLNode * > | findChildren (const SLMesh *mesh, SLbool findRecursive=true) |
deque< SLNode * > | findChildren (SLuint drawbit, SLbool findRecursive=true) |
SLVec3f | translationOS () const |
SLVec3f | forwardOS () const |
SLVec3f | rightOS () const |
SLVec3f | upOS () const |
SLVec3f | axisXOS () const |
SLVec3f | axisYOS () const |
SLVec3f | axisZOS () const |
SLVec3f | translationWS () const |
SLVec3f | forwardWS () const |
SLVec3f | rightWS () const |
SLVec3f | upWS () const |
SLVec3f | axisXWS () const |
SLVec3f | axisYWS () const |
SLVec3f | axisZWS () const |
void | translation (const SLVec3f &pos, SLTransformSpace relativeTo=TS_parent) |
void | translation (SLfloat x, SLfloat y, SLfloat z, SLTransformSpace relativeTo=TS_parent) |
void | rotation (const SLQuat4f &rot, SLTransformSpace relativeTo=TS_parent) |
void | rotation (SLfloat angleDeg, const SLVec3f &axis, SLTransformSpace relativeTo=TS_parent) |
void | scaling (SLfloat s) |
void | scaling (SLfloat x, SLfloat y, SLfloat z) |
void | scaling (const SLVec3f &scaling) |
void | lookAt (SLfloat targetX, SLfloat targetY, SLfloat targetZ, SLfloat upX=0, SLfloat upY=1, SLfloat upZ=0, SLTransformSpace relativeTo=TS_world) |
void | lookAt (const SLVec3f &target, const SLVec3f &up=SLVec3f::AXISY, SLTransformSpace relativeTo=TS_world) |
void | translate (const SLVec3f &vec, SLTransformSpace relativeTo=TS_object) |
void | translate (SLfloat x, SLfloat y, SLfloat z, SLTransformSpace relativeTo=TS_object) |
void | rotate (const SLQuat4f &rot, SLTransformSpace relativeTo=TS_object) |
void | rotate (SLfloat angleDeg, const SLVec3f &axis, SLTransformSpace relativeTo=TS_object) |
void | rotate (SLfloat angleDeg, SLfloat x, SLfloat y, SLfloat z, SLTransformSpace relativeTo=TS_object) |
void | rotateAround (const SLVec3f &point, SLVec3f &axis, SLfloat angleDeg, SLTransformSpace relativeTo=TS_world) |
void | scale (SLfloat s) |
void | scale (SLfloat x, SLfloat y, SLfloat z) |
void | scale (const SLVec3f &scale) |
void | scaleToCenter (SLfloat maxDim) |
void | setInitialState () |
void | resetToInitialState () |
void | parent (SLNode *p) |
void | entityID (SLint entityID) |
void | om (const SLMat4f &mat) |
void | animation (SLAnimation *a) |
void | castsShadows (SLbool castsShadows) |
virtual void | needUpdate () |
void | needWMUpdate () |
void | needAABBUpdate () |
void | isSelected (bool isSelected) |
void | minLodCoverage (SLfloat minLodCoverage) |
void | levelForSM (SLubyte lfsm) |
void | onUpdateCB (function< void()> callbackFunc) |
SLNode * | parent () |
SLint | depth () const |
SLint | entityID () const |
const SLMat4f & | om () |
const SLMat4f & | initialOM () |
const SLMat4f & | updateAndGetWM () const |
const SLMat4f & | updateAndGetWMI () const |
SLDrawBits * | drawBits () |
SLbool | drawBit (SLuint bit) |
SLAABBox * | aabb () |
SLAnimation * | animation () |
SLbool | castsShadows () |
SLMesh * | mesh () |
SLVNode & | children () |
const SLAnimSkeleton * | skeleton () |
Returns the first skeleton found in the meshes. More... | |
void | updateRec () |
virtual void | doUpdate () |
bool | updateMeshSkins (const std::function< void(SLMesh *)> &cbInformNodes) |
Update all skinned meshes recursively. More... | |
void | updateMeshAccelStructs () |
void | updateMeshMat (std::function< void(SLMaterial *m)> setMat, bool recursive) |
Updates the mesh material recursively with a material lambda. More... | |
void | setMeshMat (SLMaterial *mat, bool recursive) |
Set the mesh material recursively. More... | |
bool | isSelected () |
SLfloat | minLodCoverage () |
SLubyte | levelForSM () |
![]() | |
SLObject (const SLstring &Name="", const SLstring &url="") | |
virtual | ~SLObject () |
void | name (const SLstring &Name) |
void | url (const SLstring &url) |
const SLstring & | name () const |
const SLstring & | url () const |
![]() | |
SLEventHandler () | |
virtual | ~SLEventHandler () |
virtual SLbool | onMouseDown (const SLMouseButton button, const SLint x, const SLint y, const SLKey mod) |
virtual SLbool | onMouseUp (const SLMouseButton button, const SLint x, const SLint y, const SLKey mod) |
virtual SLbool | onMouseMove (const SLMouseButton button, const SLint x, const SLint y, const SLKey mod) |
virtual SLbool | onDoubleClick (const SLMouseButton button, const SLint x, const SLint y, const SLKey mod) |
virtual SLbool | onMouseWheel (const SLint delta, const SLKey mod) |
virtual SLbool | onTouch2Down (const SLint x1, const SLint y1, const SLint x2, const SLint y2) |
virtual SLbool | onTouch2Move (const SLint x1, const SLint y1, const SLint x2, const SLint y2) |
virtual SLbool | onTouch2Up (const SLint x1, const SLint y1, const SLint x2, const SLint y2) |
virtual SLbool | onTouch3Down (const SLint x1, const SLint y1) |
virtual SLbool | onTouch3Move (const SLint x1, const SLint y1) |
virtual SLbool | onTouch3Up (const SLint x1, const SLint y1) |
virtual SLbool | onKeyPress (const SLKey key, const SLKey mod) |
virtual SLbool | onKeyRelease (const SLKey key, const SLKey mod) |
virtual SLbool | onRotationPYR (const SLfloat pitchRAD, const SLfloat yawRAD, const SLfloat rollRAD) |
void | mouseRotationFactor (SLfloat rf) |
SLfloat | mouseRotationFactor () |
Static Public Member Functions | |
static SLstring | projTypeToStr (SLProjType pt) |
Returns the projection type as string. More... | |
Static Public Attributes | |
static SLCamAnim | currentAnimation = CA_turntableYUp |
static SLProjType | currentProjection = P_monoPerspective |
static SLfloat | currentFOV = 45.0f |
static SLint | currentDevRotation = 0 |
![]() | |
static SLuint | numWMUpdates = 0 |
NO. of calls to updateWMRec per frame. More... | |
static unsigned int | instanceIndex = 0 |
??? More... | |
Protected Attributes | |
SLProjType | _projType |
Projection type. More... | |
SLfloat | _fovV |
Current vertical field of view (view angle) in degrees. More... | |
SLfloat | _fovInit |
Initial vertical field of view (view angle) in degrees. More... | |
SLfloat | _clipNear |
Dist. to the near clipping plane. More... | |
SLfloat | _clipFar |
Dist. to the far clipping plane. More... | |
SLPlane | _plane [6] |
6 frustum planes (l, r, t, b, n, f) More... | |
SLRecti | _viewport |
framebuffer rectangle More... | |
SLfloat | _viewportRatio |
viewport.width / viewport.height = screen ratio More... | |
SLfloat | _fx |
horizontal focal length More... | |
SLfloat | _fy |
vertical focal length More... | |
SLfloat | _cx |
sensor center in x direction More... | |
SLfloat | _cy |
sensor center in y direction More... | |
SLBackground | _background |
Colors or texture displayed in the background. More... | |
SLGLVertexArrayExt | _vao |
OpenGL Vertex array for rendering. More... | |
SLbool | _movedLastFrame |
SLCamAnim | _camAnim |
did the camera updateRec in the last frame? More... | |
SLVec2f | _oldTouchPos1 |
Old mouse/touch position in pixels. More... | |
SLVec2f | _oldTouchPos2 |
Old 2nd finger touch position in pixels. More... | |
SLVec3f | _trackballStartVec |
Trackball vector at mouse down. More... | |
SLfloat | _trackballSize |
Size of trackball (0.8 = 80% of window size) More... | |
SLVec3f | _moveDir |
accumulated movement directions based on pressed buttons More... | |
SLfloat | _drag |
simple constant drag that affects velocity More... | |
SLfloat | _maxSpeed |
maximum speed in m/s, with high drag values this speed might not be achievable at all More... | |
SLVec3f | _velocity |
current velocity vector More... | |
SLVec3f | _acceleration |
current acceleration vector More... | |
SLfloat | _brakeAccel |
brake acceleration More... | |
SLfloat | _moveAccel |
move acceleration More... | |
SLfloat | _focalDist |
distance to lookAt point on the focal plane from lens More... | |
SLfloat | _lensDiameter |
Lens diameter. More... | |
SLRaySamples2D | _lensSamples |
sample points for lens sampling (DOF) More... | |
SLfloat | _stereoEyeSeparation |
eye separation for stereo mode More... | |
SLfloat | _unitScaling |
indicate what the current unit scale is More... | |
SLint | _stereoEye |
-1=left, 0=center, 1=right More... | |
SLMat3f | _stereoColorFilter |
color filter matrix for anaglyphling is to adjust movement and stereo rendering correctly More... | |
SLbool | _fogIsOn |
Flag if fog blending is enabled. More... | |
SLFogMode | _fogMode |
0=LINEAR, 1=EXP, 2=EXP2 More... | |
SLfloat | _fogDensity |
Fog density for exponential modes. More... | |
SLfloat | _fogStart |
Fog start distance for linear mode. More... | |
SLfloat | _fogEnd |
Fog end distance for linear mode. More... | |
SLCol4f | _fogColor |
fog color blended to the final color More... | |
SLbool | _fogColorIsBack |
fog color blended to the final color More... | |
SLDeviceRotation * | _devRot = nullptr |
SLDeviceLocation * | _devLoc = nullptr |
SLRectf | _selectRect |
Mouse selection rectangle. See SLMesh::handleRectangleSelection. More... | |
SLRectf | _deselectRect |
Mouse deselection rectangle. See SLMesh::handleRectangleSelection. More... | |
SLint | _xOffsetPix = 0 |
parameter for manual finger rotation and translation More... | |
SLint | _yOffsetPix = 0 |
SLMat3f | _enucorrRenu |
function< void(SLSceneView *sv)> | _onCamUpdateCB |
![]() | |
SLNode * | _parent |
pointer to the parent node More... | |
SLVNode | _children |
vector of children nodes More... | |
SLMesh * | _mesh |
pointer to a single mesh More... | |
SLint | _depth |
depth of the node in a scene tree More... | |
SLint | _entityID |
ID in the SLVEntity graph for Data Oriented Design. More... | |
SLMat4f | _om |
object matrix for local transforms More... | |
SLMat4f | _initialOM |
the initial om state More... | |
SLMat4f | _wm |
world matrix for world transform More... | |
SLMat4f | _wmI |
inverse world matrix More... | |
SLbool | _isWMUpToDate |
is the WM of this node still valid More... | |
SLbool | _isWMIUpToDate |
is the inverse WM of this node still valid More... | |
SLbool | _isAABBUpToDate |
is the saved aabb still valid More... | |
bool | _castsShadows |
flag if meshes of node should cast shadows More... | |
bool | _isSelected |
flag if node and one or more of its meshes are selected More... | |
SLDrawBits | _drawBits |
node level drawing flags More... | |
SLAABBox | _aabb |
axis aligned bounding box More... | |
SLAnimation * | _animation |
animation of the node More... | |
SLfloat | _minLodCoverage |
Min. LOD coverage for visibility (0.0 < _minLodCoverage < 1.0) More... | |
SLubyte | _levelForSM |
Level of LOD to use for shadow mapping (0 = the visible one will be drawn) More... | |
function< void()> | _onUpdateCB |
Optional lambda callback once per update. More... | |
![]() | |
SLstring | _name |
name of an object More... | |
SLstring | _url |
uniform resource locator More... | |
![]() | |
SLfloat | _mouseRotationFactor |
Mouse rotation sensibility. More... | |
SLfloat | _keyboardDeltaPos |
Delta dist. for keyboard translation. More... | |
Active or visible camera node class.
An instance of this SLNode derived class serves as an active camera with all its view and projection parameters or if inactive as a visible scene graph node with camera body and its view frustum. The position and orientation of the active camera is set in the setView method by loading the view matrix _vm into the OpenGL modelview matrix. The view matrix _vm is simply the inverse of the shapes world matrix _wm. Every SLSceneView instance has a pointer _camera to its active camera.
Because the SLNode class is inherited from the abstract SLEventHandler class a camera can handle mouse & keyboard event. All camera animations are handled in these event handlers.
The following camera animations are available:
|
explicit |
|
override |
SLstring SLCamera::animationStr | ( | ) | const |
SLCamera::animationStr() returns the animation enum as string.
|
inline |
|
inline |
|
inline |
|
inline |
SLCamera::buildAABB builds the passed axis-aligned bounding box in OS and updates the min & max points in WS with the passed WM of the node. The camera node has no mesh associated, so we have to calculate the min and max point from the camera frustum.
SLCamera::calcMinMax calculates the axis aligned minimum and maximum point of the camera position and the 4 near clipping plane points in object space (OS).
|
inline |
|
inline |
|
virtual |
SLCamera::camUpdate does the smooth transition for the walk animation. It is called in every frame. It moves the camera after the key was released and smoothly stops the motion by decreasing the speed every frame.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
overridevirtual |
SLCamera::drawMeshes draws the cameras frustum lines.
Only draws the frustum lines without lighting when the camera is not the active one. This means that it can be seen from the active view point.
Reimplemented from SLNode.
Reimplemented in SLKeyframeCamera.
eyeToPixelRay returns the a ray from the eye to the center of a pixel.
This method is used for object picking. The calculation is the same as for primary rays in Ray Tracing.
|
inline |
|
inline |
SLfloat SLCamera::focalDistScrH | ( | ) | const |
Returns the height of the screen at focal distance. In stereo rendering this should correspond to the height of the projection plane.
SLfloat SLCamera::focalDistScrW | ( | ) | const |
Returns the width of the screen at focal distance. In stereo rendering this should correspond to the width of the projection plane.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
vertical field of view
SLfloat SLCamera::fovH | ( | ) | const |
Horizontal field of view.
< Horizontal field of view
|
inline |
Vertical field of view.
Calculate and return frustum size at distance to camera center.
SLCamera::isInFrustum does a simple and fast frustum culling test for AABBs.
SLCamera::isInFrustum checks if the bounding sphere of an AABB is within the view frustum defined by its 6 planes by simply testing the distance of the AABBs center minus its radius. This is faster than the AABB in frustum test but not as precise. Please refer to the nice tutorial on frustum culling on: https://cgvr.cs.uni-bremen.de/teaching/cg_literatur/lighthouse3d_view_frustum_culling/
|
inline |
|
inline |
|
inline |
void SLCamera::lookFrom | ( | const SLVec3f & | fromDir, |
const SLVec3f & | upDir = SLVec3f::AXISY |
||
) |
Sets the view to look from a direction towards the current focal point.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
SLCamera::onKeyPress applies the keyboard view navigation to the view matrix. The key code constants are defined in SL.h
Reimplemented from SLEventHandler.
SLCamera::onKeyRelease gets called when a key is released
Reimplemented from SLEventHandler.
|
overridevirtual |
Gets called whenever a mouse button gets pressed.
Reimplemented from SLEventHandler.
|
overridevirtual |
Gets called whenever the mouse is moved.
Reimplemented from SLEventHandler.
|
overridevirtual |
Gets called whenever the mouse button is released.
Reimplemented from SLEventHandler.
SLCamera::onMouseWheel event handler moves camera forwards or backwards
Reimplemented from SLEventHandler.
SLCamera::onDoubleTouch gets called whenever two fingers touch a handheld screen.
Reimplemented from SLEventHandler.
SLCamera::onTouch2Move gets called whenever two fingers move on a handheld screen.
Reimplemented from SLEventHandler.
SLCamera::onDoubleTouch gets called whenever two fingers touch a handheld screen.
Reimplemented from SLEventHandler.
void SLCamera::passToUniforms | ( | SLGLProgram * | program | ) |
Pass camera parameters to the uniform variables.
|
inline |
Project a world position into screen coordinates.
|
inline |
|
inline |
|
inline |
|
static |
Returns the projection type as string.
|
inline |
void SLCamera::setFrustumPlanes | ( | ) |
SLCamera::setFrustumPlanes set the 6 plane from the view frustum.
SLCamera::setFrustumPlanes set the 6 frustum planes by extracting the plane coefficients from the combined view and projection matrix.
void SLCamera::setProjection | ( | SLSceneView * | sv, |
SLEyeType | eye | ||
) |
Sets the projection transformation matrix and the drawing buffer. In case of a stereographic projection it additionally sets the stereo splitting parameters such as the color masks and the color filter matrix for stereo color anaglyph.
void SLCamera::setView | ( | SLSceneView * | sv, |
SLEyeType | eye | ||
) |
Applies the view transform to the modelview matrix depending on the eye: eye=-1 for the left and eye=1 for the right eye. The view matrix that projects all points from the world coordinate system to the camera coordinate system (that means relative to the camera) is the camera nodes inverse world matrix.
void SLCamera::setViewport | ( | SLSceneView * | sv, |
SLEyeType | eye | ||
) |
Sets the viewport transform depending on the projection.
|
overridevirtual |
SLCamera::statsRec updates the statistic parameters.
Reimplemented from SLNode.
|
inline |
|
inline |
|
inline |
|
inline |
SLstring SLCamera::toString | ( | ) | const |
SLCamera::to_string returns important camera parameter as a string.
|
inline |
Returns a vector from the window center to a virtual trackball at [x,y].
The trackball vector is a vector from the window center to a hemisphere over the window at the specified cursor position. With two trackball vectors you can calculate a single rotation axis with the cross product. This routine is used for the trackball camera animation.
|
inline |
|
inline |
void SLCamera::updateEnuCorrRenu | ( | SLSceneView * | sv, |
const SLMat3f & | enuRc, | ||
float & | f, | ||
SLVec3f & | enuOffsetPix | ||
) |
Calculate and apply correction from finger x-y-rotation.
|
inline |
|
protected |
current acceleration vector
|
protected |
Colors or texture displayed in the background.
|
protected |
brake acceleration
|
protected |
did the camera updateRec in the last frame?
Type of camera animation
|
protected |
Dist. to the far clipping plane.
|
protected |
Dist. to the near clipping plane.
|
protected |
sensor center in x direction
|
protected |
sensor center in y direction
|
protected |
Mouse deselection rectangle. See SLMesh::handleRectangleSelection.
|
protected |
|
protected |
|
protected |
simple constant drag that affects velocity
|
protected |
|
protected |
distance to lookAt point on the focal plane from lens
|
protected |
fog color blended to the final color
|
protected |
fog color blended to the final color
|
protected |
Fog density for exponential modes.
|
protected |
Fog end distance for linear mode.
|
protected |
Flag if fog blending is enabled.
|
protected |
0=LINEAR, 1=EXP, 2=EXP2
|
protected |
Fog start distance for linear mode.
|
protected |
Initial vertical field of view (view angle) in degrees.
|
protected |
Current vertical field of view (view angle) in degrees.
|
protected |
horizontal focal length
|
protected |
vertical focal length
|
protected |
Lens diameter.
|
protected |
sample points for lens sampling (DOF)
|
protected |
maximum speed in m/s, with high drag values this speed might not be achievable at all
|
protected |
move acceleration
|
protected |
accumulated movement directions based on pressed buttons
|
protected |
|
protected |
Old mouse/touch position in pixels.
|
protected |
Old 2nd finger touch position in pixels.
|
protected |
|
protected |
6 frustum planes (l, r, t, b, n, f)
|
protected |
Projection type.
|
protected |
Mouse selection rectangle. See SLMesh::handleRectangleSelection.
|
protected |
color filter matrix for anaglyphling is to adjust movement and stereo rendering correctly
|
protected |
-1=left, 0=center, 1=right
|
protected |
eye separation for stereo mode
|
protected |
Size of trackball (0.8 = 80% of window size)
|
protected |
Trackball vector at mouse down.
|
protected |
indicate what the current unit scale is
|
protected |
OpenGL Vertex array for rendering.
|
protected |
current velocity vector
|
protected |
framebuffer rectangle
|
protected |
viewport.width / viewport.height = screen ratio
|
protected |
parameter for manual finger rotation and translation
|
protected |
|
static |
|
static |
|
static |
|
static |