Houdiniの様々なAsset Galleryパネル(LOP Scene Viewerに付属しているSnapshot Gallery、Layout LOPのブラシパネル内のWorking Set Gallery、Asset Galleryペイン)すべてが、このクラスからデータを引き出すことで構成されています。 このオブジェクトは、ソース識別子とオプションで追加の文字列引数を指定することで作成されます。 このソース識別子は、共有の大元のデータソース実装オブジェクト(C++またはPythonのオブジェクト)を検索または作成するために使用されます。 これらの実装オブジェクトは、このオブジェクト上でコールされたメソッドに応答する役割を担っています。
Houdiniには、3つのデータソース実装が同梱されています。
1つ目のデータソース実装は、読み書きの機能を持ったSQLデータベースを使用します。
このデータソース実装タイプは、ソース識別子が.db、.sqlite、.sqlite3のどれかの拡張子のファイルパスになっている場合に使用されます。
2つ目のデータソース実装は、USDファイル拡張子のディスク上のファイルに対応しています。
このデータソースは読み込み専用で、追加の引数を渡すことで、そのUSDファイル内のどのPrimsをアセットとして表現すべきなのかを指定することができます。
3つ目のデータソース実装は、ソース識別子がop:接頭辞で始まりその後にLOPノードパスが付いている場合に使用され、そのLOPノードのステージを読み込み専用のデータソースとして使用し、追加の引数を渡すことで、そのソースステージ上のどのPrimsをアセットとして表現すべきなのかを示したプリミティブパターンを指定することができます。
新しいデータソース実装をC++で作成するには、UT_GalleryDataSourceImplのサブクラスを作成し(UT_GalleryDataSource.hを参照)、UT_GalleryDataSource::registerDataSourceImplementationをコールしてそれを登録する必要があります。
新しいデータソース実装をPythonで作成するには、husd.datasourceモジュールで定義されているDataSourceオブジェクトのサブクラスを作成し、それを$HFS/houdini/husdplugins/datasourcesディレクトリ内に配置します。サンプルのusdfile.pyを参考にしてください。
このクラスのメソッドは、ほとんどの場合、単にコールを大元のデータソース実装オブジェクトに転送しているだけです。 そのため、ここでの各メソッドの説明は、実装クラスのそれぞれ同じ名前のメソッドで実行されるアクションの説明にも当てはまります。
メソッド ¶
__init__(source_identifier, args=None)
  → AssetGalleryDataSource
        
source_identifierとオプションの実装固有なargsパラメータに基づいて、マッチする既存のデータソース実装オブジェクトを構築または検索します。
isValid()
  → bool
        
このデータソースが有効な実装である場合はTrueを返し、そうでない場合はFalseを返します。
    通常では、Falseを返すと、それは、そのソース識別子が既存ファイルとかLOPノードとかどちらも表現していない、または、ファイルタイプがどのデータソース実装クラスにも対応していないことを意味します。
isReadOnly()
  → bool
        
このデータソースが読み込み処理にしか対応していない場合はTrue、そうでない場合はFalseを返します。
    このメソッドでFalseを返すデータソース実装は、決してどのsetメソッドもコールせず、このオブジェクトに対してsetメソッドをコールしてみても、即座にFalseが返されます。
sourceIdentifier()
  → str
        
このデータソースオブジェクトの作成に使用されるソース識別子の文字列を返します。
sourceArgs()
  → str
        
このデータソースオブジェクトの作成に使用されるargs文字列を返します。
startTransaction()
        
書込み可能なデータソースに対してこのメソッドを使用することで、そのデータソースを編集する複数のコールをグループ化することができます。
    このメソッドがコールされると、そのデータソースを編集するリクエストは、endTransactionメソッドがコールされない限り、大元のデータソースを実際に編集する必要がありません。
endTransaction(commit=True)
        
このメソッドは、startTransactionコール後に常にコールされ、データソース編集のグループが完了したことを示します。
    このメソッドが戻った時、startTransactionコール以降のすべての編集がデータソースにコミットされます。
    commitパラメータがFalseの場合、all edits since the call to startTransactionコール以降のすべての編集が破棄され、データソースにはどの編集も記録されません。
itemIds()
  → tuple
 of str
        
データソースで利用可能なアセット毎に固有な識別子を返します。 このメソッドが返す識別子は、指定されたアセットに関連した情報を取得または設定する他のメソッドで、個々のアセットを識別するのに使用されます。
updatedItemIds()
  → tuple
 of str
        
このメソッドを最後にコールしてから変更されたアセットの固有IDを返します。 このメソッドは、大元のデータソースが変更されている場合、または、そのデータソースを照会した時にデータが利用不可だったけれどもそれ以降にそのアイテムのデータが利用可能になった場合などのケースに対処するために、アセットギャラリーから定期的にポーリング(問い合わせ)されます。
childItemIds(item_id)
  → tuple
 of str
        
