Camera Class Reference

#include <camera.h>

Class Description

Represents a camera (point of view) in a Mudbox scene.

Only one is active at one time.

The picture you see in the Mudbox view is "through" the active Camera object. Cameras may be orthographic or perspective.

+ Examples:

Definition at line 20 of file camera.h.

+ Inheritance diagram for Camera:

Public Member Functions

virtual Vector Forward (void) const
 Returns a normalized vector indicating the camera's direction of view in world space. More...
 
virtual Vector Up (void) const
 Returns a normalized vector indicating the camera's "up" direction in world space. More...
 
virtual Vector Right (void) const
 Returns a normalized vector indicating the camera's "right" direction in world space. More...
 
virtual float Yaw (void) const
 Returns the yaw of the camera in radians. More...
 
virtual float Pitch (void) const
 Returns the pitch of the current camera in radians. More...
 
virtual float Roll (void) const
 Returns the roll of the current camera in radians. More...
 
virtual Vector Position (void) const
 Returns the position of the camera in world space. More...
 
virtual void SetYawPitchRoll (const Vector &vYPR)
 Sets rotation of the camera, specified as yaw, pitch and roll values. More...
 
virtual void AddYawPitchRoll (const Vector &vYPR)
 Add a rotation to the camera, specified as yaw, pitch and roll values. More...
 
virtual void SetForwardUpRight (const Vector &vForward, const Vector &vUp, const Vector &vRight)
 Sets the rotation of the camera, specified as three vectors. More...
 
virtual void SetTarget (const Vector &vTarget, const Vector &vUpDir=Vector(0, 1, 0))
 Set the rotation of the camera, by telling it what to point at. More...
 
virtual void SetPosition (const Vector &vPosition)
 Set the location of the camera in world space. More...
 
virtual void MoveForward (float fRange)
 Move the camera forward along its view direction. Its rotation remains unchanged. More...
 
virtual void MoveUp (float fRange)
 Move the camera up. Its rotation remains unchanged. More...
 
virtual void MoveRight (float fRange)
 Move the camera right. Its rotation remains unchanged. More...
 
virtual void MoveBackward (float fRange)
 Move the camera backward along its view direction. Its rotation remains unchanged. More...
 
virtual void MoveDown (float fRange)
 Move the camera down. Its rotation remains unchanged. More...
 
virtual void MoveLeft (float fRange)
 Move the camera left. Its rotation remains unchanged. More...
 
virtual Vector Project (const Vector &vWorldPosition) const
 Takes a point in world space and returns its position in screen coordinates. More...
 
virtual Vector UnProject (const Vector &vScreenPosition) const
 Takes a point in screen space and returns its position in world space. More...
 
virtual mudbox::Matrix Matrix (bool bOffscreen=false) const
 Returns the matrix used by the camera to transform world space positions to screen space. More...
 
virtual float FOV (void) const
 Returns the vertical field of view in radians. More...
 
virtual float Near (void) const
 Returns the near clip plane distance from the camera. More...
 
virtual float Far (void) const
 Returns the far clip plane distance from the camera. More...
 
virtual float AspectRatio (void) const
 Returns the current aspect ratio of the viewport. More...
 
virtual void SetFOV (float fFOV)
 Sets the vertical field of view of the camera. More...
 
virtual void SetNear (float fNear)
 Sets the near clip plane for the camera. More...
 
virtual void SetFar (float fFar)
 Sets the far clip plane for the camera. More...
 
virtual void SetAspectRatio (float fAspectRatio)
 Sets the aspect ratio for the camera. More...
 
virtual float Scale2D (void) const
 Returns the 2d scale factor. More...
 
virtual float Angle2D (void) const
 Returns the 2d rotation amount. More...
 
virtual Vector Position2D (void) const
 Returns the 2d offset. More...
 
virtual void SetScale2D (float fScale2D)
 Sets the 2d scale factor. More...
 
virtual void SetAngle2D (float fAngle2D)
 Sets the 2d rotation amount. More...
 
