Object Hierarchy | Related C++ Class: Camera | Supported Parameter List: camera
Inheritance
SIObject
ProjectItem
SceneItem
X3DObject
DirectedObject
Camera
Introduced
1.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
Properties
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 subSee Also
Autodesk Softimage v7.5