image2

こんにちは。クリエイティブR&Dグループ所属のsasaと申します。
セクション内では主にVFXを担当しており、現在はHoudiniというツールの技術検証・研鑽・実践を行っています。

「R&Dグループってなんぞや?」という方はコチラ↓
http://klabgames.creative.blog.jp.klab.com/archives/14399176.html

今回は、前回の記事の最後で予告していたTipsやテクニックをチュートリアル形式で少しご紹介したいと思います。

「前回の記事ってなんぞや?」という方はコチラ↓
http://klabgames.creative.blog.jp.klab.com/archives/17960839.html

※ 注意点なのですが、本記事は前回の記事の続きという形でございまして、内容に関しましても前回の記事を読んでいる事を前提としたものになっておりますので予めご了承下さい。

Tips紹介…の、その前に

まずは私が想像している初心者~脱初心者までの各学習工程の段階をご覧ください。

・1段階目
Houdiniを触るのがまったくの初めて~SideFX社公式の「STARTHERE」や「BASIC」、「QUICKSTART」のチュートリアルを見様見真似でとりあえずやってみたり、5分~10分位のチュートリアルなら見様見真似で何とか形にできる段階。ただ、作業の中身や各ツールやノードの意味はまだよくわからない状態。1週間Houdiniを触らなかったらほぼ何も覚えていないような段階。

・2段階目
1段階のチュートリアルを多数こなし、Houdiniのオペレーションや機能が少しわかってきた段階。1週間Houdiniを触っていなくてもやっていたことの6割位は覚えている状態。基礎をより強固なものにし、徐々に応用に進んでいく段階。

・3段階目
SideFX社公式の「INTERMEDIATE」前後に相当するレベル。Houdiniの基礎及び応用のためのプロセスをそこそこ分かっている段階。インターネット上にある各チュートリアルはこのレベル以降を対象としたものが多い印象。2段階目のチュートリアルをしっかりこなしていれば順当に学んでいけるのですが、1段階目からいきなりここにスキップすると意味不明になりがち。

今回は、上記のように初心者向け入門用チュートリアルを1段階目とするならその次の2段階目のチュートリアルを紹介したいと思います。

なぜ2段階目のチュートリアルかというと、1段階目や間を開けて3段階目以降のチュートリアルはSideFX社の公式チュートリアル等で結構充実しているのに対し、その間の2段階目のチュートリアルは数が少ないからです。
自分で勉強していても感じましたが、Houdiniのチュートリアルは入門用と中級者以上向けのチュートリアルは充実しているのですが、脱初心者向けのチュートリアルは中々ありません。
前回の記事が導入解説だったので順当に考えれば1段階目の入門用チュートリアルを作るのが自然な流れですが、入門用チュートリアルはSideFX社公式等に既に十分な量が用意されており、私がこのタイミングで作っても既存のチュートリアルと内容が重複するだろうと思いました。ですので今回は入門用の1段階目の次の、脱初心者向けの2段階目のチュートリアルをご紹介したいと存じます。

※1段階目のチュートリアルも紹介してほしいという方もいるかと存じます。前回の記事及び上記でSideFX社公式サイトに入門用のチュートリアルが充実している旨を紹介しましたが、念のために入門用資料の一部を再度ご紹介いたします。

SideFX社公式チュートリアル
まずはこのページの「STARTHERE」及び「BASICS」のチュートリアルを履修することをオススメいたします。また、ページトップにあるサッカーボールのチュートリアルもHoudiniの基礎的な概念を分かりやすく説明しているので是非ご覧になって頂きたいと存じます。

3DCGMeetup#12のHoudiniセッションの発表資料
蒸留スイ氏によるHoudiniの入門資料。Houdiniの考え方やメリットを簡潔に紹介してくれています。

CGWORLDのHoudini導入講座
ありがたいことに上記リンクの3時間に渡る導入講座部分は無料で視聴可能です。

今回やること

image1
今回は上記画像を作成します。

