SLProject
4.2.000
A platform independent 3D computer graphics framework for desktop OS, Android, iOS and online in web browsers
|
Active or visible camera node class. More...
#include <SLCamera.h>
Public Member Functions | |
SLCamera (const SLstring &name="Camera") | |
Construct a new SLCamera::SLCamera object. More... | |
~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... | |
Public Member Functions inherited from SLNode | |
SLNode (const SLstring &name="Node") | |
Construct a new SLNode::SLNode object. More... | |
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) |
Initializer function to call SLNode::cull3DRec recursively. More... | |
virtual void | cull2DRec (SLSceneView *sv) |
virtual bool | hitRec (SLRay *ray) |
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) |
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 (bool forceCPUSkinning, 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 () |
Public Member Functions inherited from SLObject | |
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 |
Public Member Functions inherited from SLEventHandler | |
SLEventHandler () | |
virtual | ~SLEventHandler () |
virtual SLbool | onDoubleClick (const SLMouseButton button, const SLint x, const SLint y, const SLKey mod) |
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 | 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 Public Attributes inherited from SLNode | |
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... | |
SLchar | _keyStates [256] |
Stores for all movement keys whether they are pressed. 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 |
Protected Attributes inherited from SLNode | |
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... | |
Protected Attributes inherited from SLObject | |
SLstring | _name |
name of an object More... | |
SLstring | _url |
uniform resource locator More... | |
Protected Attributes inherited from SLEventHandler | |
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:
Definition at line 53 of file SLCamera.h.
|
explicit |
Construct a new SLCamera::SLCamera object.
name | Name of the camera |
Definition at line 33 of file SLCamera.cpp.
|
override |
Definition at line 90 of file SLCamera.cpp.
SLstring SLCamera::animationStr | ( | ) | const |
SLCamera::animationStr() returns the animation enum as string.
Definition at line 983 of file SLCamera.cpp.
|
inline |
Definition at line 139 of file SLCamera.h.
|
inline |
Definition at line 165 of file SLCamera.h.
|
inline |
Definition at line 168 of file SLCamera.h.
Definition at line 114 of file SLCamera.h.
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.
Definition at line 397 of file SLCamera.cpp.
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).
Definition at line 359 of file SLCamera.cpp.
|
inline |
Definition at line 142 of file SLCamera.h.
Definition at line 103 of file SLCamera.h.
|
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.
Definition at line 98 of file SLCamera.cpp.
|
inline |
Definition at line 141 of file SLCamera.h.
Definition at line 109 of file SLCamera.h.
|
inline |
Definition at line 140 of file SLCamera.h.
Definition at line 108 of file SLCamera.h.
|
inline |
Definition at line 172 of file SLCamera.h.
|
inline |
Definition at line 120 of file SLCamera.h.
|
inline |
Definition at line 169 of file SLCamera.h.
Definition at line 115 of file SLCamera.h.
|
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.
Definition at line 188 of file SLCamera.cpp.
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.
Definition at line 1514 of file SLCamera.cpp.
|
inline |
Definition at line 151 of file SLCamera.h.
Definition at line 116 of file SLCamera.h.
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.
Definition at line 444 of file SLCamera.cpp.
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.
Definition at line 453 of file SLCamera.cpp.
|
inline |
Definition at line 155 of file SLCamera.h.
|
inline |
Definition at line 154 of file SLCamera.h.
|
inline |
Definition at line 162 of file SLCamera.h.
|
inline |
Definition at line 159 of file SLCamera.h.
|
inline |
Definition at line 127 of file SLCamera.h.
|
inline |
Definition at line 161 of file SLCamera.h.
|
inline |
Definition at line 160 of file SLCamera.h.
|
inline |
Definition at line 157 of file SLCamera.h.
|
inline |
Definition at line 125 of file SLCamera.h.
|
inline |
Definition at line 158 of file SLCamera.h.
Definition at line 126 of file SLCamera.h.
SLfloat SLCamera::fovH | ( | ) | const |
|
inline |
Vertical field of view.
Definition at line 135 of file SLCamera.h.
Calculate and return frustum size at distance to camera center.
Definition at line 408 of file SLCamera.cpp.
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/
Definition at line 1625 of file SLCamera.cpp.
|
inline |
Definition at line 149 of file SLCamera.h.
Definition at line 117 of file SLCamera.h.
|
inline |
Definition at line 150 of file SLCamera.h.
Definition at line 118 of file SLCamera.h.
void SLCamera::lookFrom | ( | const SLVec3f & | fromDir, |
const SLVec3f & | upDir = SLVec3f::AXISY |
||
) |
Sets the view to look from a direction towards the current focal point.
Definition at line 974 of file SLCamera.cpp.
|
inline |
Definition at line 166 of file SLCamera.h.
Definition at line 112 of file SLCamera.h.
|
inline |
Definition at line 167 of file SLCamera.h.
Definition at line 113 of file SLCamera.h.
|
inline |
Definition at line 128 of file SLCamera.h.
SLCamera::onKeyPress applies the keyboard view navigation to the view matrix. The key code constants are defined in SL.h
Reimplemented from SLEventHandler.
Definition at line 1425 of file SLCamera.cpp.
SLCamera::onKeyRelease gets called when a key is released
Reimplemented from SLEventHandler.
Definition at line 1470 of file SLCamera.cpp.
|
overridevirtual |
Gets called whenever a mouse button gets pressed.
Reimplemented from SLEventHandler.
Definition at line 1005 of file SLCamera.cpp.
|
overridevirtual |
Gets called whenever the mouse is moved.
Reimplemented from SLEventHandler.
Definition at line 1031 of file SLCamera.cpp.
|
overridevirtual |
Gets called whenever the mouse button is released.
Reimplemented from SLEventHandler.
Definition at line 1207 of file SLCamera.cpp.
SLCamera::onMouseWheel event handler moves camera forwards or backwards
Reimplemented from SLEventHandler.
Definition at line 1243 of file SLCamera.cpp.
SLCamera::onDoubleTouch gets called whenever two fingers touch a handheld screen.
Reimplemented from SLEventHandler.
Definition at line 1280 of file SLCamera.cpp.
SLCamera::onTouch2Move gets called whenever two fingers move on a handheld screen.
Reimplemented from SLEventHandler.
Definition at line 1295 of file SLCamera.cpp.
SLCamera::onDoubleTouch gets called whenever two fingers touch a handheld screen.
Reimplemented from SLEventHandler.
Definition at line 1412 of file SLCamera.cpp.
void SLCamera::passToUniforms | ( | SLGLProgram * | program | ) |
Pass camera parameters to the uniform variables.
Definition at line 1688 of file SLCamera.cpp.
Definition at line 62 of file SLCamera.h.
Project a world position into screen coordinates.
Definition at line 1601 of file SLCamera.cpp.
|
inline |
Definition at line 132 of file SLCamera.h.
|
inline |
Definition at line 92 of file SLCamera.h.
|
inline |
Definition at line 133 of file SLCamera.h.
|
static |
Returns the projection type as string.
Definition at line 419 of file SLCamera.cpp.
|
inline |
Definition at line 171 of file SLCamera.h.
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.
Definition at line 1495 of file SLCamera.cpp.
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.
Definition at line 513 of file SLCamera.cpp.
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.
Definition at line 719 of file SLCamera.cpp.
void SLCamera::setViewport | ( | SLSceneView * | sv, |
SLEyeType | eye | ||
) |
Sets the viewport transform depending on the projection.
Definition at line 459 of file SLCamera.cpp.
|
overridevirtual |
SLCamera::statsRec updates the statistic parameters.
Reimplemented from SLNode.
Definition at line 348 of file SLCamera.cpp.
|
inline |
Definition at line 147 of file SLCamera.h.
|
inline |
Definition at line 146 of file SLCamera.h.
|
inline |
Definition at line 145 of file SLCamera.h.
Definition at line 119 of file SLCamera.h.
SLstring SLCamera::toString | ( | ) | const |
SLCamera::to_string returns important camera parameter as a string.
Definition at line 1646 of file SLCamera.cpp.
|
inline |
Definition at line 164 of file SLCamera.h.
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.
Definition at line 1665 of file SLCamera.cpp.
|
inline |
Definition at line 134 of file SLCamera.h.
|
inline |
Definition at line 131 of file SLCamera.h.
void SLCamera::updateEnuCorrRenu | ( | SLSceneView * | sv, |
const SLMat3f & | enuRc, | ||
float & | f, | ||
SLVec3f & | enuOffsetPix | ||
) |
Calculate and apply correction from finger x-y-rotation.
Definition at line 641 of file SLCamera.cpp.
Definition at line 1578 of file SLCamera.cpp.
|
inline |
Definition at line 138 of file SLCamera.h.
|
protected |
current acceleration vector
Definition at line 213 of file SLCamera.h.
|
protected |
Colors or texture displayed in the background.
Definition at line 198 of file SLCamera.h.
|
protected |
brake acceleration
Definition at line 214 of file SLCamera.h.
|
protected |
did the camera updateRec in the last frame?
Type of camera animation
Definition at line 203 of file SLCamera.h.
|
protected |
Dist. to the far clipping plane.
Definition at line 190 of file SLCamera.h.
|
protected |
Dist. to the near clipping plane.
Definition at line 189 of file SLCamera.h.
|
protected |
sensor center in x direction
Definition at line 196 of file SLCamera.h.
|
protected |
sensor center in y direction
Definition at line 197 of file SLCamera.h.
|
protected |
Mouse deselection rectangle. See SLMesh::handleRectangleSelection.
Definition at line 241 of file SLCamera.h.
|
protected |
Definition at line 238 of file SLCamera.h.
|
protected |
Definition at line 237 of file SLCamera.h.
|
protected |
simple constant drag that affects velocity
Definition at line 210 of file SLCamera.h.
|
protected |
Definition at line 246 of file SLCamera.h.
|
protected |
distance to lookAt point on the focal plane from lens
Definition at line 218 of file SLCamera.h.
|
protected |
fog color blended to the final color
Definition at line 234 of file SLCamera.h.
|
protected |
fog color blended to the final color
Definition at line 235 of file SLCamera.h.
|
protected |
Fog density for exponential modes.
Definition at line 231 of file SLCamera.h.
|
protected |
Fog end distance for linear mode.
Definition at line 233 of file SLCamera.h.
|
protected |
Flag if fog blending is enabled.
Definition at line 229 of file SLCamera.h.
|
protected |
0=LINEAR, 1=EXP, 2=EXP2
Definition at line 230 of file SLCamera.h.
|
protected |
Fog start distance for linear mode.
Definition at line 232 of file SLCamera.h.
|
protected |
Initial vertical field of view (view angle) in degrees.
Definition at line 188 of file SLCamera.h.
|
protected |
Current vertical field of view (view angle) in degrees.
Definition at line 187 of file SLCamera.h.
|
protected |
horizontal focal length
Definition at line 194 of file SLCamera.h.
|
protected |
vertical focal length
Definition at line 195 of file SLCamera.h.
|
protected |
Stores for all movement keys whether they are pressed.
Definition at line 209 of file SLCamera.h.
|
protected |
Lens diameter.
Definition at line 219 of file SLCamera.h.
|
protected |
sample points for lens sampling (DOF)
Definition at line 220 of file SLCamera.h.
|
protected |
maximum speed in m/s, with high drag values this speed might not be achievable at all
Definition at line 211 of file SLCamera.h.
|
protected |
move acceleration
Definition at line 215 of file SLCamera.h.
|
protected |
Definition at line 202 of file SLCamera.h.
|
protected |
Old mouse/touch position in pixels.
Definition at line 204 of file SLCamera.h.
|
protected |
Old 2nd finger touch position in pixels.
Definition at line 205 of file SLCamera.h.
|
protected |
Definition at line 248 of file SLCamera.h.
|
protected |
6 frustum planes (l, r, t, b, n, f)
Definition at line 191 of file SLCamera.h.
|
protected |
Projection type.
Definition at line 186 of file SLCamera.h.
|
protected |
Mouse selection rectangle. See SLMesh::handleRectangleSelection.
Definition at line 240 of file SLCamera.h.
|
protected |
color filter matrix for anaglyphling is to adjust movement and stereo rendering correctly
Definition at line 226 of file SLCamera.h.
|
protected |
-1=left, 0=center, 1=right
Definition at line 225 of file SLCamera.h.
|
protected |
eye separation for stereo mode
Definition at line 223 of file SLCamera.h.
|
protected |
Size of trackball (0.8 = 80% of window size)
Definition at line 207 of file SLCamera.h.
|
protected |
Trackball vector at mouse down.
Definition at line 206 of file SLCamera.h.
|
protected |
indicate what the current unit scale is
Definition at line 224 of file SLCamera.h.
|
protected |
OpenGL Vertex array for rendering.
Definition at line 200 of file SLCamera.h.
|
protected |
current velocity vector
Definition at line 212 of file SLCamera.h.
|
protected |
framebuffer rectangle
Definition at line 192 of file SLCamera.h.
|
protected |
viewport.width / viewport.height = screen ratio
Definition at line 193 of file SLCamera.h.
|
protected |
parameter for manual finger rotation and translation
Definition at line 244 of file SLCamera.h.
|
protected |
Definition at line 245 of file SLCamera.h.
|
static |
Definition at line 178 of file SLCamera.h.
|
static |
Definition at line 181 of file SLCamera.h.
|
static |
Definition at line 180 of file SLCamera.h.
|
static |
Definition at line 179 of file SLCamera.h.