C

Camera

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

Add2DChain

Add3DChain

AddCamera

AddCameraRig

AddChild

AddControl

AddCustomOp

AddCustomProperty

AddFxTree

AddGeometry

AddLattice

AddLight

AddLightRig

AddMaterial

AddModel

AddNull

AddNurbsCurve

AddNurbsCurveList

AddNurbsCurveList2

AddNurbsSurface

AddNurbsSurfaceMesh

AddNurbsSurfaceMesh2

AddParticleCloud

AddPolygonMesh

AddPrimitive

AddProperty

AddScriptedOp

AddScriptedOpFromFile

AnimatedParameters2

ApplyEnvelope

BelongsTo

EvaluateAt

FindChild

FindChildren

FindShaders

GetAllShaders

GetICEAttributeFromName

GetModels2

GetShaderInputType

GetStaticKinematicState

HasStaticKinematicState

IsA

IsAnimated2

IsClassOf

IsEqualTo

IsKindOf

IsLocked

IsNodeAnimated

IsSelected

LockOwners

NodeAnimatedParameters

RemoveChild

RemoveFromParent

SetAsSelected

SetCapabilityFlag

SetLock

SetMaterial

ShapeAnimatedClusters

TaggedParameters

UnSetLock

Properties

ActivePrimitive

AllImageClips

Application

BranchFlag

Capabilities

Categories

Children

Envelopes

Families

FullName

Help

ICEAttributes

Interest

Kinematics

LocalProperties

LocalRotation

LocalScaling

LocalTranslation

LockLevel

LockMasters

LockType

Material

Materials

Model

Models

Name

NestedObjects

ObjectID

Origin

OriginPath

Owners

Parameters

Parent

Parent3DObject

PPGLayout

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



Autodesk Softimage v7.5