virtual void SetPosition2D (const Vector &vPosition2D)
 Sets the 2d offset. More...
 
virtual void CopyFrom (const Camera &cOther)
 Make this camera identical to another one. More...
 
virtual bool IsEqualTo (const Camera &cOther) const
 Returns true if this camera is equal to the other one. More...
 
virtual bool Pick (float fXPosition, float fYPosition, SurfacePoint &sResult)
 Returns the point displayed at the given screen location. More...
 
virtual ScreenSpacePickerGetScreenSpacePicker () const
 Returns the ScreenSpacePicker used by this camera for picking. More...
 
virtual Vector Aim () const
 Returns the world-space point around which the camera rolls when you navigate in the 3d view. More...
 
virtual void SetAim (const Vector &v)
 Sets the point around which the camera will rotate when you navigate in the 3d view. More...
 
virtual bool Orthographic () const
 Returns true if the camera is orthographic. More...
 
virtual void SetOrthographic (bool isOrtho)
 Sets the camera to be orthographic or perspective. More...
 
virtual bool IsDirty (void) const
 returns if the camera needs refresh More...
 
virtual void SetDirty (bool bDirty)
 sets if the camera needs refresh More...
 
- Public Member Functions inherited from GroupNode
virtual class TransformationTransformation (void) const
 This method returns the Transformation node attached to this node (i.e., its Parent in the scene hierarchy). More...
 
- Public Member Functions inherited from TreeNode
 TreeNode (void)
 
 ~TreeNode (void)
 
virtual void Serialize (Stream &s)
 Serializes the node. More...
 
virtual void AddChild (TreeNode *pChild, bool bFirst=false) const
 Adds a node/subtree to the list of children. The added node will be removed from the current parent if it has one. More...
 
virtual void RemoveChild (TreeNode *pChild) const
 Removes a node/subtree from the list of children. More...
 
virtual TreeNodeFirstChild (void) const
 Returns the first node from the child list. More...
 
virtual TreeNodeParent (void) const
 Returns the parent node. More...
 
virtual TreeNodeNextSibling (void) const
 Returns the next linked node with the same parent. More...
 
virtual TreeNodePrevSibling (void) const
 Returns the previous linked node with the same parent. More...
 
virtual void MoveChild (TreeNode *pChild, TreeNode *pAfter)
 Moves the child after the given node in order. More...
 
virtual TreeNodeChildByClass (const ClassDesc *pClass, bool bAutoCreate=true) const
 Returns the first child with the specified type. When the bAutoCreate parameter is true and such a child does not exists, it creates it with the preferred descedant type. More...
 
template<typename type >
typeChildByClass (bool bAutoCreate=true) const
 Same as above, a most confortable version. More...
 
virtual TreeNodeChildByClass (const ClassDesc *pClass, unsigned int iIndex=0) const
 Returns the first child with the specified type, or returns zero if no child found. More...
 
template<typename type >
typeChildByClass (unsigned int iIndex=0) const
 Same as above, a most confortable version. More...
 
virtual void DeleteChildByClass (const ClassDesc *pClass)
 Deletes all child which is derived from a specific class. More...
 
virtual QString Info (void) const
 Returns descriptive information about the node. More...
 
virtual bool Visible (void) const
 Returns if the node is visible. Should be overridden in derived classes. More...
 
virtual void SetVisible (bool b)
 Sets the node visibility Should be overridden in derived classes. More...
 
virtual bool Locked (void) const
 Returns if the node is locked. Should be overridden in derived classes. More...
 
virtual void SetLocked (bool b)
 Sets the locking of the node. Should be overridden in derived classes. More...
 
virtual bool HiddenFromUI (void) const
 Returns true if the node cannot be seen from UI. More...
 
virtual void SetHiddenFromUI (bool b)
 Sets visibility in UI. More...
 
virtual void OnLinked (const TreeNode *pOldParent)
 This function is called then the node is linked to a new parent. More...
 
