>   >  アートディレクタブルなアセット制御のしくみをプロジーシャルに構築する<2> ~岩石の多様化~
アートディレクタブルなアセット制御のしくみをプロジーシャルに構築する<2> ~岩石の多様化~

アートディレクタブルなアセット制御のしくみをプロジーシャルに構築する<2> ~岩石の多様化~

ハリウッド映画をはじめとするVFX制作業務で培ったノウハウを基に、プライベートではHoudiniワークショップを精力的に開催する杉村昌哉氏。有機系背景モデリングを題材に、自動生成のしくみをプロシージャルに構築する手法を、全2回に分けて披露してもらう。モニュメント・バレーを制作した前回に続き、今回は岩石の多様化を題材に解説する。

※本記事は月刊「CGWORLD + digital video」vol. 240(2018年8月号)からの一部転載となります

TEXT_杉村昌哉 / Masaya Sugimura
EDIT_沼倉有人 / Arihito Numakura(CGWORLD)、山田桃子 / Momoko Yamada

  • 杉村昌哉
    2014年にカナダ モントリオールのFramestoreへ。現在はCinesiteでSenior FX TDとして活躍中。
    @sugiggy
    sugi-iggy.blogspot.jp

TIPS 岩石の多様化

デフォーマでは実現するのが困難な角ばった岩石オブジェクトを、プロシージャルにモデリングすることで形状を表現しつつ、効率良く量産する方法を紹介します。

STEP1 ピースのバリエーション

バリエーションを自動で生成するためにノイズデフォーマなどの値を変える方法は一般的ですが、角ばった石の形状はデフォーマでは表現が難しく、ヌルっとしてしまいがちです。割れてできた全体形状と、角に多くのディテールがある特性を上手く表現できるかがキーになります。

【1】ノードツリー全体です。大きくは、以下の2つのしくみから構成されています。
1.ボロノイの中のピースのみを抽出
2.浸食されたようなディテールの追加

【2-1】まずはシンプルにボックスをVoronoi Fractureでバラバラにします。

【2-2】Voronoi Fractureで作られたoutsideというプリミティブグループを利用し、中のピースを抽出します。outsideグループはもともとBoxの面だった部分なので、この面を1枚でも含むピースを削除するしくみをつくります。その下準備として、outsideプリミティブグループのみにoutsideというprimitiveアトリビュートを作り、値に1をもたせます。

【3-1】次にFor-Each Loopでピースごとにループをさせます。Attribute Promoteでoutsideアトリビュートの値の合計値(Sum)をDetailアトリビュートに格納し、Switchノードに下記のエクスプレッションを入れます。

detail('0','outside',0) >0

【3-2】これにより、outsideの合計値が0以上、つまりoutsideという面を1枚でも含む場合はblastノードで全て削除、そうでなければ残すという切り替えが行えます。このFor-Each Loopを抜けると【左画像】のような状態になります。

【4】全てのピースがくっついた状態では見づらいため、整列させます。ピースをコントロールするには、Assembleノードでpackedオブジェクトにしておくと、WrangleやPoint VOPでの操作を楽に行えます。point number(@ptnum)を利用し、10個ごとに列が切り替わるようにWrangleノードでmod関数とfloor関数を使います。VEXの各関数の意味は下記の通りです。

@P.x = @ptnum %10 ;

X座標はMod関数でピースごとに0~9の値をくり返して代入します

@P.y = 0;

Y座標は全てのピースの値は0です

@P.z = floor (@ptnum * 0.1) ;

Z座標はpoint numberを0.1倍し小数点以下切り捨てることで10個ごとに列が切り替わります以上でピースのバリエーション化は終了です。

次ページ:
STEP2 ピースのディテーリング

特集