すあまの備忘録

誰得内容の自分のための非営利目的備忘録ブログ(筆者がわかっても内緒にしてください)

よく使うAttribute Interpolate

忙しくて全く更新できていなかった。

よく使うAttribute Interpolateのメモ。

Scatter

多分これが一番有名?

f:id:godofsuama:20210605231421p:plain

Time Shift で止めたあとのジオメトリに、Scatterし

ScatterのOutput AttributesタブにあるPrim Num, Prim UVW Attributeをオンにする。

f:id:godofsuama:20210605231635p:plain

そしてAttribute InterpolateにつなぐとPointが止める前と同じ動きをする。

Ray

実はRayでも同じことができて、Pointにしたくない場合に使う。

ちょうど質問されたので意外と知らない人もいるのかもしれない。

f:id:godofsuama:20210605232218p:plain

なにかしたい処理をしたもの(画像ではColor)をRayの第一入力に、それと同じソースを第二入力につなぐ。

RayのEntityをPointsに変更し、MethodをMinimum Distanceに変更。Transform Pointsもオフにする。

Prim Num, Prim UVW Attributeをオンにする。

ただしこのときのPrim Num, Prim UVW Attributeの名前がScatterとは異なるので、Attribute InterpolateのAttribute名も変更すること。

f:id:godofsuama:20210606234507p:plain

f:id:godofsuama:20210605232532p:plain

個人的にはPointにしたくないとき以外にも、Remeshしたい場合に使う。

最近接点の動きを取るので場合によってはだめなこともあるが、ある程度うまく行く。

f:id:godofsuama:20210605232938p:plain

f:id:godofsuama:20210605233549g:plain

Intersect

こういうときにはあまり使わないけど一応紹介

こいつは結構失敗することが多い。

f:id:godofsuama:20210606000705p:plain

上記画像のように接続する。

検索する向きが必要なので、NormalノードでNをPointに作る。

Wrangleに以下を記述 2行目はメッシュの形状が変わらない場合はこの処理にしておくとうまく行く。そうでないなら不要。

vector pos,uvw;
vector norm = v@N *-1;

i@hitprim = intersect(1, @P, norm, pos, uvw);
v@hitprimuv = uvw;

intersectのメリットは、指定した向き(今回はN)と交差するPrim NumとPrim UVWが取得できること。

メッシュの追従以外のことをするときに使うのが多い。

intersectを使わなくても、RayのMethodをProject Raysに変更し、Direction FromにN(好きなVector Attribute)を入れればほぼ同じ。

xyzdist

有名なやつ。

f:id:godofsuama:20210606001158p:plain

上記画像のように接続する。

Wrangleに以下を記述

int prim;
vector uvw;

float dist = xyzdist(1, @P, prim, uvw, 1);
i@hitprim = prim;
v@hitprimuv = uvw;

Ray(Minimum Distance)の中身もこれだと思うのでほぼ同じ動作が期待できる。

これも今回みたいな場合に使うというよりは、primuvと併用して最近接点のアトリビュートの取得などに使う。