このアイテムを親として持つすべてのアセットの固有IDのリストを返します。
    item_idに空っぽの文字列を渡すと、'root'を親として持つアイテムのリストが返されます。
infoHtml()
  → str
        
アセットギャラリーウィンドウの上部に表示されるHTML形式の文字列を返します。 これは、データソースに関するカスタム情報を返します。 アセットギャラリーの上部のHTML情報ウィンドウが非表示の場合は、空っぽの文字列が返されます。
sourceTypeName(item_id=None)
  → str
        
idで指定されたアセットのデータソースタイプを返します。
    このソースタイプは、Houdini LOPネットワーク内でのアセットのインスタンス化の挙動を制御します。
    ここでのitem_idパラメータはオプションなので、一般的には、データソースからのすべてのアセットは同じsourceTypeNameを返します。
    複数の他のソースからデータを集約するデータソースのみがこのメソッドからアセット単位で値を返します。
typeName(item_id)
  → str
        
idで指定されたアセットのタイプを返します。
    これは、(Snapshot Galleryのスナップに対して)snapshotまたは(Asset Galleryのアセットに対して)assetを返します。
label(item_id)
  → str
        
アイテムが何なのか説明したユーザにわかりやすい文字列を返します。 この値は固有である必要がなく、通常では、そのアイテムのサムネイル画像の下に表示されます。
thumbnail(item_id)
  → bytes
        
アイテムを表現したサムネイル画像のRawデータを返します。
creationDate(item_id)
  → int
        
アイテムが作成されたUnixタイムスタンプを表現したLong型整数を返します。
modificationDate(item_id)
  → int
        
アイテムが最後に変更されたUnixタイムスタンプを表現したLong型整数を返します。
isStarred(item_id)
  → bool
        
このアイテムがユーザから“お気に入り”に登録されている場合はTrueを返します。
colorTag(item_id)
  → str
        
ユーザが割り当てた特別なカラータグ値を示した文字列を返します。
    このカラー文字列は、GalleryブラウザUI内で色付きバーとして表示されます。
    対応している値は、blue、green、purple、yellow、teal、redです。
tags(item_id)
  → tuple
 of str
        
このアイテムに割り当てられているユーザ定義のタグ文字列のタプルを返します。
metadata(item_id)
  → dict
 of str
 to str
 or float
        
このアイテムに関連付けられているメタデータの辞書を返します。 このメタデータは、ユーザ側で作成することもできるし、自動的に作成される場合もあります(このメタデータは、例えばレンダラーがSnapshot Gallery内に画像を作成する際に使用されます)。
filePath(item_id)
  → str
        
このアイテムに関連付けられているRawデータにアクセスする際に使用できる文字列を返します。 Snapshot Galleryの場合、これは、ディスク上のスナップショット画像ファイルのパスを返します。 Asset Galleryの場合、これは、ディスク上のUSDファイルのパス、または、このアセットを定義しているLOPノードのパスを表現した文字列を返します。
ownsFile(item_id)
  → bool
        
このアイテムのfilePathがこのアイテムを削除した時に削除されるディスク上のファイルである場合はTrueを返します。
    一般的には、これはスナップショット画像だとTrueで、USDアセットファイルだとFalseを返します(ただし、カスタムデータソース実装では、USDアセットでもTrueを返す場合があります)。
blindData(item_id)
  → bytes
        
アイテムに関連付けられているデータソース実装特有のバイナリデータのブロックを返します。 スナップショットアイテムの場合、これは、スナップショットが撮られた時のLOPネットワークの内容のバイナリ表現となります。 USDアセットの場合、これは、USDファイルから特定のPrimを取り出すのに必要な情報(例えば、ルートPrimのパスやバリアント選択など)を表現した文字列となります。 アセット上のこのブラインドデータをデータソース固有のコードに使用することで、LOPネットワーク内でアセットをインスタンス化することができます。
status(item_id)
  → str
        
このアイテムの現行状態を示した文字列を返します。
    このフィールドは、レンダリングが実行中の時(render_active)、レンダリングが完了した時(render_complete)、レンダリング時にエラーが発生した時(error)を追跡するために、レンダーギャラリーのバックグラウンドレンダリングに使用されます。
parentId(item_id)
  → str
        
このアイテムの親アイテムの固有IDを返します。 このアイテムに親がない場合は、空っぽの文字列が返されます。 これは、そのアイテムがツリーの'root'であることも示しています。
prepareItemForUse(item_id)
  → str
        
アイテムが使用できる準備が整っているかどうかを確認します。 または、データソースがリモートデータベースを指している場合、このメソッドによってアイテムのデータのダウンロードを伴うことがあります。 アイテムが使用できる準備が整っていれば、空っぽの文字列を返し、 準備が整っていない場合は、そのアイテムを準備できなかった理由を説明したエラー文字列が返されます。
setLabel(item_id, label)
  → bool
        
このアイテムのlabelの値を設定します。
    このコールでこの値が変更された場合、Trueを返します。