virtual void CheckValidity (Node::DiagnosticLevel iLevel=dgnLevel2) const
 See the documentation for Node::CheckValidity. More...
 
QString UniqueChildName (const TreeNode *pChild, const QString &sPrefix="") const
 Finds a node name that is unique among the children of this node. More...
 
virtual void SetStringID (const QString &sName)
 This method does the same thing as Node::SetStringID, except it ensures the name is unique among this node's siblings. More...
 
virtual void CopyTo (Node *pNode) const
 
- Public Member Functions inherited from Node
 Node (const QString &sStringID="", const QString &sDisplayName="")
 Standard constructor. More...
 
virtual ~Node (void)
 
virtual void Initialize (void)
 
void LoadTemplate (const QString &sFileName="", bool bStartEvent=false)
 Use an external XML file to initialize the attributes. More...
 
void SaveTemplate (const QString &sFileName="", bool bSaveOnlyVisible=false)
 Save current attributes as an XML template. More...
 
unsigned int Version (void) const
 Returns the current version of the node. This number increases when the content of the node changed (when ContentChanged() called). More...
 
void SetVersion (unsigned int iVersion)
 Sets the current version number for the node. More...
 
unsigned int ReferenceCount (void) const
 Returns the number of pointers referencing this node. More...
 
AttributeReferencePointer (unsigned int iIndex) const
 Returns the address of an attribute which refers to this node. The type of the attribute is always aptr. More...
 
NodeReferenceNode (unsigned int iIndex) const
 Returns the address of a node referencing this node. More...
 
virtual QString Name (const ClassDesc *pClass=0) const
 Deprecated. More...
 
virtual void SetName (const QString &sName)
 Deprecated. More...
 
virtual QString StringID (const ClassDesc *pClass=0) const
 Returns the string id of the node. More...
 
virtual QString DisplayName (void) const
 Returns the display name of the node. More...
 
virtual void SetDisplayName (const QString &sDisplayName)
 Sets the display name of the node. More...
 
virtual QString HelpID (void) const
 Returns the help entry id of the node. Can be overwritten in derived classes. More...
 
virtual void SetHelpID (const QString &sHelpID)
 Sets the help entry id of the node. More...
 
void Annex (Node *pSource, const QString &sCategory="")
 Relink all the attributes of the source node to this one. More...
 
bool IsKindOf (const ClassDesc *pClass) const
 Returns true if this node is derived from the pClass class. More...
 
void ContentChanged (void) const
 This function must be called if the content of the node is changed. More...
 
virtual NodeDuplicate (void) const
 
virtual void OnNodeEvent (const Attribute &cAttribute, NodeEventType cType)
 This function is called if an event occurs with any of the attributes of the node. More...
 
virtual void OnEvent (const EventGate &cEvent)
 This function is called when a generic event occurs. See EventGate class. More...
 
void RequestDeferredEvent (Attribute &cAttribute)
 Request for a deferred event, which will occur only in the main loop. More...
 
unsigned int AttributeCount (void) const
 Returns the number of attributes owned by the node. More...
 
AttributeAttributeByIndex (int iIndex) const
 Returns a specified attribute (or 0 if iIndex is greater than the number of attributes). More...
 
AttributeAttributeByName (const QString &sName) const
 Returns a specified attribute by its name. Returns 0 if the attribute not found. More...
 
AttributeAttributeByID (const QString &sID) const
 Returns a specified attribute by its ID. Returns 0 if the attribute not found. More...
 
void SetAttributeValue (const QString &sAttributeID, const QString &sNewValue)
 Set the value of an attribute from a string. More...
 
QString AttributeValue (const QString &sAttributeID) const
 Returns the current value of an attribute as a string. More...
 
void LogAttributes (void) const
 Write all attributes into the log file. More...
 
virtual QWidgetCreatePropertiesWindow (QWidget *pParent)
 Create a window which displays the attributes of the node. Can be overriden to provide a custom interface. More...
 
