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