Created on | Updated on
フォローする

Houdini初級編:エクスプレッション&スクリプティング

Houdiniは、プロダクションレベルのソリューションであり、スクリプティングは最終的には作業においてある役割を果たすことを意味します。アーティスが普段単純にエクスプレッションで済ます一方、テクニカルディレクターがそれらのテクニックにより多くの時間を費やします。Houdiniには、Hscript、Python、およびVEXのサポートが含まれています。

アニメーション、ビジュアルエフェクト、ゲーム開発は高度な技術基盤の上に成り立つ創造的分野であり、芸術的願望と技術的ノウハウのバランスをとることが重要です。Houdiniのノードベースワークフローは、CG技術をよりアーティストに簡単に使用できるように設計されている一方、好きな事を形作るための柔軟性を提供します。

スクリプティングとエクスプレッションは、より深いレベルのコントロールを提供することによって、クリエイティブなプロセスを強化する別の方法を提供します。

HSCRIPT エクスプレッション

HScriptはエクスプレッションを書くために使用できる情報の収集や操作のための高速で簡潔な方法として設計されています。エクスプレッションは、通常、単純な文字列または数値ではない任意の値です。 これは、変数、数式またエクスプレッション関数のような単純なものにすることができます。

フィールドに入力するだけで、エクスプレッションをパラメータに直接入力することができます。 Enterキーを押すと、フィールドが緑色でハイライト表示されます。 パラメータ名をクリックすると、エクスプレッションとエクスプレッションの結果を切り替えることができます。

チャネルリファレンスを作成する場合は、パラメータをRMB-クリックして、「Copy Parameter」を選択し、リンクするパラメータに移動し、「Paste Relative References」を選択します。

また、RMBで2番目のパラメータをクリックし、次にReference > Scene Dataを選択することで、同じ結果を得ることができます。 これにより、他のオブジェクトやノードからデータを選択できるパネルが開き、エクスプレッションが作成されます。 この方法は、複数のパラメーターでエクスプレッションを設定することができます。

エクスプレッションエディタ

関数の複雑さやパラメータのタイプによっては、エクスプレッションエディタを使用することもできます。 エクスプレッションエディタは、パラメータを右クリックしてExpression> Edit Expressionを選択するか、マウスの上にマウスを置いてAlt - Eを押すことで開くことができます。

PYTHON

Pythonは、組み込みと標準化をサポートするCG業界でよく知られている一般的なスクリプト言語です。 つまり、ツール開発に最適です。

HoudiniのPythonは、Houdini Object Model(HOM)上に構築されています。このモデルは、Pythonスクリプト言語を使用してHoudiniから情報を取得し、制御するAPIです。Pythonでは、houパッケージが、HOMを定義するモジュール、関数、クラスの階層の最上位です。 houモジュールは、パラメータエディタとhythonコマンドラインシェルでエクスプレッションを記述するときに自動的にインポートされます。

Houdiniでエクスプレッションを書くときにも使うことができます。 これを行うには、ノードのパラメータペインの上部にあるエクスプレッション言語オプションを変更します。

Pythonコマンドを入力するためのPython Shell Panelもあります。 houモジュールを通常のPython Shellにインポートして、既存のPythonベースのスクリプトにHoudiniを統合することもできます。

ツールシェルフ

シェルフツールもPythonを使って設定されています。 任意のシェルフツールでRMBをクリックし、Edit Toolを選択すると、コードを見ることができます。

PYSIDE/PYQT

Python Panel Editorペインでは、PySide2またはPyQt5インターフェイスを作成、編集、および削除できます。 エディタを使用すると、Python Panelのインタフェースメニューの項目と、Houdiniペインのタブメニューの項目を管理することもできます。 パネルには、試すことができるサンプルコードが付属しています。

VEX

VEXは、Houdiniの多くの場所で使用される高性能なエクスプレッション言語です(シェーダの作成など)。 通常、VEXの評価は非常に効率的で、コンパイルされたC / C ++コードに近いパフォーマンスを提供します。

VEXはスクリプティングの代替手段ではなく、むしろ、シェーダとカスタムノードを作成するための、より小さく、より効率的な汎用言語です。 VEXはC言語をベースにしていますが、C ++やRenderManシェーディング言語からアイデアを取り入れています。

VEXはHoudiniの複数の場所で使用されています:

Modeling – VEX SOPでは、ポインアトリビュートを操作するカスタムサーフェスノードを作成できます。 これは、ポイントを移動したり、速度を調整したり、色を変えたりすることができます。 また、ポイントをグループ化したり、他の多くの便利なタスクを実行することができます。

Rendering – Mantraはすべてのシェーディング計算にVEXを使用します。 これにはライト、サーフェス、ディスプレイスメント、フォグシェーダが含まれます。

Compositing – VEX Generator およびVEX Filter COPを使用すると、複雑なカスタムCOPをVEXに書き込むことができます。 エクスプレッションはC / C ++の速度に非常に近い速度で評価され、Pixel Expression COPより1000倍高速に実行されます。

CHOPs – VEX CHOPを使用すると、カスタムCHOPを作成できます。 CHOP機能は、任意の数の入力チャンネルを操作し、任意の方法でチャンネルデータを処理することができます。 場合によっては、VEXコードはコンパイルされたC ++コードより速く実行できます。

Fur – プロシージャルなファーの挙動はVEXで実装されています。

VOPS

VEXを使用したいけどコードを書きたくない場合は、VOPコンテキストを使用してノードベースのインタフェースを使用することができます。Attribute VOPノードの中に入り、VEXコードを作成するためにVOPコードを使用することで、SOPコンテキストで行うことができます。

 

パラメータvopsを使用して、SOPレベルで使用可能なフロートスライダなどのインタフェース要素を構築できます。 これにより、VOPレベルに戻ることなくVEXコードを実行することができます。

WRANGLEノード

また、Attribute WrangleのようなWrangleノードを使用することもできます。このWrangleノードは、VEXに精通しているプログラマーがアトリビュートを調整できるようにする低レベルノードを提供します。チャネル、ボリューム、およびデフォメーションを処理するためのWrangleノードもあります。

wrangleノードを使って作業する方法を学ぶことに興味をお持ちの場合、Entagma.comをご参照ください。多くの素晴らしいチュートリアルがあります。一般的なコンテンツを作成するより技術的なアプローチですが、アーティスト的な発想です。

コンパイルブロック

ジオメトリネットワーク[SOP]では、ネットワークの一部をコンパイルブロックの中に置くことができ、コードを記述した場合と同じくらい効率的に機能します。 この方法は、ネットワークの仕組みにいくつかの制限を課しますが、適切な状況では潜在的に大きな利益をもたらす可能性があります。

HOUDINI DEVELOPERS KIT | HDK

Houdiniの作業においてよりディープな方法は、SideFXプログラマーがHoudiniファミリーの製品を開発するために使用するC ++ライブラリと同じ包括的セットであるHDKを使用することです。 HDKを使用すると、Houdiniインターフェイスのさまざまな領域をカスタマイズするプラグインを作成できます。 開発キットでできることのいくつかの例を以下に示します。

  • カスタムエクスプレッション関数を追加
  • カスタムコマンド(hscriptまたはHOM)の追加
  • カスタムオペレーター(SOPs, COPs, DOPs, VOPs, ROPs, CHOPs,Objectも含む)の追加
  • 非標準レンダラーのサポート用にOutputを追加
  • レンダラーにカスタムライト、アトモスフィアを追加

HDKの使用方法の詳細については、SideFXのWebサイトで、[Support]> [Document]> [HDK]を選択します。