Object Hierarchy | Related C++ Class: Camera
Camera
v1.0
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.
'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.....
|
'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
|