setThumbnail(item_id, thumbnail)
  → bool
        
このアイテムのthumbnailの値を設定します。
    このコールでこの値が変更された場合、Trueを返します。
setModificationDate(item_id, timestamp)
  → bool
        
このアイテムのmodificationDateの値を設定します。
    このコールでこの値が変更された場合、Trueを返します。
setIsStarred(item_id, isstarred)
  → bool
        
このアイテムのisStarredフラグの値を設定します。
    このコールでこの値が変更された場合、Trueを返します。
setColorTag(item_id, color_tag)
  → bool
        
このアイテムのcolorTagの値を設定します。
    このコールでこの値が変更された場合、Trueを返します。
setMetadata(item_id, metadata)
  → bool
        
このアイテムのmetadata辞書の値を設定します。
    このコールでこの値が変更された場合、Trueを返します。
setFilePath(item_id, file_path)
  → bool
        
このアイテムのfilePathの値を設定します。
    このコールでこの値が変更された場合、Trueを返します。
setOwnsFile(item_id, owns_file)
  → bool
        
このアイテムのownsFileフラグの値を設定します。
    このコールでこの値が変更された場合、Trueを返します。
setBlindData(item_id, data)
  → bool
        
このアイテムのblindDataの値を設定します。
    このコールでこの値が変更された場合、Trueを返します。
setParentId(item_id, parent_item_id)
  → bool
        
このアイテムの親の値をparent_item_idに設定します。
    空っぽの文字列に設定した場合は、このアイテムは親がなく、ツリーのルートであると指定されます。
createTag(tag)
  → bool
        
データソース内にタグを作成しますが、そのタグをどのアイテムにも割り当てません。
    このタグがまだ存在してなくて作成された場合、Trueを返します。
deleteTag(tag, delete_if_assigned)
  → bool
        
データソースからタグを削除します。
    このタグが存在していて削除された場合、Trueを返します。
    delete_if_assignedがFalseで、このタグがどれかのアイテムに割り当てられている場合、この関数は何の処理もせずにFalseを返します。
    delete_if_assignedがTrueで、このタグがどれかのアイテムに割り当てられている場合、まず最初にそれらのアイテムからそのタグの割り当てが解除されてから、そのタグが削除されます。
addTag(item_id, tag)
  → bool
        
特定のアイテムにタグを追加します。
    そのタグがまだ存在していなければ、そのタグを作成します。
    そのタグがアイテムに追加されるとTrueを返します。
    そのタグが既にそのアイテムに割り当てられている場合はFalseを返します。
removeTag(item_id, tag)
  → bool
        
特定のアイテムからタグを削除します。
    そのタグがそのアイテムから削除されるとTrueを返します。
    そのタグがそのアイテムに割り当てられていない場合はFalseを返します。
generateItemFilePath(item_id, file_ext)
  → str
        
file_extで指定された拡張子を持つ固有のファイルパスを返します。
    これは、データベースファイルと同じ場所に自動的にスナップショット画像を配置するので、ディスク上のスナップショット画像などの外部ファイルを作成するのに役立ちます。
addItem(label, file_path=None, thumbnail=b'', type_name='asset', blind_data=b'', creation_date=0)
  → str
        
新しいアイテムをデータソースに追加します。
    アイテムにはlabel、filePath、thumbnail、typeName、blindData、creationDateの値を設定します。
    新しく作成されたアイテムのitem_idを返し、新しく作成されたアイテムを追加できなかった場合は空っぽの文字列を返します。
markItemsForDeletion(item_ids)
  → bool
        
1個以上のアイテムを削除としてマークします。
    通常、データソースが破棄されない限り(つまり、ユーザがデータソースを切り替えない限り、または、Houdiniをシャットダウンしない限り)、この削除は実施されません。
    アイテムを削除するのではなく、アイテムを今後削除するようにマークするだけで、unmarkItemsForDeletionメソッドを使用して削除のアンドゥが可能になります。
    しかし、アイテムが削除としてマークされている間は、itemIdsメソッドはそのアイテムを返さないし、他のメソッドでそのアイテムを照会しても値を返すことはできません。
    アイテムが削除としてマークするのに成功した場合はTrueを返します。
    データソースがアイテムの削除のアンドゥに対応していない場合、このメソッドはそのアイテムを削除してTrueを返します。
unmarkItemsForDeletion(item_ids)
  → bool
        
指定したアイテムを削除する必要があることを示したデータソース内のインジケータを除去します。
    これは、アイテムの削除の要求をアンドゥするのに使用されます。
    指定したアイテムが削除の取り消しに成功した場合はTrueを返します。
    データソースがアイテムの削除のアンドゥに対応していない場合、Falseを返します。
saveAs(source_identifier)
  → bool
        
データソースのコピーを(対応していれば)作成します。
    ownsFileフラグがTrueの場合、これは、アイテムファイルのコピーも作成します。