AttributeAddAttribute (Attribute::AttributeType type, const QString &id)
 Allows SDK users to add attributes at runtime. More...
 
NodeNext (void) const
 Returns the next node in the chain. Used to enumerate the current nodes. See also First(). More...
 
int ID (void) const
 Returns an ID for the node. The ID is unique in the whole application life. More...
 
bool SetID (int iID)
 Set ID for the node. More...
 

Protected Member Functions

 Camera (void)
 Constructor. More...
 

Additional Inherited Members

- Public Types inherited from Node
enum  DiagnosticLevel { dgnLevel1, dgnLevel2, dgnLevel3 }
 Indicates the level of validity checking that is performed in CheckValidity() More...
 
- Static Public Member Functions inherited from Node
static void StartHashing ()
 This is called once in main once static ctors are done. More...
 
static NodeFirst (void)
 This function will return the first node in the memory. Used to enumerate all the current nodes. See also Next(). More...
 
static NodeByID (int iID)
 Returns the node with the specified ID, or zero if such a node does not exists. More...
 
static NodeByName (const QString &sClass, const QString &sName)
 Search for a node with the name sName. More...
 
- Public Attributes inherited from TreeNode
 DECLARE_CLASS
 
- Public Attributes inherited from Node
AttributeThisPointer m_pThis
 
 DECLARE_CLASS
 

Constructor & Destructor Documentation

Camera ( void  )
protected

Constructor.

Do not use directly.

Instead of constructing cameras directly, you should use CreateInstance() like this:

Camera *myNewCamera = CreateInstance<Camera>();

Member Function Documentation

virtual Vector Forward ( void  ) const
virtual

Returns a normalized vector indicating the camera's direction of view in world space.

virtual Vector Up ( void  ) const
virtual

Returns a normalized vector indicating the camera's "up" direction in world space.

virtual Vector Right ( void  ) const
virtual

Returns a normalized vector indicating the camera's "right" direction in world space.

virtual float Yaw ( void  ) const
virtual

Returns the yaw of the camera in radians.

"Yaw" refers to the amount of rotation around the vertical (Y) axis.

virtual float Pitch ( void  ) const
virtual

Returns the pitch of the current camera in radians.

"Pitch" refers to the amount of rotation around the horizontal axis running perpendicular to the direction of view. (i.e., tilting the camera up and down)

virtual float Roll ( void  ) const
virtual

Returns the roll of the current camera in radians.

"Roll" refers to the amount of rotation around the camera's direction of view. (i.e., tilting the camera from side to side)

virtual Vector Position ( void  ) const
virtual

Returns the position of the camera in world space.

virtual void SetYawPitchRoll ( const Vector vYPR)
virtual

Sets rotation of the camera, specified as yaw, pitch and roll values.

All values are in radians. The position of the camera remains unchanged.

"Yaw" refers to the amount of rotation around the vertical (Y) axis. "Pitch" refers to the amount of rotation around the horizontal axis running perpendicular to the direction of view. (i.e., tilting the camera up and down) "Roll" refers to the amount of rotation around the camera's direction of view. (i.e., tilting the camera from side to side)

Parameters
[in]vYPRYaw, Pitch and Roll values in radians
virtual void AddYawPitchRoll ( const Vector vYPR)
virtual

Add a rotation to the camera, specified as yaw, pitch and roll values.

All values are in radians. The position of the camera remains unchanged.

"Yaw" refers to the amount of rotation around the vertical (Y) axis. "Pitch" refers to the amount of rotation around the horizontal axis running perpendicular to the direction of view. (i.e., tilting the camera up and down) "Roll" refers to the amount of rotation around the camera's direction of view. (i.e., tilting the camera from side to side)

Parameters
[in]vYPRYaw, Pitch and Roll values in radians
virtual void SetForwardUpRight ( const Vector vForward,
const Vector vUp,
const Vector vRight 
)
virtual

Sets the rotation of the camera, specified as three vectors.

The specified vectors do not need to be normalized, but they do need to be non-zero, and all orthographic to each other. Failure to do this will result in undefined or distorted camera views.

