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 [out]

Camera

Returns the camera.

3DObjCameraInterest [out]

Null

Returns the camera interest.

PrimObjCamera [out]

Primitive

Returns the camera primitive.

PrimObjCameraInterest [out]

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



Autodesk Softimage v7.5