Categories

Houdiniでアニメっぽいシルエット・ディテールを作成する

元々勉強会で発表する予定だったネタなんですが諸事情で出席できなかったのでこちらに記事として書きます。Houdiniで下図の下段のようなラフなシルエットを入力として使用し、上段のようなアニメっぽいシルエットに変換する手法です。

こちらは元ネタがありまして海外のVFXアーティスト@CodyWinch氏の動画を参考にしています。
(超感謝!!)
こちらの動画のデータはGumroadで販売されておりますのでBlenderユーザの方は是非購入してみてください。

今回はこちらの手法をベースにHoudiniでやってみようという試みです。

いきなり完成形のネットワーク画像を載せますがHoudiniユーザの方なら、割とシンプルな構成ということが分かってもらえるかと思います。

やっていることはとても単純で、

①ベースとなるジオメトリに白黒のカラー(Cd)を持たせる
②カラーを参照して黒い部分を削除する
③主にSmoothノードとRelaxノードを使用してアニメっぽいエッジのシルエットを作成する

以上になります、順番に説明していきます。

まずPointvopノード内でTurbulent Noiseノードを使用して円錐のジオメトリにフラクタルっぽい模様を適用します。
ここでは2種類のノイズを生成して混ぜているんですが、これは円錐が広がっている下側部分は徐々にシルエットが千切れて無くなっていくように設定したかったためです。
(記事の最後にhipファイルのリンクを貼っていますので詳しくはそちらを参照してください)

次にこのカラー情報(Cd)を元に黒い部分をDeleteノードで削除します。

この時点だと黒いポリゴン面を削除しただけなので当然ガタガタなのですが、ここから整形していきます。まずSmoothノードを適用します。
下図のようにガタガタが取れてちょっとアニメっぽいシルエットになりました。
Smoothノードを使うとSubdivideノードのように面を分割せずになめらかにしてくれます。
ただちょっとシルエットが「ヌメッ」っとした感じなので更に調整します。

ちなみにSmoothノードのStrengthパラメータの値は初期値 10なのでここではかなり極端な2000という値を入力しています。(極端な値を入れてみるの大事)

次にRelaxノードを適用します。トゲトゲっぽい形状になります。
見た感じヒドイんですが、これが次に適用するSmoothノードでいい感じに変換されます。

再度Smoothノードを適用します。前回Smoothノードを適用したときと比べて所々にスパイクのような尖った形状が出来ているのが分かるかと思います。

仕上げにSubdivisionノードを適用して・・・

Pointノードでカラーを白に設定しました(これは必須ではないです)

そして一番最後に重要な工程があります。この円錐を縦に伸ばすことでアニメっぽいシルエットを引き出します。(進行方向に対して伸ばすかんじ)

結構印象が変わったかと思います。
アニメーションさせると下図のようなかんじ。

で、ここまでが作成方法の解説だったんですが他にもイロイロと利点があります。
上で解説した順序の①ですが

①ベースとなるジオメトリに白黒のカラー(Cd)を持たせる


これはVOPで色付けしてもいいし、Photoshopで描いた連番テクスチャを読み込んで、
それを元にAttribute from Mapノードなどで色付けしてもいいわけです。
要はDeleteノードに色付き(Cdが設定された状態)で渡せればいいので非常に応用範囲が広いです。

例えば下図のようにPhotosopのビデオレイヤー機能で雑に描いた連番を、

Attribute from Mapノードを使ってグリッドのジオメトリに適用してからポリゴン面を削除し、

ディテールを付与して下図のような見た目にもっていくこともできます。

あとPaintノードを使えばこのようにリアルタイムにシルエットを編集することもできます。

で、2つほど素材を出してAfterEffectsでアニメっぽくコンポを組んでみたのが下の動画です。

かなり応用が利きそうな手法なのではないかと思います。
最後にhipファイルのリンクを貼っておきますので是非参考にしてみてください。
(バージョンはHoudini 17.5になります)

弊社ではエフェクト講座を開講しており、
エフェクトデザイナーの育成に力を入れております。
ご興味持たれた方は
是非一度「エフェクト講座」のページをご覧ください。

Leave a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください