明示的な戻り値を使用する各 Softimage 関数では、そのリファレンス情報の「戻り値」セクションに記載されている戻り値を返します。 「戻り値」セクションが記載されていない場合、関数は明示的に値を返しません。
経験豊かなスクリプト開発者が戻り値および出力引数を使用する際に問題が発生した場合は、「戻り値および出力引数を使って操作する」を理解する必要があります。
スクリプト開発初心者も、次のセクションを参照する必要があります。
戻り値とは、呼び出し側に関数が返す任意の値です。 この戻り値は、下の例に示すように、割り当てオペレータ(=)を使用して格納できます。
// Get the user path from the application object var sPath = Application.InstallationPath( siUserPath ); LogMessage( sPath + " is the working path for the User." );
InstallationPath メソッドは、Softimage がインストールされたパス(たとえば、C:¥Softimage¥Softimage_2013)を戻すため、スクリプト開発者はこのパスを sPath 変数に格納しています。
多くの Autodesk Softimage コマンドやメソッドで何かを生成した場合、生成されたその内容が返されます。 その戻り値を使用して、スクリプトを再利用可能にすることもできます。 たとえば、変数に格納される数値を返す関数を次の行に使用します。
// XSIMath.DegreesToRadians returns a double var iDegrees = 30; var dRadians = XSIMath.DegreesToRadians( iDegrees ); LogMessage( "iDegrees = " + iDegrees + " as a " + typeof(iDegrees) ); LogMessage( "dRadians = " + dRadians + " as a " + typeof(dRadians) ); //GetNbTriangles returns a long var sList = GetValue( "SelectionList" ); var lNumberOfTriangles = GetNbTriangles( sList ); LogMessage( "Selection contains " + lNumberOfTriangles + " triangles as a " + typeof(lNumberOfTriangles) );
データ値変数の詳細については、「データ値を返す」を参照してください。
場合によっては、文字列または数値変数を使用する代わりに、戻り値をオブジェクトとして保存するほうがよいことがあります。 たとえば、3D オブジェクトを作成してオブジェクト変数として保存しておくと、オブジェクト モデルを利用してそのオブジェクトを処理できます。
プリミティブ サーフェスの球体を作成して Autodesk Softimage で新しい球体をオブジェクトとして返さずにその球体に orb という名前を付けるように指定したのが、次の行です。
// Using a native Softimage scripting command CreatePrim( "Sphere", "NurbsSurface", "orb" ); ' Using the Softimage object model Set oRoot = ActiveProject.ActiveScene.Root oRoot.AddGeometry "Sphere", "NurbsSurface", "orb"
この例では、Explorer で使われる Softimage の名前を決定する Name パラメータを、コマンド(CreatePrim)およびメソッド(AddGeometry)で指定します。スクリプト内のそれ以降の記述では、このオブジェクトを名前で参照することはできますが、オブジェクト モデルの関数にはアクセスできません。
もうひとつ考慮すべき点があります。シーン内に同名のオブジェクトが存在する場合は、同名オブジェクトの数に応じて新しい球体に orb、orb1、orb127 などの名前を指定する必要があります。 このため、スクリプティング時はオブジェクト名に依存することはできません。
比較的信頼性の高いオブジェクトの参照方法は、スクリプト処理によりオブジェクトを作成して戻り値をオブジェクトに変換することです。 次のスクリプトは、前のスクリプトとほぼ同じですが、いくつかの便利なメソッドやプロパティにアクセスしながら X3DObject を作成する点で異なります。たとえば、親を特定したり選択されている親の場所を検索したりすることも可能です。
' Using the native Softimage scripting command Set oSphere = CreatePrim( "Sphere", "NurbsSurface" ) LogMessage oSphere.Name & "Ôs parent is " & oSphere.Parent ' Using the Softimage object model Set oRoot = ActiveProject.ActiveScene.Root Set oSphere = oRoot.AddGeometry( "Sphere", "NurbsSurface", "orb" ) LogMessage "Is " & oSphere.Name & " selected?..." & oSphere.Selected
オブジェクト変数の使用の詳細については、「オブジェクトを返す」を参照してください。
コマンドおよびメソッドのなかには、そのパラメータの情報を変数に格納する目的に使用できる出力引数(出力パラメータ)を指定できるものもあります。
IsAnimated、siFcurveSource、myParams上の例の myParams は、IsAnimated コマンドに渡される変数です。 このコマンドを実行すると、アニメート化されたパラメータのコレクションが myParams 変数に格納されます。これにより、スクリプト内のそれ以降の記述では、その変数に対するアクセスおよび操作ができます。
出力引数の使用方法については、「戻り値および出力引数を使って操作する」を参照してください。