Houdini Engine for Unreal で uproperty の TArray型に値を複数設定する方法
1401
4
1
お世話になっております。
Houdini Engine for Unreal の uproperty の設定周りで質問があります。
https://www.sidefx.com/docs/houdini/unreal/attributes.html [
www.sidefx.com]
以上のドキュメントに書いてある通り unreal_uproperty_* で UProperty に値を設定できます。
しかし、UProperty が TArray型(例えば RuntimeVirtualTextures 等)の場合、最初の値しか設定できません。
例えば以下のように設定した場合、確かに index 0 に指定したリファレンスが設定できていることは確認できました。
s@unreal_uproperty_RuntimeVirtualTextures = "/Script/Engine.RuntimeVirtualTexture'/Game/Terrain/RuntimeVirtualTexture/RVT_Landscape.RVT_Landscape'";
しかしながら、index 1以降の値をどのように設定したらよいのか不明のままです。
例えば以下の方法を試してみましたがうまくいきませんでした。
s[]@unreal_uproperty_RuntimeVirtualTextures
にしてArrayで値を入れる。-> 設定できない
s@unreal_uproperty_RuntimeVirtualTextures1
に index 1 に入れたいリファレンスを設定する -> index 1 に反映せず
何かの方法で値を入れる方法はありますか。
Edited by y4-kobayashi - Aug. 7, 2023 22:03:50
-
- Ken Taki
- Staff
- 337 posts
- Joined: April 2015
- Offline
具体的に配列はどのように設定しているのでしょうか?
配列を用いて試みた例としては以下のように設定しています。
Unreal の Landscape を出力する前提で最終段の Attribute Wrangle に
s[]@unreal_uproperty_RuntimeVirtualTextures = { "/Script/Engine.RuntimeVirtualTexture'/Game/Terrain/RuntimeVirtualTexture/RVT_Landscape0.RVT_Landscape0'", "/Script/Engine.RuntimeVirtualTexture'/Game/Terrain/RuntimeVirtualTexture/RVT_Landscape1.RVT_Landscape1'"};
というVEXコードを Run Over を "Detail(only once)" にして設定しておきます。
ここでは "RVT_Landscape0"が Draw in Virtual Textures の index0 に "RVT_Landscape1" が Draw in Virtual Textures の index1 に設定されてほしいのですが実際にビルドしてみるとされていません。
尚、バージョンは
Houdini:19.5.605.0
Houdini Engine:5.0.7
を使用していおります。
Edited by y4-kobayashi - Aug. 16, 2023 23:02:26
-
- Ken Taki
- Staff
- 337 posts
- Joined: April 2015
- Offline
やり方は一つではなく、他にもいろいろとあると思うのですけど、文字列 (string) の配列があって、さらに文字列アトリビュートが複数ある場合、下記のようにアサインできるのではないですかね?
string test[] = {"abc", "def"};
string @a;
string @b;
@a = test[0];
@b = test[1];
これで違うと言うことであれば、シーンファイルなり完全な再現方法をご提示いただけないでしょうか?
Edited by Ken Taki - Aug. 17, 2023 13:32:26
文字列 (string) の配列があって、さらに文字列アトリビュートが複数ある場合、下記のようにアサインできるのではないですかね?
TArrayは可変Arrayのため、TArrayの要素値そのものには文字列アトリビュートがありません。
TArrayには前述の通り決められた文字列アトリビュートがあり、1つの値であればそのTArrayの文字列アトリビュートに値を設定すると自動的にindex0に設定されます。
シーンファイルなり完全な再現方法をご提示いただけないでしょうか?
確認用の uasset と HDA をアップロードさせていただきます。
Image Not Found
添付のzipファイルに含まれている Contentフォルダー以下をUEのプロジェクトのContentフォルダー以下に複製して確認してください。
以下、私の確認バージョンです。
- Houdini:19.5.605.0
- Houdini Engine:5.0.7
- Unreal Engine: 5.1.1-23901901+++UE5+Release-5.1
上記のzipファイル内の Sample レベルアセットが確認用のレベルとなっております。
今回のサンプルは "Draw in Virtual Textures" に2つの Runtime Virtual Texture アセットを設定する方法を模索した結果、できなかったものです(下図参照)。
"Select Input" のHDAパラメータで設定方法を変更できるようになっています。
- one : 1つのリファレンスのみ設定した場合、この場合はindex0に"RVT0"が設定されます。
s@unreal_uproperty_RuntimeVirtualTextures = "/Script/Engine.RuntimeVirtualTexture'/Game/AssignToTArray/RVT0.RVT0'";
- array : 配列で2つのリファレンスを設定した場合
s[]@unreal_uproperty_RuntimeVirtualTextures = { "/Script/Engine.RuntimeVirtualTexture'/Game/AssignToTArray/RVT0.RVT0'", "/Script/Engine.RuntimeVirtualTexture'/Game/AssignToTArray/RVT1.RVT1'" };
- num : アトリビュート名の接尾辞に番号を付与して、各々のアトリビュートにリファレンスを設定した場合
s@unreal_uproperty_RuntimeVirtualTextures0 = "/Script/Engine.RuntimeVirtualTexture'/Game/AssignToTArray/RVT0.RVT0'";
s@unreal_uproperty_RuntimeVirtualTextures1 = "/Script/Engine.RuntimeVirtualTexture'/Game/AssignToTArray/RVT1.RVT1'";
- _num : アトリビュート名の接尾辞にアンダースコアと番号を付与して、各々のアトリビュートにリファレンスを設定した場合
s@unreal_uproperty_RuntimeVirtualTextures_0 = "/Script/Engine.RuntimeVirtualTexture'/Game/AssignToTArray/RVT0.RVT0'";
s@unreal_uproperty_RuntimeVirtualTextures_1 = "/Script/Engine.RuntimeVirtualTexture'/Game/AssignToTArray/RVT1.RVT1'";
※注意点:生成されたLandscapeを残したままHDAをRebuildすると以前のupropertyの設定を維持した状態でRebuildされてしまうようなので一旦生成済みのLandscapeを消去してからRebuildして確かめるのがよさそうです。
以上、確認していただけるとありがたいです。
Attachments:
AssignToTArray.zip (1.8 MB)
HoudiniEngineForUnreal_AssignToTArray01.png (100.3 KB)