SIGetPrimCamera
 
 
 

SIGetPrimCamera

Description

Creates a camera primitive with an interest.

Note: This command uses output arguments. C# and some scripting languages (such as JScript, PerlScript and Python) don't support arguments passed by reference so you need to use the best workaround for your situation:

For scripting languages this command returns an ISIVTCollection which you can use to get the output arguments.

For C# you can use the XSIApplication.ExecuteCommand method to call this command. ExecuteCommand packs the output arguments into a C# System.Object containing an Array of the output arguments (see Calling Commands from C#).

Scripting Syntax

SIGetPrimCamera( PresetObj, [Name], [InterestName], [Parent], [3DObjCamera], [3DObjCameraInterest], [PrimObjCamera], [PrimObjCameraInterest] );

Parameters

Parameter Type Description
PresetObj String or a preset object (see SIGetPreset) Any preset for Camera Primitives
Name String Name of the camera.
InterestName String Name of the camera interest.
Parent String Parent object for the camera.
3DObjCamera Camera Returns the camera.
3DObjCameraInterest Null Returns the camera interest.
PrimObjCamera Primitive Returns the camera primitive.
PrimObjCameraInterest Null Returns the camera interest primitive.

Examples

JScript Example

/*
        This example demonstrates how to retrieve the output arguments through the returned
        ISIVTCollection, comparing using the Item vs. the Value property.
*/
NewScene( null, false );
// Create the Camera and Interest, and parent them to a newly created NULL object 
var rtn = SIGetPrim( "CameraRoot", "MyCamera_Root", ActiveSceneRoot, true );
// Get the output arguments via the ISIVTCollection.Item property
var oPrim = rtn.Item(0);                // equiv. to:  var oPrim = rtn.Value("Primitive")
var o3DObj = rtn.Item(1);               // equiv. to:  var o3DObj = rtn.Value("Value")
//      NB: This is a perfect example of why using the Value property is much 
//              safer than the Item property: you would expect the output arguments
//              to use the same order in the ISIVTCollection, but in this case, they
//              are opposite.
WhatAmI( o3DObj );                      //INFO : MyCamera_Root is a CameraRig
WhatAmI( oPrim );                       //INFO : MyCamera_Root.CameraRoot is a Primitive
SetValue( o3DObj + ".kine.global.posy", 2.0 );
SetValue( o3DObj + ".kine.global.posz", 20.0 );
// Get the output arguments via the ISIVTCollection.Value property
rtn = SIGetPrimCamera( "Camera", "MyCameraName", "MyCameraIntName" );
var o3DObjCamera = rtn.Value("3DObjCamera" );
var o3DObjCameraInterest = rtn.Value("3DObjCameraInterest" );
var oPrimObjCamera = rtn.Value( "PrimObjCamera" );
var oPrimObjCameraInterest = rtn.Value(" PrimObjCameraInterest" );
// For each object, find out its name and class, if possible
WhatAmI( o3DObjCamera );                //INFO : MyCameraName is a Camera
WhatAmI( o3DObjCameraInterest );        //INFO : MyCameraIntName is a Null
WhatAmI( oPrimObjCamera );              //INFO : MyCameraName.camera is a Primitive
WhatAmI( oPrimObjCameraInterest );      //INFO : input object is a undefined
// Convenience function
function WhatAmI( in_obj ) 
{
        // To prevent crashes, use the try...catch statement, because using ClassName 
        // on a simple data type (string, number, etc.) will throw an error
        try {
                LogMessage( in_obj + " is a " + ClassName(in_obj) );
        } catch (e) {
                LogMessage( "input object is " + typeof(in_obj) );
        }
}

See Also

GetPrimCamera