モデリングからコンポジットまでの全てを行います。これは「通しで作業した方がツールを覚えやすい」「マテリアルやライティング、レンダリングのチュートリアルは少ないのでその補完になる」「Houdiniはオブジェクトもパーティクルも根底の考え方は一緒なので、それぞれの作業を行い多角的にHoudiniに触れることでよりHoudiniを理解しやすくなる」…という考えがあるからです。
Houdiniには良くも悪くもアプローチに多種多様な選択肢があり、最初のうちはその多様さに混乱し、何を使ってどうすれば良いのか分からない状態になることがあるので、私のやり方を紹介することで「こういう考え方でやっている人もいる」ということを知って頂き、その視点を軸にすることで他のアプローチを比較検討しやすくなるだろうという思いもあります。
また、画像やテキストだけで今回のチュートリアルを語ろうとすると膨大なページ数になりそうだったので、今回のチュートリアルは基本的に動画を主としてブログ上のテキストは要点等の捕捉という形式になっております。

BasicTutorial

こちらが今回のチュートリアル動画となります。各チャプターへのショートカットは動画の説明欄に記載しています。
Houdiniのバージョンは17.5、コンポに使用しているAfterEffectsのバージョンはCC2019です。

簡単なショートカットキーやグローバル変数は入門用資料の多くに記載されているので動画内ではほぼ説明をしていませんが、念のために下記に記載いたします。

・ショートカット
tab : tabメニューの表示
U  : 上の階層に上がる
I  : 下の階層に潜る
R  : 選択したノードのディスプレイフラグを立てる
Y + ドラッグ :  ワイヤーの切断
Alt + ドラッグ : 複製
Ctrl+B  : 選択中のビューを最大化及び元に戻す
Space + F  : 選択したジオメトリ、オブジェクトをビュー全体に表示
Space + A  : 全ジオメトリをビュー全体に表示
Space + H  : グリッドを中心に表示

・グローバル変数
$F : 現行フレーム
$HIP  : 現行のシーンファイルを含んだディレクトリ
$HIPNAME  : 拡張子なしの現行シーンファイル名
$OS  : 現行オペレータ(ノード)の名前

Tutorialの補足

動画内にテキストで必要な補足はいれているのですが、それ以外にも気になりそうな事だったり、「これってどういう意味だろう?」と感じそうな箇所だったり、追加で別途説明をした方が良さそうだと感じた箇所を下記にまとめました。

チュートリアル動画を履修中、必要に応じて適宜ご確認いただければ幸いです。

Introduction

背景画像はHoudiniに標準で入っているEnvironmentMapの画像なので気にしなくて大丈夫です。

CreateErodeObject

VDBはエフェクトをやっている方には馴染み深い概念だと思いますが、知らない方も多いかと思います。簡単に言うと軽量高速のボリュームフォーマットのことで、HoudiniはこのVDBとポリゴンを行き来することができ、これが強力なのでよく作業で使われます。

より詳しくVDBについて知りたい方はHoudini Advent Calendar 2017でrenkiku氏がVDBについて解説された記事が分かりやすいのでぜひご覧ください。

CreateParticleEmitter

booleanノードの「Output Primitive Groups」の任意の項目にチェックを入れることで、booleanするオブジェクトの特定の要素をグループ分けすることができます。
今回はboolean後の球体の表面部分をグループ分けし、blastノードでそのグループのみを抽出してエミッターのベースを作成しています。

blastノードはこのように特定の要素だけを抽出・除外したい時によく使います。

CreateParticle

パーティクルの発生部分に「$F==1」と打っていますが、これで指定したフレームのみtrue=1、それ以外のフレームはfalse=0が返され、結果として指定したフレーム(今回は1フレーム目)のみパーティクルが発生するようになります。

CreateLight

