Copy to Points で 配置ジオメトリの時間オフセット
ひさびさのHoudiniの記事です。
業務内で Copy to Points SOP を使用して、アニメーションがついたジオメトリを配置する際に、時間オフセットをして配置を行いたい場合がありました。
ネットでいろいろ調べたところ、海外の記事しか出てこなかったので、自分へのメモも含めて書いていこうと思います。
今回、最終的に出来上がるのは、下記のようなものになります。
・配置用のジオメトリの準備
まずは、Copy to Points SOP で配置する用のジオメトリを作成します、今回は上のような火花っぽいものを配置していきます。
配置用ジオメトリの作成が終わりましたら、キャッシュを作成し、Fileノードで読込む必要があります。
Fileノード、キャッシュのパスの指定が完了したら、「Load」を「Packed Disk Sequence」に、「Display As」を「Full Geometry」に、「Frame Range」をキャッシュのフレームレンジに変更してください。
・配置先のPointの仕込み
配置先のPointは、Popでランダムに発生させているのみですが、発生フレームをオフセット調整時に使用したいので、POP Wrangle を使用してアトリビュートを作成します。
if(@has_pprevious == 0){
f@startFrame =@Frame;
}
・Copy to Points Sop 適用後の調整
配置用ジオメトリの作成が終わりましたら、Copy to Points Sop に繋ぎます。
繋いだだけでは、上の動画のように、すべてのジオメトリの再生フレームが同じになってしまっているので、調整を行います。
オフセットを行うには、Intrinsicアトリビュート「Index」の調整をWrangleを用いて行います。
こちらの「Index」の値が、配置ジオメトリのキャッシュ再生フレーム番号になりますので、先ほど格納した配置先のポイントの発生フレームのアトリビュートを使用して、発生フレームにIndexの値が「0」になるように調整します。
setprimintrinsic(0,"index",@ptnum,@Frame-@startFrame,"set");
調整を行いますと、上のように、時間のオフセットが行われたジオメトリが配置されます。
以上、短いですが、Copy to Points SOPで 配置ジオメトリの時間オフセットの方法になります。
今回のサンプルのデータもアップしましたので、よろしかったらどうぞ。(Houdini 18.5.351で作成)