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 operator
EvaluateAt FindChild FindChild2 FindChildren
FindChildren2 FindShaders GetActivePrimitive2 GetActivePrimitive3
GetAllShaders GetBoundingBox GetICEAttributeFromName GetLocalPropertyFromName
GetLocalPropertyFromName2 GetModels2 GetPropertyFromName GetPropertyFromName2
GetShaderInputType GetStaticKinematicState operator HasStaticKinematicState operator IsA
IsAnimated2 IsClassOf operator IsEqualTo operator IsKindOf
IsLocked operator IsNodeAnimated IsSelected operator LockOwners
NodeAnimatedParameters RemoveChild RemoveFromParent RemoveICEAttribute
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