[Houdini] Vellum Brush を読んでみた その2
概要
今回は Vellum Brush を読んでみた第2回です
前回はこちら
メモを残した hip ファイルはこちら
こんなかんじ
環境
OS: Windows 10
Houdini: 19.5.435
Redshift: redshift_v3.0.62 (たぶん)
Geforce Game Ready ドライバー: 526.98
読んでいく
Method パラメータ
enable solver が分岐使っている method パラメータは
Vellum Brush ノードの隠しパラメータとして存在しています
ユーザーのマウス操作によってこのパラメータが Brush だったり、Drag に変化します
実際に確認するには、 State Parameter の Invisible を off にすると表示されます
Shape パラメータ
こんなかんじ
Tips
Gas OpenCL
OpenCL が書ける Wrangle ノードみたいなやつかな...?
Bindings でパラメータを設定し、Kernel タブの下で Generate Kernel
をすると
コードが生成されます
例えば、clearMask の場合だとこんなかんじ
#include "interpolate.h" float lerpConstant( constant float * in, int size, float pos); kernel void clearMask( int mask_length, global float * mask , int stopped_length, global int * stopped , int maskset_length, global int * maskset , float pinthreshold ) { int idx = get_global_id(0); if (idx >= mask_length) return; }
これに続けて、処理を書けば安全そう
maskset などはポインタになっています
これは Parameter type が Attribute になっていると、
int {variable}__length
global {type} * {variable}
が生成されるようです
DOP周辺だとGPUを使った高速化のためにコアになるロジック系は
OpenCLで書かれていることが多そうな気がしてきました
OpenCL の関数
kernel で書かれているコードは VEX ではなく、OpenCL なので調べるときに注意です
例えば vloadn など man.opencl.org
まとめ
OpenCLは読んだこと無いんですが、意外となんとかなりそう...と思いつつも
Houdini の知らない機能を知るのが目的なので実装の詳細については追ってません...
まあここまで読めていれば、個別のブラシのカスタマイズなどは出来そうです
ユーザーの操作と変数書き換えをbindしてるところはどこなのか...気になる
ちょっと古そう... www.sidefx.com
何かあれば Twitter までお気軽にどうぞ~ twitter.com