Camera

Object Hierarchy | Related C++ Class: Camera

Inheritance

SIObject

ProjectItem

SceneItem

X3DObject

DirectedObject

Camera

Introduced

v1.0

Description

The Camera object represents a Softimage camera within a scene. The Camera object is always created with its interest located at the origin of the scene's 3D world. Camera can be created with X3DObject.AddCamera or X3DObject.AddCameraRig.

It is possible to find all cameras in a scene using the X3DObject.FindChildren method, as demonstrated in the first example below.

Most important attributes of a Camera object, including the Field of View Angle (fov) and Projection Type (proj) are exposed as Parameter objects on the Primitive returned by calling X3DObject.ActivePrimitive.

Methods

Add2DChain Add3DChain AddAnnotation AddCamera
AddCameraRig AddChild AddControl AddCustomOp
AddCustomProperty AddFxTree AddGeometry AddLattice
AddLight AddLightRig AddMaterial AddModel
AddNull AddNurbsCurve AddNurbsCurveList AddNurbsCurveList2
AddNurbsSurface AddNurbsSurfaceMesh AddNurbsSurfaceMesh2 AddPolygonMesh
AddPrimitive AddProperty AddScriptedOp AddScriptedOpFromFile
AnimatedParameters2 ApplyEnvelope BelongsTo operator EvaluateAt
FindChild FindChild2 FindChildren FindChildren2
FindShaders GetActivePrimitive2 GetAllShaders GetBoundingBox
GetICEAttributeFromName GetLocalPropertyFromName GetModels2 GetPropertyFromName
GetShaderInputType GetStaticKinematicState operator HasStaticKinematicState operator IsA
IsAnimated2 IsClassOf operator IsEqualTo operator IsKindOf
IsLocked operator IsNodeAnimated IsSelected operator LockOwners
NodeAnimatedParameters RemoveChild RemoveFromParent SetAsSelected operator
SetCapabilityFlag operator SetLock SetMaterial ShapeAnimatedClusters
TaggedParameters UnSetLock    
       

Properties

ActivePrimitive AllImageClips Application BranchFlag operator
Capabilities operator Categories Children Envelopes
EvaluationID Families operator FullName operator Help
HierarchicalEvaluationID ICEAttributes Interest Kinematics
LocalProperties LocalRotation LocalScaling LocalTranslation
LockLevel operator LockMasters operator LockType operator Material
Materials Model Models Name operator
NestedObjects ObjectID Origin OriginPath
Owners PPGLayout operator Parameters operator Parent
Parent3DObject Primitives Properties Selected operator
Shaders Type operator    
       

Examples

1. VBScript Example

'vbscript example demonstrating how to access all Cameras in the
'scene.
'Create a sample scene with different cameras
NewScene ,false
GetPrimCamera
GetPrimCamera "Telephoto.Preset", "Telephoto"
GetPrimCamera "Orthographic.Preset", "Ortho"
'Put the orthographic camera inside a model
CreateModel
GetPrimCamera "Wide_Angle.Preset", "WideAngle"
'Hide one of the cameras underneath a cone
GetPrim "Cone"
CopyPaste "WideAngle_Root", ,"cone", 1
GetPrimCamera "Wide_Angle.Preset", "WideAngle"
'Perform a recursive search for all the cameras in the scene
set oCamerasCollection = ActiveSceneRoot.FindChildren( ,siCameraFilter )
'Print out some information about the Cameras in the scene 
logmessage "The scene contains " & oCamerasCollection.count & " cameras"
for i = 0 to oCamerasCollection.count - 1
        set oCamera = oCamerasCollection.Item( i )
        PrintCameraInfo oCamera         
next
sub PrintCameraInfo( in_obj )
        dim oCamera
        set oCamera = in_obj
        logmessage "-----------------------Camera " & i & "------------------------"
        logmessage "Camera Name: " & oCamera.Name
        logmessage "Camera Root: " & oCamera.Parent
        logmessage "Camera Primitive: " & oCamera.ActivePrimitive
        'The Interest a "sibling" of the Camera so
        'we find it via the parent
        set oChildrenOfParent = oCamera.Parent.Children
        dim oInterest
        for each o in oChildrenOfParent
                if ( o.type = "CameraInterest" ) then
                        set oInterest = o
                        exit for
                end if
        next
        logmessage "Camera Interest: " & oInterest  
        'Many aspects of the camera can be manipulated by reading and
        'writing the parameters on these various objects
        if ( oCamera.ActivePrimitive.Parameters("proj").Value = 1 ) then
                logmessage "Projection: Perspective"
        else
                logmessage "Projection: Orthographic"
        end if
        logmessage "Field of View: " & oCamera.ActivePrimitive.Parameters("fov").Value
        'Although these parameters actual belong to the local kinematic property,
        'these shortforms are available to vbscript to make it even more convenient
        logmessage "Interest Pos(local): (" & oInterest.posx.Value & _
                                                "," & oInterest.posy.Value & _
                                                "," & oInterest.posz.Value & ")"
        set oGlobalKine = oInterest.Kinematics.Global
        logmessage "Interest Pos(global): (" & oGlobalKine.Parameters("posx").Value & _
                                                "," & oGlobalKine.Parameters("posy").Value & _
                                                "," & oGlobalKine.Parameters("posz").Value & ")"
