ここでは、このマスタークラス (英語字幕付き)で紹介されている Houdini でのジオメトリの64ビット処理について日本語で補足説明する。
使用したビルド: Houdini 18.0.339 (Windows 10)
シーンファイルへのリンクは一番下にあり。
1. 32ビットでの問題点 その1 原点より遠いところでの処理
32 ビット処理で問題になるものの一つに原点から遠いところでの処理があげられる。以下は、問題を再現する方法。
- Houdini を起動、ビューポートで Rubber Toy を作成。
- /obj/testgeometry_rubbertoy_object1 に入り、そこにある testgeometry_rubbertoy1 の出力に Transform ノードを追加。
- transform1 ができる。
- transform1 の Translate X, Y, Z にそれぞれ 10_000_000 と入力する。
- transform1 を複製する。
- Alt キーを押しながらドラッグすると複製ができる。
もしくはコピペ。いずれにせよ tranform2 ができる。 - transform2 で Invert Transformation をオンにし、rubbertoy -> transform1 -> transform2 の順にノードが接続されるようにする。
- transform2 で表示フラグをオンにするとビューポートの Rubber Toy は悲しい形状で表示される。
- Geometry Spreadsheet で Rubber Toy の P (頂点) アトリビュートを見ると、すべて 0 か -1 になっていることがわかる。
2. 問題その1 解決方法 Attribute Cast
- Attribute Cast (attribcast1) を作成。
- transform2 で情報パネルを表示すれば、P アトリビュートが 3flt64 と表示され、このアトリビュートが64ビットで処理されていることがわかる。
追加表示のないものは32ビット。 - Geometry Spreadsheet に戻れば、P[x], P[y], P[z] にそれぞれ64と小さな字で追記されていて、64ビットデータとして処理されていることが確認可能。
こちらも追加表示のないもの、例えば N (法線) は32ビット。
3. 問題その2 Attribute Wrangle
- attribcast1 の出力から枝分かれさせ、Attribute Wrangle (attribwrangle1) を作成。
- VEXpression の項に
@P += 10_000_000;
と入力。ここでも '_' による桁区切りが可能。 - attrwrangle1 を先ほどと同じ要領で複製する (attribwrangle2) 。
- attrwrangle2 を attrwrangle1 の出力に接続する。
- VEXpression の項に
@P -= 10_000_000;
と入力。 - 表示フラグを attrwrangle2 に設定すると、Attribute Cast によって P が 64ビットになっているにも関わらず、 Rubber Toy がまた悲しい状態に戻る。
3. Attribute Wrangle 解決方法
その1: Bindings VEX Precision
- attrwrangle1 の Bindings タブ以下の一番下にある VEX Precision をデフォルト値の Auto から 64 Bit (Experimental) に変更。
- attrwrangle2 でも同様の変更を行う。すると、 Rubber Toy は正しく表示されるようになる。
その2: Attribute Cast Preferred Precision
- 「その1」で設定した attrwrangle1 と attrwrangle2 の VEX Precision をそれぞれ Auto に戻す。
- attribcast1 を選択、一番上の Set Preferred Precision を Unchanged (デフォルト) から 64-bit に変更する。
- これにより Attribute Wrangle での Auto が 64ビットとなり、ビューポートには Rubber Toy が正しく表示されるようになる。
- この際に、ネットワークエディタ上の関連するノードには虫のマークのバッジが追加される。
- attribcast2 を選択、VEXpression に
@Cd = rand(@ptnum);としてアトリビュートを一つ追加。 - この際に情報パネルで新しく追加された Cd を見ると、3flt64 となっているのがわかる。
4. Vellum シミュレーション
Vellum シミュレーション作成時の対処方法を以下かに説明する。基本的には、上と同じで Attribute Cast を使用する。
4-1: 元シーンの作成
- Grid を作成 (grid1) 。
- Size は 10x10 (デフォルトのまま)
- Rows と Columns を 50x50 に変更。
- grid1 の出力に Vellum Configure Cloth を追加 (vellumcloth1)。
- Density を 0.2 (好きな値にしてよい)
- Pin Points に 0 2450 2499 (四隅のうち3点) を追加。
4-2: 原点から移動し戻す
- Transform を作成 (transform3)。
- Translate X, Y, Z にそれぞれ 10_000 を入力。
- grid1 と vellumcloth1 の間に挿入。
- transform3 を複製 (transform4)。
4-3: 修正方法 Attribute Cast
- Attribue Cast を作成 (attribcast2)。
端の部分を見ると、こちらの方がスムーズなのがわかる。
なお、64ビットによるジオメトリ処理は32ビットよりも CPU にも GPU にも負担をかけるが、昨今の64ビットCPU にかかる負担は大きいものではないが、低価格・低機能の GPU では描画速度が著しく遅くなる可能性がある。
シーンファイル
- h18_64bit_processing.zip (63KB)
0 件のコメント:
コメントを投稿