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
Return a unique identifier for any asset that has changed since the last call to this method. This method is polled regularly by the asset gellery to handle cases where the underlying data source may change, or where data my not have been available when it was queried, but the item’s data has since become available.
childItemIds(item_id)
→ tuple
of str
Return a list of unique identifier for all assets that have this item set as its parent. Passing an empty string as the item_id
will return a list of items that have the 'root' as their parent.
infoHtml()
→ str
Return a string in HTML format that will be displayed at the top of the asset gallery window. Provides custom information about the data source. Can return an empty string to indicate that the HTML info window at the top of the gallery should be hidden.
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
Return a string describing the current status of this item. This field is used for render gallery background renders to track when the render is running (render_active
), has completed (render_complete
), or there was an error while rendering (error
).
parentId(item_id)
→ str
Return the unique identifier for this item’s parent item. If this item has no parent then an empty string is returned. This also indicates that the item is at thr 'root' of the tree.
prepareItemForUse(item_id)
→ str
Make sure that the item is ready to be used. For data sources that point to remote databases, this method may involve downloading the item’s data. Return an empty string if the item is ready for use, otherwise return an error string describing why the item could not be prepared.
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
Set the value of the parent of this item to be parent_item_id
. Setting to an empty string indicates this item has no parent and is therefore at the root of the tree.
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
の場合、これは、アイテムファイルのコピーも作成します。