すあまの備忘録

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

River using LOP Vol.3 -Instance Loop & Time Offset

LOPでのInstanceのループ処理

f:id:godofsuama:20220228181533p:plain

youtu.be

Loopを設定したらとたんにUSDへの理解度が要求されてドハマりした。

自分もLOP勉強中なのでここのやり方が正解なわけではないです。

基本(Loopなし&SOP経由)

f:id:godofsuama:20220228163602p:plain

SOP上でCopy to Pointsする場合のようにMergeで必要なものを集める。

f:id:godofsuama:20220228163041p:plain

SOP Importで該当のObjectを読み込み以下のようにつなぎ

f:id:godofsuama:20220228163224p:plain

Instancerの設定を以下の画像のようにし

f:id:godofsuama:20220228163353p:plain

Instancerをダブルクリックして中でObject Merge等を使用して配置するポイントを読み込む。

f:id:godofsuama:20220228163447p:plain

※InstancerのLocation SourceをExternal SOPにすれば直接SOPを指定することもできる。

この場合はSOPでCopy to Pointsと同様の結果が得られる。

LOP上でLoop処理も追加

f:id:godofsuama:20220228163830p:plain

Instance Objectの読み込み

Referenceノードで読み込む。"file"で出てくるSublayerノードでも読み込めるが、この後の処理でLoop処理をしても処理がなかったことにされてしまう。

f:id:godofsuama:20220228163913p:plain

Loop化

Referenceノードの下にValue Clipをつなぎ、各オブジェクトのキャッシュ先やフレーム数やループ回数を設定する。

※今回のオブジェクトは1-120fまでのキャッシュ

f:id:godofsuama:20220228164117p:plain

インスタンス前処理

f:id:godofsuama:20220228164546p:plain

Add Variant to New Primitiveで出てくるAdd Variantノードの第一入力にPrimitiveノードをつなぎ、第二?にインスタンス用オブジェクトをすべてつなぐ。

Primitiveノードは変更せず、ノード名がインスタンスオブジェクト名になるのでわかりやすい名前をつける。

Add VariantのPrimitive Pathを以下のように第一入力にする。

f:id:godofsuama:20220228164946p:plain

Duplicateをつなぎ、Total Numberをインスタンス用オブジェクトの数だけ設定する。

f:id:godofsuama:20220228165243p:plain

Set Variantをつなぎ画像を参考に設定する。

PrimitiveはAdd VariantにつないだPrimitiveノード名に*をつけたもの
Variant SetはAdd VariantノードのVariant Setと同じ名前

f:id:godofsuama:20220228165423p:plain

インスタンス

Instanceノードの第一入力につなぎ画像を参考に設定する

第一第二どちらでもインスタンス処理が可能だが、上流でループなどの処理を追加している場合は第一入力でしかインスタンスが機能しないので注意
上記に伴いPrototype SourceもFirst Inputにする必要がある。
今回も配置用ポイントはInstanceノード内でObject Mergeで呼び出し

f:id:godofsuama:20220228165841p:plain

f:id:godofsuama:20220228170017p:plain

f:id:godofsuama:20220228170103p:plain

マテリアルアサイ

この状態のInstanceへのマテリアルアサインは以下画像の箇所以外だと動作しない(どちらかでOK)

今回はすべて同じマテリアルだったのでInstance後にアサイン
当然SOPでのマテリアルも来ない

f:id:godofsuama:20220228170555p:plain

Time Offset

f:id:godofsuama:20220228170755p:plain

Cacheノードで必要分のフレームをキャッシュする

f:id:godofsuama:20220228170836p:plain

Material Variationノードで以下を設定

Instancesの箇所はInsatnceノードのPrimitive Pathと同じものに[*]を追加する。この*部分がインスタンスポイント番号になるので、ポイントを指定すれば一部のみということも可能
Prim Varのnameはこの後出てくるRetime Instanceの該当箇所と合わせる。
特にframeoffsetの場合は、int()等を使用して小数点はなるべく入れないようにしないとパカつく。

f:id:godofsuama:20220228174947p:plain

Retime Instanceで実際に時間をずらす

Instancesの箇所はInsatnceノードのPrimitive Pathと同じものに[*]を追加する。
PrimvarのnameはMaterial Variationで設定したものを指定する。

f:id:godofsuama:20220228175205p:plain

問題点

SOPを経由しない場合、LOP上でCopy to Pointsで言うVariantを設定する必要があるが、二桁を超えるとこのVariantの順番がおかしくなってSOPと結果が変わってしまう。

今回は問題ないから放置だが、直し方知ってる方いたら是非

f:id:godofsuama:20220228181210p:plain