大量のlightを設置するとシーン内が重くなり過ぎて作業に支障がでます。
そのような時、lightをinstanceにするとデータ量を軽減できるので紹介します。
シーン内に必要なものは下記の3つです。

  • instance node
  • Light node
  • Mantra(レンダリング設定)※今回はMantraレンダーで紹介

スペック:houdini 18.5

【設定の手順】

◆instance nodeの設定

①instance node内でlightに付けたい動きや持っていきたいattributeを作ります。今回は、POPでランダムに出現する動きを付けています。
そして、lightのカラーと明るさの強弱をランダムで付けたかったので、attribute(@Cdと@intensity)を作っています。

a:intensityのデータを作成。(attribute名は任意名でOK)

f@intensity = fit01(rand(@id),chf("min"),chf("max"))* chf("Mult");

b:Cdのデータを作成。

@Cd = vector(chramp("color",rand(@id)));

■Tips■
chramp()をvector()で強制的にデータタイプをvectorに指定すると、wrangleでもカラーのrampパラメータを作ることが出来ます。

②Instanceタブ>Instance Objectでinstanceしたいlightまでのパスを指定します。

③Instanceタブ>Point Instancingを”Full point instancing”にします。
この設定にしないと設定を引き継いでくれないので注意です。

◆light nodeの設定

①defaultではinstance nodeとコネクションさせる為のパラメーターがないので、ギアマークからoperater pathを作ります。

②上記の①のパラメーターにinstance nodeまでのパスをつなぎます。

③point()関数とinstancepoint()関数を使って、instance nodeで設定したattributeを読み込みます。

point(chsop("inst"),instancepoint(),"intensity",0) point(chsop("inst"),instancepoint(),"Cd",0)

■補足1■
instancepoint()は、引数はなくinstanceされているpoint番号を返してくれます。またinstanceはobjレベルのみで機能する為
instancepoint()は、objレベルでしか使えないので気を付けましょう。

■補足2■
point(参照ノードまでのパス, 参照pointの番号, attribute名, index)

■補足3■
instは、①の手順で追加したパラメーターのattribute名です。

mantraの設定

instance nodeは、lightではなくobjectに入れないとレンダリングに反映されないので気を付けましょう。

 

以上です!