end sub
'This is part of the output from running this example:
'INFO : "-----------------------Camera 2------------------------"
'INFO : "Camera Name: Telephoto"
'INFO : "Camera Root: Telephoto_Root"
'INFO : "Camera Primitive: Telephoto.camera"
'INFO : "Camera Interest: Telephoto_Interest"
'INFO : "Projection: Perspective"
'INFO : "Field of View: 6.662"
'INFO : "Interest Pos(local): (0,-2,-20)"
'INFO : "Interest Pos(global): (0,0,0)"
'INFO : "-----------------------Camera 3------------------------"
'INFO : "Camera Name: Ortho"
'INFO : "Camera Root: Model.Ortho_Root"
'INFO : "Camera Primitive: Model.Ortho.camera"
'INFO : "Camera Interest: Model.Ortho_Interest"
'INFO : "Projection: Orthographic"
'INFO : "Field of View: 53.638"
'INFO : "Interest Pos(local): (0,-2,-20)"
'INFO : "Interest Pos(global): (0,0,0)"
'etc.....

2. VBScript Example

'VBScript example : display the properties of a camera
Option Explicit
CreateCamera()
sub CreateCamera()
        dim oCam
        set oCam = ActiveProject.ActiveScene.Root.AddCameraRig( "Camera" ).camera
        LogMessage "camera interest"
        LogMessage oCam.name & ".interest.name: " & oCam.interest.name
        LogMessage "camera parameters"
        oCam.near.value = oCam.near.value * 2
        oCam.far.value = oCam.far.value * 2
        oCam.orthoheight.value = oCam.orthoheight.value * 2
        oCam.fov.value = oCam.fov.value * 2
        LogMessage oCam & ".near: " & oCam.near.value
        LogMessage oCam & ".far: " & oCam.far.value
        LogMessage oCam & ".orthoheight: " & oCam.orthoheight.value
        LogMessage oCam & ".fov: " & oCam.fov.value
        LogMessage "camera marking"
        oCam.near.marked = true
        oCam.far.marked = true
        oCam.orthoheight.marked = true
        oCam.fov.marked = true
        LogMessage oCam & ".near.marked: " & oCam.near.marked
        LogMessage oCam & ".far.marked: " & oCam.far.marked
        LogMessage oCam & ".orthoheight.marked: " & oCam.orthoheight.marked
        LogMessage oCam & ".fov.marked: " & oCam.fov.marked
        LogMessage "camera capabilities"
        LogMessage oCam & ".near.capabilities: " & oCam.near.capabilities
        LogMessage oCam & ".far.capabilities: " & oCam.far.capabilities
        LogMessage oCam & ".orthoheight.capabilities: " & oCam.orthoheight.capabilities
        LogMessage oCam & ".fov.capabilities: " & oCam.fov.capabilities
        LogMessage "camera kinematics position"
        oCam.posx.value = oCam.posx.value * 2
        oCam.posy.value = oCam.posy.value * 2
        oCam.posz.value = oCam.posz.value * 2
        LogMessage oCam & ".posx: " & oCam.posx.value
        LogMessage oCam & ".posy: " & oCam.posy.value
        LogMessage oCam & ".posz: " & oCam.posz.value
        LogMessage "camera kinematics rotation"
        oCam.rotx.value = oCam.rotx.value * 2
        oCam.roty.value = oCam.roty.value * 2
        oCam.rotz.value = oCam.rotz.value * 2
        LogMessage oCam & ".rotx: " & oCam.rotx.value
        LogMessage oCam & ".roty: " & oCam.roty.value
        LogMessage oCam & ".rotz: " & oCam.rotz.value
        LogMessage "camera kinematics scaling"
        oCam.sclx.value = oCam.sclx.value * 2
        oCam.scly.value = oCam.scly.value * 2
        oCam.sclz.value = oCam.sclz.value * 2
        LogMessage oCam & ".sclx: " & oCam.sclx.value
        LogMessage oCam & ".scly: " & oCam.scly.value
        LogMessage oCam & ".sclz: " & oCam.sclz.value
        LogMessage "camera kinematics constrained transfo"
        oCam.cnsscl.value = false
        oCam.cnsori.value = false
        oCam.cnspos.value = false
        LogMessage oCam & ".cnsscl: " & oCam.cnsscl.value
        LogMessage oCam & ".cnsori: " & oCam.cnsori.value
        LogMessage oCam & ".cnspos: " & oCam.cnspos.value
end sub

See Also

CameraRig DirectedObject.Interest GetPrimCamera