LOPでのInstanceのループ処理
Loopを設定したらとたんにUSDへの理解度が要求されてドハマりした。
自分もLOP勉強中なのでここのやり方が正解なわけではないです。
基本(Loopなし&SOP経由)
SOP上でCopy to Pointsする場合のようにMergeで必要なものを集める。
SOP Importで該当のObjectを読み込み以下のようにつなぎ
Instancerの設定を以下の画像のようにし
Instancerをダブルクリックして中でObject Merge等を使用して配置するポイントを読み込む。
※InstancerのLocation SourceをExternal SOPにすれば直接SOPを指定することもできる。
この場合はSOPでCopy to Pointsと同様の結果が得られる。
LOP上でLoop処理も追加
Instance Objectの読み込み
Referenceノードで読み込む。"file"で出てくるSublayerノードでも読み込めるが、この後の処理でLoop処理をしても処理がなかったことにされてしまう。
Loop化
Referenceノードの下にValue Clipをつなぎ、各オブジェクトのキャッシュ先やフレーム数やループ回数を設定する。
※今回のオブジェクトは1-120fまでのキャッシュ
インスタンス前処理
Add Variant to New Primitiveで出てくるAdd Variantノードの第一入力にPrimitiveノードをつなぎ、第二?にインスタンス用オブジェクトをすべてつなぐ。
Primitiveノードは変更せず、ノード名がインスタンスオブジェクト名になるのでわかりやすい名前をつける。
Add VariantのPrimitive Pathを以下のように第一入力にする。
Duplicateをつなぎ、Total Numberをインスタンス用オブジェクトの数だけ設定する。
Set Variantをつなぎ画像を参考に設定する。
PrimitiveはAdd VariantにつないだPrimitiveノード名に*をつけたもの Variant SetはAdd VariantノードのVariant Setと同じ名前
インスタンス
Instanceノードの第一入力につなぎ画像を参考に設定する
第一第二どちらでもインスタンス処理が可能だが、上流でループなどの処理を追加している場合は第一入力でしかインスタンスが機能しないので注意 上記に伴いPrototype SourceもFirst Inputにする必要がある。 今回も配置用ポイントはInstanceノード内でObject Mergeで呼び出し
マテリアルアサイン
この状態のInstanceへのマテリアルアサインは以下画像の箇所以外だと動作しない(どちらかでOK)
今回はすべて同じマテリアルだったのでInstance後にアサイン 当然SOPでのマテリアルも来ない
Time Offset
Cacheノードで必要分のフレームをキャッシュする
Material Variationノードで以下を設定
Instancesの箇所はInsatnceノードのPrimitive Pathと同じものに[*]を追加する。この*部分がインスタンスポイント番号になるので、ポイントを指定すれば一部のみということも可能 Prim Varのnameはこの後出てくるRetime Instanceの該当箇所と合わせる。 特にframeoffsetの場合は、int()等を使用して小数点はなるべく入れないようにしないとパカつく。
Retime Instanceで実際に時間をずらす
Instancesの箇所はInsatnceノードのPrimitive Pathと同じものに[*]を追加する。 PrimvarのnameはMaterial Variationで設定したものを指定する。
問題点
SOPを経由しない場合、LOP上でCopy to Pointsで言うVariantを設定する必要があるが、二桁を超えるとこのVariantの順番がおかしくなってSOPと結果が変わってしまう。
今回は問題ないから放置だが、直し方知ってる方いたら是非