トランジスタスタジオ・秋元純一氏によるHoudini連載「Houdini Cook Book」がリニューアル! Houdiniをより基礎の部分から解説し、最後にはふり返りとして課題も用意しています。第5回はSolver SOPを用いたアニメーションの作成について解説します。
秋元純一 / Junichi Akimoto
株式会社トランジスタ・スタジオ/取締役副社長
2006年に株式会社トランジスタ・スタジオ入社。日本でも指折りのHoudiniアーティスト。手がけてきた作品は数々の賞を受賞している
Solver SOPを用いてAttributeをアニメーションさせる
今回は、Solver SOPを用いてAttributeのアニメーションを作成していきたいと思います。
Solver SOPは、内部にDOP Networkが内包されており、フレームが進むごとにその結果が再帰するように蓄積されていく、少々他のSOPとはちがったタイプのノードになります。Houdiniならではの結果を得ることができるため、他のソフトウェアではなかなか難しいアニメーションなども作成可能です。
例えば、今回は、Attributeの範囲が時間が進むにつれて広がり、成長していく様子を作成しています。これは範囲を指定して広げていくのではなく、どの程度の幅で広がるかを指定して、自動的に成長を促すようなニュアンスです。そのため、ある程度コントロールは難しくなりますが、より有機的な結果を得ることが可能になります。
今回はその中でも基礎的なアプローチになりますが、これを応用することで、さらに面白い結果へのステップになると思います。
01 All Flow / 全体のながれ
STEP 01
まず、ベースとなるジオメトリをインポートします【A】【1】。
STEP 02
次に、Poly Reduce SOP【B】で必要最小限にPolygonを整理し、Remesh SOP【C】で均一なPolygonにします【2】。その三角形に対し、Divide SOP【D】のCompute Dualを用いて、多角形へ変換します【3】。
STEP 03
続いて、Solver SOP【E】を用いて、成長範囲をシミュレーションします。
Solver SOP内では、Scatter SOP【F】を用いてシミュレーションの始点を作成します。少数のポイントがアニメーションするように作成すると、影響範囲が増加しているような雰囲気を作り出せます。そのPointに対してAttribute Create SOP【G】を用いて"area”のAttributeを作成し、Attribute Transfer SOP【H】でベースのジオメトリへ転送します。
STEP 04
続いて、VOP【I】を用いて、影響範囲が広がるためのしくみを作成します。
VOP内では Point Cloud Open VOP【J】を用いてジオメトリのPointから"area"をサーチし、その値と元々の"area"の値を、Max VOP【K】を用いて最大値が新たな"area"になるように計算します。 Point Cloud Open VOPのQuery Positionには、Noise【L】を用いた座標系を使用して歪みを与えることができます。
これにより、毎フレーム増殖していくAttributeの作成が可能になります。
STEP 05
シミュレーションの結果をAttribute Transfer SOP【M】を用いて元々のジオメトリへ転送します【4】。
STEP 06
そのAttributeをAttribute Blur SOP【N】を用いて滑らかにぼかします【5】。
STEP 07
続いて、Facet SOP【O】のUnique Pointsを設定して、Polygonをバラバラにします。次に、Attribute Promote SOP【P】を用いて、"area"のClassをPoint AttributeからPrimitive Attributeへ変更します【6】。
このようにすることで、1つのPolygon内でグラデーションになっていた値が、Polygon1枚で1つの値になります。
STEP 08
この値に対して、Wrangle【Q】を用いて、Ramp Parameter【7】で特定の値から新たな"scale"と言うAttributeを作成します【8】。
STEP 09
Primitive SOP【R】のScaleへ"scale"の値を適用させれば、Polygonのサイズをアニメーションさせることができます【9】。
02 Hints / 制作に役立つヒント
Attribute Edit
Houdiniを使用する上では、Attributeの理解は避けて通れないものです。ただ、その概念を理解するまでがなかなかに難しく、挫折してしまう人が多いのも事実です。ただ、実際には何も難しいことはなく、理解するためには、ほんの少しのきっかけがあれば良いのです。
例えば、【A】はNoiseを用いたAttribute、【B】は円形の範囲を作成したAttributeがあります。それらを、Photoshopのレイヤーのようなものだと考えて、合成してみてください。そうすると、【C】のようなAttributeになります。
計算上は、【C】=【A】*【B】という単純な乗算の演算ですが、Photoshopのレイヤーでも同じことをしていると思います。こう考えると、単純だと思いませんか?
After EffectsやPhotoshopのようにレイヤーを重ねたり、NukeのOverのような重ね方をすると【D】のようになります。この場合の計算式は、【D】=(1-【B】)*【A】+【B】となります。単純な計算ですが、ただ重ねる加算とは異なります。
このように、コンポジットやレイヤーと同様の考えで値を変更するということができます。もちろん、Blurをかけたりもできますし、コンポジットで行う以上の細かなアプローチが可能です。
03 Issues / 今回の課題
Issue 01:軌跡の作成 / Effect ★☆☆☆☆
キャラクターの足跡の軌跡を作ろう。
ヒント:足跡が常に残っていくようにAttributeをコントロールしましょう。
Issue 02:軌跡の減衰 / Effect ★★☆☆☆
軌跡を減衰させてみよう。
ヒント:作成した軌跡に対して、値がどんどん減っていく計算をするためにはどうしたらいいかを考えてみましょう。
Issue 03:簡単なParticleの作成 / Effect ★★★★☆
Pointを動かして、Particleのようなエフェクトを作成してみよう。
ヒント:Pointの座標を指定したVector方向に動かすためには、数学のベクターの計算のマインドが役に立ちます。また、寿命は時間経過のAttributeが必要になります
こちらの制作例は、今回のプロジェクトデータ内に用意しています。ひととおり制作できたら、ぜひ確認してみてください。
今回のプロジェクトデータはこちらから>>TEXT_秋元純一 / Junichi Akimoto
EDIT_小村仁美 / Hitomi Komura(CGWORLD)