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
の場合、これは、アイテムファイルのコピーも作成します。