UserDataBlob

Object Hierarchy | 関連する C++クラス:UserDataBlob

継承

SIObject

ProjectItem

Property

UserDataBlob

導入

v3.5

詳細

The UserDataBlob は、シーンのさまざまなパーツにアタッチできる Property であり、CameraLight、その他の X3DObject、およびClusterなどがあります。プラグインを有効にして、シーンの一部としてバイナリのユーザ データの読み込み、書き込み、保持を行います。

UserDataBlob は、SceneItem.AddPropertyを呼び出して作成できます。複数の UserDataBlob を単一オブジェクトに保存することもできますし、単一UserDataBlob にブランチを適用することもできます。

UserDataBlob の内容は、mental ray に取り込むことができます。シェーダが必要とするコンテキスト情報は UserDataBlob に保存され、Mental Rayユーザデータ API を介して取得されます。この機能は、UserDataBlob がCameraLightX3DObjectのいずれかの直下にネストされている場合にのみ使用できます。"RenderData"という名前のParameterは必ずTrue に設定し、"UserDataID"パラメータはシェーダが予測する mental ray ユーザデータタグの値にする必要があります。リアルタイムシェーダにはこのデータを取り込む必要はありません。リアルタイムシェーダは C++ API を介して UserDataBlob の内容を直接読み取りできるためです。

C++開発者が UserDataBlob のバイナリデータに簡単かつ効率よくアクセスするには、COM オブジェクトモデルインターフェイスではなく、C++ API(xsi_userdatablob.hを参照)を使用します。

CustomPropertyオブジェクトは、バイナリデータをサポートしないオブジェクトに代わる「ローレベル」オブジェクトとして考えられます。UserDataMapは UserDataBlob に似ていますが、オブジェクトレベルのバイナリデータではなく、コンポーネント別のバイナリデータの保存をサポートしています。たとえば、あるユーザデータが頂点クラスタ内のすべてのポイントに適用される場合、そのユーザデータは UserDataBlob に保存されます。一方、ユーザデータが単一の頂点に適用される場合、ユーザデータは UserDataMap の適切なインデックスに保存されます。

メソッド

AddCustomOp AddScriptedOp AddScriptedOpFromFile AnimatedParameters2
BelongsToオペレータ Clearオペレータ EvaluateAt GetICEAttributeFromName
IsA IsAnimated2 IsClassOfオペレータ IsEqualToオペレータ
IsKindOf IsLockedオペレータ IsSelectedオペレータ LockOwners
SetAsSelectedオペレータ SetCapabilityFlagオペレータ SetLock TaggedParameters
UnSetLock      
       

プロパティ

Application Array32オペレータ Branchオペレータ BranchFlagオペレータ
ByteArrayオペレータ Capabilitiesオペレータ Categories EvaluationID
Familiesオペレータ FullNameオペレータ Help HierarchicalEvaluationID
ICEAttributes IsEmptyオペレータ LockLevelオペレータ LockMastersオペレータ
LockTypeオペレータ Model Nameオペレータ NestedObjects
ObjectID Origin OriginPath Owners
PPGLayoutオペレータ Parametersオペレータ Parent Parent3DObject
Selectedオペレータ Singletonオペレータ Sizeオペレータ Typeオペレータ
Valueオペレータ      
       

1. VBScript の例

'Example of the UserDataBlob
'Store some user data directly under the scene root
set oBlob = ActiveSceneRoot.AddProperty( "UserDataBlob", , "data" )
'Save a string.  Because strings are represented as widecharacters
'this takes 12 bytes on Windows and 24 bytes on Linux
oBlob.Value = "xyz123"
logmessage oBlob.fullname & " is storing this string: " & oBlob.Value & _
                                 " which takes " & oBlob.Size & " bytes."
'Flush that user data
ActiveSceneRoot.Properties( "data" ).Clear

2. JScript の例

//Example of UserDataBlob
//Place the blob on a null
var oNull = ActiveSceneRoot.AddPrimitive( "Null" ) ;
var oBlob1 = oNull.AddProperty( "UserDataBlob", false, "nulldata" ) ;
oBlob1.Value = "xyz123" ;
var oBlob2 = oNull.AddProperty( "UserDataBlob", false, "emptynulldata" ) ;
//Find all UserDataBlobs on the object and print out their values
var e = new Enumerator( oNull.Properties ) ;
var item ;
for ( ;!e.atEnd();e.moveNext() )
{
        item = e.item();
        if ( item.Type == "UserDataBlob" )
        {
                if ( item.IsEmpty )
                {
                        logmessage( "Found empty UserDataBlob called " + item.Name );
                }
                else
                {
                        logmessage( "Found user data blob called " + item.Name + 
                                                  " with value " + item.Value );
                }        
        }       
}

関連項目

UserDataMap CustomProperty