Parameters
[in]vForwardA vector pointing in the direction that the camera is to be facing
[in]vUpA vector pointing "up" relative to the camera.
[in]vRightA vector pointing "right" relative to the camera.
virtual void SetTarget ( const Vector vTarget,
const Vector vUpDir = Vector(0, 1, 0) 
)
virtual

Set the rotation of the camera, by telling it what to point at.

The camera stays in its current position, but rotates so that the view direction points at the specified target. By default, the new "up" vector will be as close to vertical as possible, but you can override this to specify another up vector.

Parameters
[in]vTargetA point in world space that the camera should face
[in]vUpDirThe "up" vector for the new rotation.
virtual void SetPosition ( const Vector vPosition)
virtual

Set the location of the camera in world space.

Parameters
[in]vPositionThe camera's new position in world space.
virtual void MoveForward ( float  fRange)
virtual

Move the camera forward along its view direction. Its rotation remains unchanged.

Parameters
[in]fRangeThe (world-space) distance to move the camera.
virtual void MoveUp ( float  fRange)
virtual

Move the camera up. Its rotation remains unchanged.

Parameters
[in]fRangeThe (world-space) distance to move the camera.
virtual void MoveRight ( float  fRange)
virtual

Move the camera right. Its rotation remains unchanged.

Parameters
[in]fRangeThe (world-space) distance to move the camera.
virtual void MoveBackward ( float  fRange)
virtual

Move the camera backward along its view direction. Its rotation remains unchanged.

Parameters
[in]fRangeThe (world-space) distance to move the camera.
virtual void MoveDown ( float  fRange)
virtual

Move the camera down. Its rotation remains unchanged.

Parameters
[in]fRangeThe (world-space) distance to move the camera.
virtual void MoveLeft ( float  fRange)
virtual

Move the camera left. Its rotation remains unchanged.

Parameters
[in]fRangeThe (world-space) distance to move the camera.
virtual Vector Project ( const Vector vWorldPosition) const
virtual

Takes a point in world space and returns its position in screen coordinates.

The X and Y values of the vector give the location in screen space. Screen space goes from (-1,-1) in the lower-left to (1,1) in the upper right, with (0,0) being the center of the screen.

The returned Z value represents the distance from the camera to the point. A value of 0.0 indicates the point is at the near clip plane, and a value of 1.0 places it at the far clip plane. Values outside the range 0 to 1 will not be visible (they would be clipped).

Parameters
[in]vWorldPositionA point in world-space.
virtual Vector UnProject ( const Vector vScreenPosition) const
virtual

Takes a point in screen space and returns its position in world space.

Screen space goes from (-1,-1) in the lower-left to (1,1) in the upper right. The center of the screen is (0,0). The Z value in your specified screen-space point should be in the range 0.0 to 1.0. This will control the depth of the point. If you specify 0.0, the returned world space point will be on the near clipping plane. If you specifiy 1.0, the returned world space point will be on the far clipping plane.

Parameters
[in]vScreenPositionThe screen-space point to be transformed.
virtual mudbox::Matrix Matrix ( bool  bOffscreen = false) const
virtual

Returns the matrix used by the camera to transform world space positions to screen space.

Parameters
[in]bOffscreenUsed internally. Always set this to false.
virtual float FOV ( void  ) const
virtual

Returns the vertical field of view in radians.

You can calculate the horizontal field of view like this:

hFOV = atan( aspectRatio * tan(vFOV) );
virtual float Near ( void  ) const
virtual

Returns the near clip plane distance from the camera.

virtual float Far ( void  ) const
virtual

Returns the far clip plane distance from the camera.

virtual float AspectRatio ( void  ) const
virtual

Returns the current aspect ratio of the viewport.

Aspect ratio is the width of the viewport divided by its height.

virtual void SetFOV ( float  fFOV)
virtual

Sets the vertical field of view of the camera.

Parameters
[in]fFOVNew vertical field of view in radians.
virtual void SetNear ( float  fNear)
virtual