EnvironmentMapに使用しているテクスチャはHoudiniをインストールすれば標準でインストールされるものを使用しています。
SkyLightのシェルフは便利なのでよく使うのですが、SunLightをオンにしておくとリフレクション等に変なチラつきが出やすくなるので今回はオフにしています。レンダリング設定を詰めればGlobal Iluminationのチラつきのような嫌なチラつきは消せたりするのですが、その分レンダリングが重くなるのでEnvironmentLightだけで十分な場合は私はそうしています。

Load Object&Material

キャッシュの種類で「Packed Disk Primitive」という種類を使っていますが、端的にいうとこうしてパックする事で軽量高速でデータを取りまわすことができます(しかしその分UnPackしないと中のアトリビュートにアクセス・編集することができません)。レンダリング時の読み込みも効率化されるのでレンダリング前の最終キャッシュなんかでもよく使います。

パックについてより詳しく知りたい方はHoudini公式ヘルプのパックプリミティブの項目Ken氏のサイト「サルにもわかるHoudini」のパックプリミティブの記事が分かりやすいのでぜひご覧ください。

Load Particle&Setting

キャッシュのタイプですが、今回はパーティクルのageやlifeといったアトリビュートを利用するので「All Geometry」にしてあります。

ageとlifeで色やスケールを調整していますが、これはエフェクトでよく使われるテクニックです。

パーティクルにオブジェクトを何もアサインしていない状態でpscaleを視覚的に確認する場合は、「Dキー」→「DisplayOptions」→「Geometry」→「Particles」→「Display particles as」のタイプを「Discs」にするのがオススメです。

Create ParticleMaterial

オブジェクトのマテリアル共々「Roughness」を「0.1」にしています。こうすることで艶がでてEnvironmentMapの影響が分かりやすくなりますが、principledshader標準の「0.3」でもリアルな自然物としては少し艶っぽすぎる場合が多いのでご注意下さい。

principledshaderはHoudiniのマテリアルの中でも最も基本的なマテリアルで且つ汎用性・拡張性の高いものなので私はよく使います。

Camera&LookSetting

シェルフのCameraを「Ctrl+左クリック」することで現在のビューからカメラを作成することができます。動画のようにDisplayOptionバーのLookCameraのチェックを入れることでパースビューを動かすようにカメラの位置を調整することができます。

obj階層でのnullは、親子関係の親として使うことができます。

MPlayPreview&RenderSetting

動画にマウスが表示されていないので分かり辛くて申し訳ありませんが、MPlayは画面左下のフィルムケースのようなアイコンをクリックすると起動します。

Composite

使用しているaepは以下からダウンロードすることができます。一般的な常識の範囲内で学習ソースとしてご自由にお使いください。

blog02_v001_03.rar をダウンロード

Creative Commons License
This work by KLab Inc. is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

aep内はソースのデータを置き換えればそれ以降のコンポ全てが自動で変化・反映されるようになっており、これはHoudiniの非破壊的なプロシージャルな作法とよく似ています。AfterEffects自体はプロシージャルを前提としたツールではありませんが、このようにプロシージャルの考え方を踏襲すると効果的にシーンを構築することができます。

終わりに

1時間を越えるチュートリアル、お疲れさまでした。
如何だったでしょうか? 少しでも皆様のHoudiniの勉強のお役に立てたのなら幸いです。

私自身、Houdiniの基礎チュートリアルを終えたときの次の悩みは「マテリアルやライティング、レンダリングはどうやっているんだろう? キャッシュはどのタイミングでどういう風に取っているんだろう?」といった所でした。当時の私と同じような壁に差し当たった方の力になれたのならこれ以上の喜びはありません。

冒頭にも書きましたがHoudiniには無数のアプローチがあり、私が今回やった方法も一例に過ぎません。ですが、まずは一例を知ることでそこから多種多様なアプローチを比較検討することができるようになるので、一つの指標として本チュートリアルを活用して頂けますと幸甚に存じます。

また、「こういう事を知りたい」「こういう内容を記事に取り上げてほしい」といった要望も募集中です。何かございましたらコメントフォームの方へ書き込みをお願いいたします。

最後までお目通し頂きありがとうございました。