## 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 | AddICEAttribute
AddLattice | AddLight | AddLightRig | AddMaterial
AddModel | AddNull | AddNurbsCurve | AddNurbsCurveList
AddNurbsCurveList2 | AddNurbsSurface | AddNurbsSurfaceMesh | AddNurbsSurfaceMesh2
AddPolygonMesh | AddPrimitive | AddProperty | AddScriptedOp
AddScriptedOpFromFile | AnimatedParameters2 | ApplyEnvelope | BelongsTo
EvaluateAt | FindChild | FindChild2 | FindChildren
FindChildren2 | FindShaders | GetActivePrimitive2 | GetActivePrimitive3
GetAllShaders | GetBoundingBox | GetICEAttributeFromName | GetLocalPropertyFromName
GetLocalPropertyFromName2 | GetModels2 | GetPropertyFromName | GetPropertyFromName2
GetShaderInputType | GetStaticKinematicState | HasStaticKinematicState | IsA
IsAnimated2 | IsClassOf | IsEqualTo | IsKindOf
IsLocked | IsNodeAnimated | IsSelected | LockOwners
NodeAnimatedParameters | RemoveChild | RemoveFromParent | RemoveICEAttribute
SetAsSelected | SetCapabilityFlag | SetLock | SetMaterial
ShapeAnimatedClusters | TaggedParameters | UnSetLock |

### Properties

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

### 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