Sets the near clip plane for the camera.

Parameters
[in]fNearDistance from the camera in world units.
virtual void SetFar ( float  fFar)
virtual

Sets the far clip plane for the camera.

Parameters
[in]fFarDistance from the camera in world units.
virtual void SetAspectRatio ( float  fAspectRatio)
virtual

Sets the aspect ratio for the camera.

The aspect ratio is the width of the viewport divided by the height.

Parameters
[in]fAspectRatiothe new aspect ratio for the camers (width/height)
virtual float Scale2D ( void  ) const
virtual

Returns the 2d scale factor.

This is a scale factor that is applied to the scene after it is projected from world space into screen space. Normally this is 1.0.

virtual float Angle2D ( void  ) const
virtual

Returns the 2d rotation amount.

This is a rotation that is applied to the scene after it is projected from world space into screen space. Rotation is around the point 0,0 in screen space. Positive values rotate clockwise. Returns the angle in radians.

virtual Vector Position2D ( void  ) const
virtual

Returns the 2d offset.

This is an offset that is applied to the scene after it is projected from world space into screen space.

virtual void SetScale2D ( float  fScale2D)
virtual

Sets the 2d scale factor.

This is a scale factor that is applied to the scene after it is projected from world space into screen space. Changing this makes the image smaller or larger without affecting perspective in any way.

Parameters
[in]fScale2DAmount by which to scale the screen image
virtual void SetAngle2D ( float  fAngle2D)
virtual

Sets the 2d rotation amount.

This is a rotation that is applied to the scene after it is projected from world space into screen space. Rotation is around the point 0,0 in screen space. Positive values rotate clockwise.

Parameters
[in]fAngle2DAngle, in radians, by which to rotate the screen image
virtual void SetPosition2D ( const Vector vPosition2D)
virtual

Sets the 2d offset.

This is an offset that is applied to the scene after it is projected from world space into screen space. Applying a 2d offset lets you move the screen image around without changing perspective at all.

Parameters
[in]vPosition2DNew screen space position for the center of the screen image
virtual void CopyFrom ( const Camera cOther)
virtual

Make this camera identical to another one.

Parameters
[in]cOtherCamera to copy values from
virtual bool IsEqualTo ( const Camera cOther) const
virtual

Returns true if this camera is equal to the other one.

Parameters
[in]cOtherCamera to compare
virtual bool Pick ( float  fXPosition,
float  fYPosition,
SurfacePoint sResult 
)
virtual

Returns the point displayed at the given screen location.

Given X and Y coordinates in screen space, this method sees if any geometry is displayed at those coordinates. If not, false is returned. If there is geometry there, true is returned, and sResult is set to contain information about the found geometry. SurfacePoint is defined in mesh.h

Parameters
[in]fXPositionThe X coordinate in screen space
[in]fYPositionThe Y coordinate in screen space
[out]sResultInformation about the picked point
virtual ScreenSpacePicker* GetScreenSpacePicker ( ) const
virtual

Returns the ScreenSpacePicker used by this camera for picking.

virtual Vector Aim ( ) const
virtual

Returns the world-space point around which the camera rolls when you navigate in the 3d view.

virtual void SetAim ( const Vector v)
virtual

Sets the point around which the camera will rotate when you navigate in the 3d view.

This point is changed by various navigation actions, such as panning the camera or using the F or A keys to reposition the camera.

Parameters
[in]vWorld-space point around which the camera will rotate
virtual bool Orthographic ( ) const
virtual

Returns true if the camera is orthographic.

virtual void SetOrthographic ( bool  isOrtho)
virtual

Sets the camera to be orthographic or perspective.

Parameters
[in]isOrthoSet to make the camera orthographic, false to make it perspective
virtual bool IsDirty ( void  ) const
virtual

returns if the camera needs refresh

virtual void SetDirty ( bool  bDirty)
virtual

sets if the camera needs refresh


The documentation for this class was generated from the following file: