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 |