Houdini Engine for MAYAインストールとトラブルシューティング

Houdini Engine for MAYAのインストール方法

インストールする方法には、
Houdini本体のインストーラーを使う方法とHoudini Engineのインストーラーを使う方法があります。
前者はHoudiniを使用し且つMAYAでHoudini Engineも利用する方
後者はHoudiniを使用せずMAYAでHoudiniのデジタルアセットを利用する方に向いています。
今回はWindows OSを例に説明します。

1.Houdini本体のインストーラーを使う場合
SidefxのダウンロードサイトからHoudini本体のインストーラーをダウンロードします。
インストーラーには32bitと64bit版がありますが、32bit版はUnity4向けにあり、Houdini Engine for Mayaに関しては64bit版のインストーラーをダウンロードしてください。
HoudiniSetupダウンロードしたインストーラーを実行し、[Next]をクリック、License Agreementで[I Agree]をクリックしてライセンス規約に同意します。
コンポーネント選択で必要なコンポーネントを選択し、[Next]をクリックします。
HoudiniInstallHoudini Engine for Maya 64-bitにチェックを付けて[Next]をクリックします。
HoudiniInstallMaya後はインストール場所等を指定して、進めていけばインストールの完了です。
これで”Houdiniインストールディレクトリ\engine\maya“にHoudini Engineのモジュールがインストールされました。
Houdini Engineプラグインの設定は、事前にインストールされているMAYAに対して自動的に行なわれています。
“MAYAインストールディレクトリ\modules”の中にhoudiniEngineモジュールが入っていることを確認します。
module次に、MAYAを起動して、WindowメニューのSettings/PreferencesサブメニューからPlug-in Managerを実行します。
houdiniEngine.mllのLoadedにチェックを付けます。
MAYAPluginmanagerこれでMAYAのメニューにHoudini Engineの項目が追加されました。
MAYAEngineMenu2.Houdini Engineのインストーラーを使う場合
Houdiniでデータを作成しないけれども、MAYAでHoudiniのデジタルアセットを利用したい方ならHoudini Engineだけをインストールすることもできます。
Sidefxのダウンロードサイトの下側でHoudini Engineのインストーラーをダウンロードします。
HoudiniEngineDownloadダウンロードしたインストーラーを実行し、[Next]をクリック、License Agreementで[I Agree]をクリックしてライセンス規約に同意します。
そして、インストール場所を指定して[Install]をクリックします。
これでHoudini Engineがインストールされます。
しかし、このインストーラーは1.Houdini本体のインストーラーを使う場合とは異なり、手動でプラグインの設定をする必要があります。
以下にその手順を載せます。
エクスプローラから”Houdini Engineインストールディレクトリ\engine\maya“に移動します。その場所にMAYAのバージョン別のフォルダがあるので、目的のバージョンのフォルダの中に進みます。
HEModuleDirhoudiniEngine-mayaバージョン名のファイルをコピーします。
HEModuleコピーしたファイルを”MAYAインストールディレクトリ\modules”の中にペーストします。
次に、MAYAを起動して、WindowメニューのSettings/PreferencesサブメニューからPlug-in Managerを実行します。
houdiniEngine.mllのLoadedにチェックを付けます。

トラブルシューティング

MAYAのPlug-in ManagerでhoudiniEngine.mllのLoadedにチェックを付けて以下のエラーが出た場合の対処方法を説明します。
HE4MAYAErrorMAYAのScript Editorで見ると、
// Error: file: C:/Program Files/Autodesk/Maya2015/scripts/startup/autoLoadPlugin.mel line 46: Unable to dynamically load : C:/Program Files/Side Effects Software/Houdini Engine 14.0.265/engine/maya/maya2015/plug-ins/houdiniEngine.mll
指定されたプロシージャが見つかりません。
// Error: file: C:/Program Files/Autodesk/Maya2015/scripts/startup/autoLoadPlugin.mel line 46: 指定されたプロシージャが見つかりません。
 (houdiniEngine) //
// Error: line 1: Unable to dynamically load : C:/Program Files/Side Effects Software/Houdini Engine 14.0.265/engine/maya/maya2015/plug-ins/houdiniEngine.mll
指定されたプロシージャが見つかりません。
 //
// Error: line 1: 指定されたプロシージャが見つかりません。
 (houdiniEngine) //
のメッセージが表示されている場合、MAYA側でHoudini Engineのパスが見えていないことが原因として考えられます。

対処その1.
MAYAインストールパス\modulesの中にあるhoudiniEngine-mayaバージョン名をテキストエディターで開き、そこに記述されているHoudini Engineのパスがあっているか確認してください。間違えていれば修正します。
対処その2.
システム環境変数Pathで指定されている文字列の文字数を確認してください。2015-03-10 14_20_02その文字列とHoudini(またはHoudini Engine)のインストールパス(例. C:/Program Files/Side Effects Software/Houdini Engine 14.0.65/bin)の長さの合計が
Windows OSの制限値である1023文字以内に収まっている必要があります。
この条件が満たされなかった場合には、上記のエラーが起こります。
この解決策は、MAYAのプリファレンスフォルダ(<ドライブ名>: \Documents and Settings\<ユーザ名>\My Documents\maya\<バージョン>の中にあるscriptsフォルダにuserSetup.pyという名前でテキストファイルを作成します。

そのテキストに
import os
os.environ[‘PATH’] = ‘C:/Program Files/Side Effects Software/Houdini Engine 14.0.265/bin;’+ os.environ[‘PATH’]
のように記述します。
これで1023文字数を超えたPathでもMaya側で正しく取り込まれるため、このエラーを解決することができます。

 

Houdini14からのショートカットの変更点

Houdini14から一部ショートカットが変更されています。

Houdini14では追加選択がShift+左クリック、選択解除がCtrl+左クリック、選択状態の反転がCtrl+Shift+左クリックになっています。
Houdini13までは追加選択がCtrl+Shift+左クリック、選択解除がCtrl+左クリック、選択状態の反転がShift+左クリックでした。

ループ選択の方法が変更されています。
部分ループは、コンポーネントを選択してAキーを押したまま別のコンポーネントを左クリックします。

loop01 loop02

全ループは、コンポーネントを選択してAキーを押したまま、ループさせる方向にある別のコンポーネントを中クリックします。

loop03
loop05 loop06

変更されたシーンビューでのショートカットキー

N Select All(以前はA)
Shift+N Select None(以前はN)
~ Secure Selection(以前は=)

追加されたシーンビューでのショートカットキー

+ または =
選択したオブジェクトのビューポートでのサブディビジョン表示を有効にします。これはGeometryノードのRenderタブのDisplay AsパラメータのSubdivision Suraceへのショートカットです。
SubHot
選択したオブジェクトのビューポートでのサブディビジョン表示を無効にします。
* ハンドル表示を拡大します。
/ ハンドル表示を縮小します。
9 ジオメトリグループ選択モードになります。
Ctrl+Shift+B ショートカットを押す度に、前側ピック、後側ピック、両側ピックのモードに切り替わります。
PickBack
SelectStyle
F2 選択スタイルをボックスに切り替えます。
F3 選択スタイルをラッソに切り替えます。
F4 選択スタイルをブラシに切り替えます。
F5 選択スタイルをレーザーに切り替えます。
Shift+Y ハンドルモードを逆方向に切り替えます(Yは順方向)。

HScriptエクスプレッションを使用した際には、Ctrl+スペースで自動補完が機能します。
H14Hot01Houdini13までは、HScriptエクスプレッションを使用した際に、”$”を入力して少し待てば、そのノードで使用可能な変数すべての一覧が表示されました。
H13HotHoudini14からは、”$”を入力した後にCtrl+スペースを押すことで、そのノードで使用可能な変数すべての一覧が表示されるようになっています。
H14Hot02

アニメーションのベイク

ここでは、アニメーションをベイクする方法を紹介します。
アニメーションのベイクは、CHOPの機能を使う方法とチャンネルファイル(.chan)を使用する方法の2通りがあります。
まずは、汎用性のある”CHOPの機能を使う方法”を説明します。
CHOPの機能によるアニメーションのベイク
球オブジェクトのトランスフォームのTranslateRotateのパラメータ、そしてその球オブジェクト内のSphere SOPのRadiusパラメータにキーフレームアニメーションが設定していると仮定します。

bakeCHOP01 bakeCHOP02

WindowsメニューからAnimation Editorを選択して、Animation Editorを開きます。次に球オブジェクトを選択します。 これでScoped Parametersに選択したオブジェクトのパラメータが入ります。ベイクしたいパラメータだけをピン留めします。この例ではTranslateRotateのパラメータをピン留めします。これによって、次にSphereノードのパラメータを追加する時にオートスコープが解除されなくなります。
bakeCHOP03次にSphereノードのRadiusパラメータをShift+左クリックすれば、Scoped Parametersにそのパラメータが追加されます。同様に、Radiusパラメータをピン留めします。

bakeCHOP04 bakeCHOP05

タイムライン上で右クリックして、Motion FXコンテキストメニューからCreate Clipを選択します。
bakeCHOP06Create Clip…ダイアログでそのままCreateボタンをクリックします。

bakeCHOP07 bakeCHOP08

motionfx CHOP Networkの中にChannel CHOPが生成されていることを確認します。
このCHOPにスコープしたパラメータが設定されます。 Channel CHOP右クリックして、Edit Data Channelsを選択します。
bakeCHOP10
確認メッセージはそのままYesをクリックします。すると、CHOPで生成されたカーブを編集するためのAnimation Editorが開きます。一番右上にあるアイコンをクリックすると、Fit Panelダイアログが開きます。

bakeCHOP11 bakeCHOP12

Fit PanelダイアログでFrames/Absoluteの設定にし、Start/Endにベイクしたいフレーム範囲を指定します。Tolerance0にします。0以外の値にすると、その許容値に基づいてキーフレームが間引きされてしまいます。Animation Editorのカーブの結果で良ければ、Copy To Export Destinationボタンをクリックします。

bakeCHOP13 bakeCHOP14

これでアニメーションカーブがベイクされます。
bakeCHOP15
チャンネルファイル(.chan)によるアニメーションのベイク
前述の方法では、ベイクするアニメーションの範囲や許容値を指定してキーフレームの間引きを行なうことができるので汎用性があります。
Global Animation Optionsで設定したフレーム範囲でフレーム毎にキーフレームを打つ場合であれば、チャンネルファイル(.chan)をエクスポートして、再度そのファイルをインポートすることでアニメーションをベイクすることもできます。
bakeCHAN
前述と同様にAnimation EditorにベイクしたいパラメータをScoped Parametersに入れます。
そして、右上にあるギアのアイコンをクリックして、Channels/Export Displayed Channels as…を選択します。
bakeCHAN01
チャンネルファイル(.chan)を任意の場所に保存します。
bakeCHAN02再び右上にあるギアのアイコンをクリックして、Channnels/Import into Displayed Parameters…を選択します。
bakeCHAN03
保存したチャンネルファイル(.chan)を指定します。
bakeCHAN04これでアニメーションカーブがベイクされます。
bakeCHAN05ここで使用したチャンネルファイル(.chan)の中身は、テキストファイルになっています。
bakeCHAN06
各行がフレーム番号に相当しています。
列の値は、Scoped Parametersに入っているパラメータ名(ラベル名ではなく)の順番で値が入っています。

テクスチャのベイク

デジタルアセットのポータルサイト「Orbolt」には色々役立つアセットがありますが、今回はTexture Baker(https://www.orbolt.com/asset/SideFX::texturebaker)アセットをご紹介します。
OrboltTextureBaker
このデジタルアセットは3Dシーンのライト情報を3Dモデルのテクスチャに焼き付ける、つまりベイクすることができる機能です。
Apprentice版ではテクスチャの解像度を下げれば機能しますがウォーターマークが付くのであまり意味がありません。

TextureBakerUI
概要:
このアセットは、”bake”バンドル内の各オブジェクトに対してテクスチャマップをベイクします。
すべてのライト情報がそれらのテクスチャマップ自体にベイクされます。
これによって、PBR/GIライティングのままリアルタイムでオブジェクトを使用できるようになります。また、このアセットにはレンダリングされたテクスチャの エッジを広げるポスト処理が用意されているので、ジオメトリのUVシームに黒い線が入るのを防ぐことができます。
ベイクされた画像には、法線パス(オブジェクト空間)を持つ平面を余分に持っています。さらに”diffuse/light map”パスを書き出すこともできます。このパスは、テクスチャを除いたライティング情報のみが含まれます。
条件:
1. オブジェクトに(ポイントUVではなく)頂点UVがあること。
2. 頂点UVが重なっていないこと。
動作:
“Bake”ボタンを押すと、現行シーン内にSHOPNETとテイクが作成されます。
MATERIALS_BAKED SHOPNET・・・ベイクしたバージョンのマテリアルが格納されます。
BAKEDテイク・・・ベイクされたテクスチャでマテリアルを上書きします。
BAKED_DIFFUSE・・・Diffuseベイクされたテクスチャでマテリアルを上書きします。
DIFFUSE_MATERIALS・・・’diffuse’パスをベイクする際にアセット側で使用されます。

 注意:
ベイク処理はポリゴンオブジェクトにのみ動作します。
デジタルアセットのオブジェクトをベイクしたい場合には、必要な部分を/objレベルでObject Mergeしてください。
`BAKED`テイクは、オブジェクトのマテリアルを上書きし、Geometryノードの”Ignore Geometry Attributes Shaders”にチェックを付けます。マテリアルをSOPレベルで割り当てていれば、BAKEDテイクでAttributeノードを追加し、”shop_materialpath”Primitiveアトリビュートを削除する必要があります。
これにより、ビューポートOpen GL内でオブジェクトレベルでマテリアルの上書きを更新することができます。

パラメータ:

Camera オブジェクトすべてを網羅したカメラをここに設定します。
Bundle Name ベイク処理で使用するバンドル名。
Add Bundle 指定した名前のバンドルを追加します。
Baked Texture Path 生成されたテクスチャマップの保存先。
Texture Format 画像フォーマット。
Resolution ベイクするテクスチャマップの解像度。
Pixel Samples レンダリング/ベイクの処理で使用するサンプル。
Ray Samples レンダリング時に使用する光線の数。画像の粒/ノイズを少なくするには、この数を上げます。
Noise Level 最適サンプリングに使用します。この値を低くするほどノイズが少なくなります。
Bake Texture 必要なテイクを作成し、ベイク処理を開始します。
Bake Separate Diffuse Pass さらに’baked_diffuse’テイクを作成し、追加で画像をレンダリングします。
Texture Edge Expand 黒い繋ぎ目がでないように、ベイクされたテクスチャの区画を広げるピクセル数。
Expand Textures 指定した量で、ベイクされたテクスチャの区間すべてを広げる処理をします。

今回はこのシーンでテクスチャのベイクをやってみたいと思います。
テストするシーン:
Man
この顔のモデルには事前に頂点UVを割り当てています。VertexアトリビュートにUVがなければこのアセットは機能しません。

ManUV 2015-02-24 19_36_16

Mantraでレンダリングした結果:
ManRendered

これからTexture BakerデジタルアセットのUIのパラメータを設定します。Cameraにカメラオブジェクトを指定し、次にAdd Bundleボタンをクリックします。これで”bake”という名前のバンドルが作成されます。TextureBakerUISet
次にWindowsメニューのBundle Listをクリックします。
bakeバンドルにベイクしたいジオメトリオブジェクトを追加します。

BundleMenu Bundle

Bake Textureボタンをクリックすれば処理が始まります。
これでベイクされたテクスチャが作成されます。
BakeTexture

HOUDINI_USER_PREF_DIR

デフォルトでのHoudiniの環境設定ファイルはホームディレクトリに格納されます。HOMEシステム環境変数を変更していなければ以下のフォルダが環境設定ファイルの保存場所になります。
Windowsの場合:
C:\Users\{ユーザー名}\Documents\houdini{バージョン名}
Macの場合:
Macintosh HD/ユーザ/{ユーザー名}/ライブラリ/Preferences/houdini/{バージョン名}
(ターミナルのパスは /Users/{ユーザー名}/Library/Preferences/houdini/{バージョン名}です。)
Linuxの場合:
/home/{ユーザー名}/houdini{バージョン名}
に格納されます。

Houdini14からは、その環境設定ファイルの場所を示すシステム環境変数HOUDINI_USER_PREF_DIRが追加されました。
この環境変数を利用することで、Houdiniの環境設定ファイルの場所を変更することができるようになりました。
Windowsでは環境変数に
HOUDINI_USER_PREF_DIR = 設定ファイルの保存場所\__HVER__
と定義します。
例えば、HOUDINI_USER_PREF_DIR = C:\HoudiniSetting\__HVER__
とかC:\HoudiniSetting\Houdini__HVER__などのように設定します。
必ず”__HVER__”を付けてください。__はアンダースコア2つです。Houdiniが自動的に”__HVER__”をHoudiniのバージョン番号に置換します。

Environment設定が終わりましたら、OSを再起動します。
Houdiniを起動すると、HOUDINI_USER_PREF_DIRの場所に設定ファイルが生成されます。
ExplolerMacやLinuxはお使いのシェル環境に合わせて環境変数を設定してください。
MacでHOUDINI_USER_PREF_DIRの値を反映させてHoudiniを起動するにはHoudini Shell TerminalからHoudiniを起動させる必要があります。

Houdini14で追加されたVOPノード

配列や文字列の処理に関するVOPが増えています。

Add Steer Force steerweightアトリビュートでステアリングフォースを乗算して、合計のsteerweightで正規化します。
Adbect by Volumes ディスクファイルに保存したボリュームプリミティブのセットによって位置を移流させます。
Agent Clip Catalog エージェントアトリビュートに読み込んだアニメーションクリップすべてを返します。
Agent Clip Length エージェントのアニメーションクリップの長さ(秒)を返します。
Agent Clip Names エージェントプリミティブの現行アニメーションクリップを返します。
Agent Clip Sample 特定の時間でのエージェントのアニメーションクリップをサンプリングします。
Agent Clip Times エージェントプリミティブのアニメーションクリップの現行時間を返します。
Agent Clip Weights エージェントプリミティブのアニメーションクリップのブレンドウェイトを返します。
Agent Convert Transforms エージェントプリミティブのアニメーションクリップのトランスフォームをローカル空間とワールド空間で変換します。
Agent Layer Bindings エージェントのレイヤーにある各形状とバインドされているトランスフォームを返します。
Agent Layer Name エージェントの現行レイヤーや衝突レイヤーの名前を返します。
Agent Layer Shapes エージェントプリミティブのレイヤーが参照する形状の名前を返します。
Agent Layers エージェントプリミティブに読み込まれたレイヤーすべてを返します。
Agent Rig Children エージェントプリミティブのリグのトランスフォームの子トランスフォームを返します。
Agent Rig Find エージェントプリミティブのリグのトランスフォームのインデックスを検索します。
Agent Rig Parent エージェントプリミティブのリグのトランスフォームの親トランスフォームを返します。
Agent Transform Count エージェントプリミティブのリグのトランスフォームの数を返します。
Agent Transform Names エージェントプリミティブのリグの各トランスフォームの名前を返します。
Agent Transforms エージェントプリミティブの現行ローカルまたはワールド空間のトランスフォームを返します。
Append 項目を配列または文字列に追加します。
Arg Sort ソートされた配列のインデックスのリストを返します。
Array Length 配列の長さを返します。
CHOP Input VEX CHOPに接続された4つの入力CHOPのどれかのサンプル値を返します。
Character to String ユニコードのコードポイントをUTF8文字列に変換します。
Compute Lighting PBRを使用してライティングを評価します。
Find 配列や文字列から項目を検索します。
Float to Matrix2 浮動小数点値をMatrix2値へ変換します。
Float to Vector2 浮動小数点値をVector2値へ変換します。
Get Element 配列から指定した項目を取得します。
Get Matrix2 Component 2×2のMatrix2コンポーネントを抽出します。
Get Vector2 Component Vector2コンポーネントを抽出します。
Import Detail Attribute ディスクに保存されたジオメトリからアトリビュート値を取得します。
Import Point Attribute ディスクに保存されたポイントからアトリビュート値を取得します。
Import Primitive Attribute ディスクに保存されたプリミティブからアトリビュート値を取得します。
Import Vertex Attribute ディスクに保存された頂点からアトリビュート値を取得します。
Insert 項目、配列、文字列を配列や文字列に挿入します。
Intersect All 光線とジオメトリのすべての交差を計算します。
Is Alphabetic 文字列のすべての文字がアルファベットなら1を返します。
Is Digit 文字列のすべての文字が数値なら1を返します。
Join Strings 配列の文字列すべてを区切り文字を挿入して連結します。
Matrix2 to Float 2×2のMatrix2を4つのコンポーネントに展開します。
Matrix2 to Matrix3 2×2のMatrixを3×3のMatrixへ変換します。
Matrix2 to Matrix4 2×2のMatrixを4×4のMatrixへ変換します。
Matrix3 to Matrix2 3×3のMatrixを2×2のMatrixへ変換します。
Matrix4 to Matrix2 4×4のMatrixを2×2のMatrixへ変換します。
OpenSubdiv Face Count サブディビジョンハルのフェースの数を返します。
OpenSubdiv First Patch サブディビジョンハルの指定したフェースで生成された最初のパッチの番号を返します。
OpenSubdiv Limit Surface サブディビジョンサーフェスの境界上のPointアトリビュートを評価します。
OpenSubdiv Patch Count サブディビジョンハルのパッチの数を返します。
Output Variables and Parameters シェーダネットワークの書き込み可能な出力変数となる入力を用意します。
Physically Based Hair(Primary Reflection) ヘアーのプライマリ反射のレンダリング用のBSDFを生成します。
Physically Based Hair(Secondary Reflection) ヘアーのセカンダリ反射のレンダリング用のBSDFを生成します。
Physically Based Hair(Transmission) ヘアーの透過のレンダリング用のBSDFを生成します。
Point Bounding Box 指定したジオメトリの境界ボックスの最小と最大のコーナーを意味する2つのベクトルを返します。
Point Cloud Find ファイルから最近接ポイントのリストを返します。
Point Cloud Find Radius ファイルから半径を考慮した最近接ポイントのリストを返します。
Pop 配列の最後の要素を削除して、その要素を返します。
Regex Find 文字列から正規表現を検索します。
Regex Find All 文字列から正規表現の該当項目をすべて検索します。
Regex Match 全体の入力文字列が正規表現に合致すると1を返します。
Regex Replace 検索した正規表現の該当項目を指定した正規表現で置換します。
Regex Split 正規表現に基づいて文字列を分割します。
Remove Index 配列から指定したインデックスの項目を削除します。
Remove Value 配列から項目を削除します。
Reorder 配列や文字列の項目を並べ替えます。
Reverse 配列の順序を逆にします。
Sample Sphere 最大角度の方向の範囲で、単円、球、超球の内側または表面をサンプリングします。
Set Agent Clip Names エージェントプリミティブの現行アニメーションクリップを設定します。
Set Agent Clip Times エージェントプリミティブのアニメーションクリップの現行時間を設定します。
Set Agent Clip Weights エージェントプリミティブのアニメーションクリップのブレンドウェイトを設定します。
Set Agent Layer エージェントプリミティブの現行レイヤーまたは衝突レイヤーを設定します。
Set Agent Transforms エージェントプリミティブのトランスフォームを上書きします。
Set Element 指定したインデックスにエレメントを設定します。
Set Matrix2 Component 値をMatrix2のコンポーネントのどれかに割り当てます。
Set Vector2 Component 値をVector2のコンポーネントのどれかに割り当てます。
Shading Layer Parameter VOPネットワーク(VOPNET)で定義されたVEX関数のシグネチャに表示させるパラメータを作成します。
Slice 文字列や配列のサブ文字列またはサブ配列をスライスします。
Sort 昇順でソートされた配列を返します。
Split String 文字列をトークンに分割します。
String Ends With 文字列が指定した文字列で終わっていれば1を返します。
String Length 文字列の長さを返します。
String Starts With 文字列が指定した文字列で始まっていれば1を返します。
String to Character UTF8文字列をコードポイントに変換します。
Strip 文字列の先頭と後尾にある空白を取り除きます。
Subnet Input Connector 親のVOPサブネットの入力を表現します。
Subnet Output Connector 親のVOPサブネットの出力を表現します。
Surface Color ポイントカラーやカラーマップで付けられた色から基本カラーを生成します。
Swizzle Vector2 Vector2のコンポーネントを並べ替えます。
Title Case 入力文字列をタイトル文字に変換します。
To Lower Case 入力文字列を小文字に変換します。
To Upper Case 入力文字列を大文字に変換します。
UV Coords 定義しているものに応じてテクスチャ座標やジオメトリのs,t座標を返します。
Vector to Vector2 ベクトルをVector2に変換し、そのベクトルの3番目のコンポーネントを返します。
Vector2 to Float Vector2を2つのコンポーネントに展開します。
Vector2 to Vector Vector2をベクトルに変換します。
Vector2 to Vector4 1組のVector2をVector4に変換します。
Vector4 to Vector2 vector4を1組のVector2に変換します。

Houdini14で追加されたDOPノード

群衆とGrain(粒)の処理に関するDOPが増えています。

Agent Look At エージェントの頭が向くオブジェクト/位置を選択します。
Agent Look At Apply エージェントの頭がターゲットを向くように動かします。
Agent Terrain Adaptation 二足歩行のエージェントの足を地形に順応させます。
Agent Terrain Projection エージェント/パーティクルポイントを地形に投影します。
Crowd Solver 独自のステアリングフォースに基づいて群衆エージェントを更新し、アニメーションのクリップ再生を調整します。
Crowd State Crowd Stateを定義します。
Crowd Transition Crowd State間の移り変わりを定義します。
Crowd Trigger Crowd Triggerを定義します。
Crowd Trigger Logic 複数のCrowd Triggerを組み合わせて複雑なトリガーを構築します。
Data Only Once ワイヤーの数に関係なく、オブジェクトにデータを一度だけ追加します。
Gas Curve Force カーブからフォースを生成します。
Output DOPシミュレーションの終点としてマークします。
POP Float by Volumes 液体シミュレーションの表面上にパーティクルを浮かせます。
POP Grains 砂粒の相互作用をパーティクルに適用します。
POP Spin パーティクルにスピンを設定します。
POP Spin by Volumes Velocityボリュームの渦度を利用してパーティクルをスピンさせます。
POP Steer Align エージェント/パーティクルに近隣と揃うようなフォースを適用します。
POP Steer Avoid エージェント/パーティクルに他のエージェント/パーティクルと衝突しないようにフォースを適用します。
POP Steer Cohension エージェント/パーティクルに近隣に近づくようなフォースを適用します。
POP Steer Custom エージェント/パーティクルにVOPネットワークによるフォースを適用します。
POP Steer Obstacle エージェント/パーティクルにStaticオブジェクトと衝突しないようにフォースを適用します。
POP Steer Path エージェント/パーティクルにパスカーブの方向に応じたフォースを適用します。
POP Steer Seek エージェント/パーティクルにターゲットへ向かわせるフォースを適用します。
POP Steer Separate エージェント/パーティクルにお互いを引き離すフォースを適用します。
POP Steer Solver Crowd Solverで独自のステアリングフォースを統合するために内部的に使用されます。
POP Steer Turn Constraint エージェントVelocityが現在の進行方向から特定の角度範囲内にしか向かないように拘束して、エージェントが逆戻りしないようにします。
POP Steer Wander エージェント/パーティクルにランダムな動きをするフォースを適用します。
POP Velocity パーティクルのVelocityを直接変更するノード。
Spring Network Constraint SOPジオメトリを使用してソフトボディオブジェクトをペアで一緒に拘束します。
Spring Network Relationship ジオメトリに基づいたスプリングリレーションシップを定義します。

Houdini14で追加されたSOPノード

Houdini14で追加されたSOPノードの一覧です。
Houdini13ではAttribVOP、VOP SOPのノードが似た機能として存在していましたが、
Houdini14ではAttribute VOPという名前に変更されております。

Agent エージェントプリミティブを作成します。
Agent Edit エージェントプリミティブのプロパティを編集します。
Agent Look At エージェントの頭が指定したオブジェクトや位置に向くように調整します。
Agent Prep 他の群衆ノードで使用する色々な共通Pointアトリビュートをエージェントに追加します。
Agent Proxy エージェントを別の表示に変更します。
Attribute Delete アトリビュートを削除します。
Attribute Interpolate アトリビュートを補間します。
Attribute Randomize 多様に分布したランダムなアトリビュート値を生成します。
Attribute Rename Houdini13のAttributeノードの事です。
Attribute Transfer By UV UVを使ってアトリビュートを転送します。
Attribute VOP Houdini13のAttribVOPやVOP SOPに該当します。
Point VOP 〃。Run Overのデフォルト値がPointsです。
Primitive VOP 〃。Run Overのデフォルト値がPrimitivesです。
Vertex VOP 〃。Run Overのデフォルト値がVerticesです。
Collision Source DOP衝突で使用するジオメトリとVDBのボリュームを作成します。
Convert Line ジオメトリを線分に変換します。
Crowd Source Crowd Solverに使用する群衆エージェントを作成します。
Curve Groom ビューポートでガイドカーブを直感的に制御することができます。
Draw Hair Guides ヘアーガイドを描画します。
Grain Source パーティクルベースのGrain(粒)シミュレーションのソースとして使用するパーティクルを生成します。
Hair Growth Field ストロークプリミティブに基づいてVelocityフィールドを生成します。
Normal サーフェス法線アトリビュートを計算します。
Output サブネットワークの出力としてマークします。
Point Deform ポイントクラウドに基づいてジオメトリを変形します。
Point Relax お互いに指定した半径領域と重ならないようにポイントを動かします。
Primitive Wrangle Houdini13のAttribWrangleに該当します。Run Overのデフォルト値がPrimitivesです。
Vertex Wrangle 〃。Run Overのデフォルト値がVerticesです。
Reguide 新しくガイドをばら撒いて、既存ガイドのプロパティを補間します。
Repack パックAlembicやパックディスクプリミティブをパックジオメトリプリミティブとして再パックします。
Solidify ポリゴンメッシュを自己交差のない密閉したポリゴンメッシュに変換します。
Split プリミティブやポイントを2つのストリームに分岐させます。
Spray Paint サーフェス上にランダムにポイントを吹き付けます。
Stroke Cache ストロークに基づいてジオメトリを段階的に修正するツールの構築を簡単にします。
Test Geometry テスト用ジオメトリ。
Transfer Guides ガイドを転送します。
UV Flatten ジオメトリをUVの島に平坦化(展開)します。
UV Layout UVの島を指定した領域に詰め込んでUVを再接続します。
VDB Activate SDF VDBボリュームプリミティブに記録された符号付き距離フィールドを拡張/収縮します。
VDB Clip 境界ボックスや他のVDBをマスクにしてVDBボリュームプリミティブを切り取ります。
VDB Morph SDF ソースとターゲットのSDF VDB間をブレンドします。
VDB Occulusion Mask VDBプリミティブに対してカメラから見て影となる部分にボクセルのマスクを作成します。
Verify BSDF 必要なインターフェースに準拠しているかBSDFを検証します。
Volume Rasterize Hair レンダリング向けにファーやヘアーをボリュームに変換します。

Houdini14新機能~ライティングとレンダリング~

全般

  • 単純化されたMantraノードのパラメータのレイアウトは、よりわかりやすくパラメータを整理し、非常に重要な制御部分が強調されました。
  • Render メニューとレンダーノードのインターフェースは、別々の Render to MPlay  Render to File の項目を持ち、出力ファイル名のせいでゴチャゴチャしないようにプレビューすることができます。
  • Mantraのライセンスは、マシン毎でありCPU毎ではありません。1台のマシン上でMantraのコピーを何個走らせても、Mantraは1ライセンスのみを使用します。
  • pathmap hbatchコマンドは、あるディレクトリを他のディレクトリにマッピングすることができます。このコマンドは、HOUDINI_PATHMAP環境変数の値を操作します。
  • Apprenticeのレンダリング解像度が1280×720に緩和されました。

レンダービュー

  • Proceduralシェーダはキャッシュ化されます。
  • レンダービューで使用するレンダーノードは、デフォルトでは1個のプロセッサ以外のすべてのプロセッサを使用します。これは、レンダービューを使用している時のユーザーインターフェースのインタラクティブ性を良くするためです。
  • RenderビューとCompositeビューのペイン内の背景画像には、HDR画像を扱えるようになりました。

ライティングとシェーディング

  • 新しい強力なPelting, UV Flatten , Layoutのツール。

H14uvflatten2

  • インタラクティブなUV Flattenワークフロー。

H14UVPinStep07

  • 歪みの可視化。

H14uv_distortion

  • Light Bankでオブジェクトへのリンクを設定するのに、パターン(例えば、hero*)を使用することができるようになりました。
  • Mantra Surface Shaderが新しくなりました。Roughnessマップが追加されました。インターフェースが整理されました。 パラメータがマップでグループ化されています。Fresnel Styleが削除され、SSS Multi Modeが追加されました。 Emission Illuminates Objects パラメータは、常にオンであるかに関係なく動作します。
  • Material Style Sheetsは、ディスクとネスト化されたパックプリミティブ、Alembicフェースセット、ロックされたOBJアセット、個々の群衆エージェントにマテリアルを割り当てることができます。
  • 新しい Find Materials ツールは、ビューポートでジオメトリをクリックして、そのジオメトリのマテリアルのパラメータエディターを開きます。 このツールは、デフォルトで既存のフローティングパラメータエディターを再利用します。新しいパラメータエディターを開く場合には、Ctrl + クリックを使用してください。
  • パックプリミティブの読み込みとAlembicジオメトリの表示が高速化されました。
  • Surface ModelとPBR SpecularのVOPが新しいバージョンになり、角度制御ではなくRoughnessが使われます。
  • hair BSDFとHair Model VOPで、より良いエネルギー保存とサンプリングをします。
  • デフォルトのMarbleマテリアルが通常のジオメトリとうまく動作するように変更されました。
  • .rat圧縮に新しくbloscオプションが追加され、デフォルトのgzip圧縮よりも若干高速化され、ディスク効率が良くなりました。
  • cvex_bsdf関数のサンプリングをテストして可視化するためのVerify BSDF SOPが追加されました。
  • Indirect lightのデフォルトのpre-filter ratioが1に変更されました。
  • ライトをsss寄与度としてラベルすることができるようになりました。

レンダリング

  • 直接/間接の光線用に 別々のサンプリング制御 ができます。
  • ファーのレンダリングが高速化されました。
  • GGX lighting modelは、時間差がほぼなくBlinnよりも良い結果がでます。
  • Mantraの起動が高速化されました。
  • 新しいピクセルフィルタリング機能。
  • 修正されたレイトレースサブサーフェススキャッタリング。
  • 共通の“extra image planes”は、レンダーノードインターフェースの便利なチェックボックスとして利用可能です。
  • Mantraレンダーノード内の“extra image plane”毎に対して、Deep Camera Maps(DCM)を生成する時に、その平面を排除するオプションが追加されました。
  • 新しい“extra image plane”タイプには、パフォーマンス問題をデバッグするのに役立つ情報を含んでいます: ray:nts, ray:nets, ray:nprims,ray:nobjs
  • オブジェクトとMantraレンダーノードの Render points as パラメータは、ポイントを球としてレンダリングするのに対応しています。 繋がっていないポイントは、円ではなくデフォルトで球としてレンダリングされ、pscaleアトリビュートは、直径ではなくデフォルトで半径として扱われます。 これは球のプリミティブをレンダリングするよりも50倍高速化することができ、メモリ使用量も非常に小さいです。 古い挙動に戻したいのであれば、Render Points As (Mantra) (vm_renderpointsas)と (vm_pscalediameter)を使用してください。
  • アセットプロシージャルをレンダリングします。
  • BVH構築が高速化されました。
  • レイトレースされるジオメトリ変形モーションブラーが飛躍的に高速化されました。
  • PrePostレンダーノードは、単一ノードのレンダリングをオンにしてサブネット内で実行した場合に動作します。
  • Mantraがパックプリミティブ フラグメント をレンダリングする時、Mantraはパックプリミティブのアトリビュートをジオメトリ上にコピーするので、フラグメント上の青いVelocityが動作します。 他のパックプリミティブタイプは、インスタンスとしてレンダリングされるので、この方法では動作しません。
  • パックプリミティブ上のアトリビュートは、renderstate関数を使ってシェーダ内で利用可能です。 例えば、パックプリミティブにCdアトリビュートがあれば、renderstate("packed:Cd", PackedCd)によって、その値を取得することができます。
  • モーションブラー付きでパックフラグメントをレンダリングすると、フラグメントのピボット上のvwのアトリビュートを考慮します。
  • Mantraのflatten procedural設定は、デフォルトでオンになっています。

コマンドラインユーティリティー

  • Mantraは、圧縮されたIFDファイル(拡張子が.gzまたは.sc)を読み込めるようになりました。Mantraは、Houdiniのファイルシステムのプラグインを使用するので、opdef:, op:さらにはhttp:プロトコルを使用してIFDファイルを指定することができます。
  • iautocropは、画像の解像度またはデータウィンドウを変更することで、閾値よりも小さいピクセルを切り取ります(圧縮、コメントなどのメタデータ、NDCマトリックスを保持します)。 これは、画像周りの空っぽのブラック空間を切り取るのに役に立ちます。
  • LUT(カラールックアップテーブル)ファイルを扱う2つのユーティリティが追加されました。ilutinfoは、LUTファイルに関する一般的な情報をプリントします。ilutcompは、2つのLUTファイルを単一ファイルに結合します。
  • ilutユーティリティは、“magic”ファイル名srgb, rec709, gamma=x.yを受け入れて、記述されたLUTを生成します。

他の変更と改良点

  • OpenEXR 2.2に対応しました。Mantra ROPは、OpenEXRのDWA圧縮メソッドに対応しました。チャンネル名の31文字制限が解除されました。
  • レンダープロパティが新しくなりました。
    • Render Visibility (vm_rendervisibility)には、オブジェクトの可視性を制御するカテゴリーパターンを異なる名前の光線タイプに格納します。これは、既存のvm_phantomvm_renderableのプロパティを置換します。
    • Velocity Quality (vm_velocityquality)は、レイトレースされるボリュームVelocityモーションブラーに対するMantraのサブディビジョン品質を制御します。
    • Flatten Procedurals: (vm_flattenprocedural)は、プロシージャルジオメトリがサブディビジョンまたは変形ジオメトリを共有する時のレンダリング順の詳細レベル問題を解決するのに役に立ちます。 これは、Alembicと他のパックジオメトリタイプに影響を与えることができます。
    • Ray Tracing Curve Bunch Size (vm_curvebunchsize)は、レイトレーシングアクセラレータを構築する時に、一緒に束ねられるカーブセグメントの数を制御します。
    • Enable Oriented BVH Construction (vm_bvhoriented)は、(もしあれば)シーン内のカーブジオメトリにうまく揃うようにレイトレーシングツリービルダーを調整します。
    • Depth of field aspect ratio (vm_dofaspect)は、歪像の被写界深度を制御します。
    • シアー(傾斜)、ピボット、オフセット、プリ/ポスト回転などのオブジェクトのトランスフォーメーションに相当するプロパティ。
  • デフォルトのカメラの絞りが41.2136から41.42136に変更されました。新しいカメラは、古いバージョンで作成したカメラよりも若干画角が異なります。
  • fog3dtexture3dのシェーダワークフローのサポートが削除されました。代わりにボリュームレンダリングを使用してください。
  • HOUDINI_RIBTEMP_DIR環境変数には、SHOPをRSLにコンパイルした時の中間ファイル(.sl.err)のディレクトリを指定します。

 

 

Houdini14新機能~VEXとVOP~

VOP:

  • ParameterとRamp Parameterのノードで Scope を“Subnet connector”に設定して使用したVOPサブネット/アセットに対して入力と出力を定義するための新しいメソッド。
  • 新しいPoint in Groupノード。
  • CFL条件で制御されるVelocityボリュームによって正確な移流をするための新しいAdvect by Volumes VOP。POP Advect by Volumesは、内部的にこれを使用しています。
  • ポイントを動かすVOPに Update normals if displaced オプションが追加されました。これは、Pが変わってもNが変わらない場合に、ポイント法線と頂点法線を再計算します。
  • Nが存在しない時に、Attrib VOP, Geometry VOP, POP VOPに法線が用意されます。
  • VOPとWranglerで法線の自動計算が無効になりました。ノードは、Exportが*の時に@Pが変わったと見なし、法線を予期せずに再計算します。
  • Rest Positionノードは、Rest Positionをアトリビュートにバインドしたかどうかを示す新しい出力を持ちます。
  • VOPアセットとVOPサブネット内のParameter VOPノードを使用することで、入力と出力を定義することができます。Parameterノードのスコープを“Subnet connector”に設定してください。
  • Type Properties Editorは、Parameter VOPの入力と出力を扱えるように更新されました。
  • 新しいVEX文字列関数と同等のVOP。
  • Filter Step VOPの最初の2つの入力が逆になりました。

VEX:

  • 構造体とクラスのサポートを増やしました。
  • ネイティブのvector2matrix2のタイプ、2次元のvectorのバリアントとmatrix3が追加されました。2つのFloatのVEXノード上にパラメータがあれば、2つのFloat引数をVEXに生成し、3つのFloatが以前のように生成されません。
  • 文字列と配列のスライス
    “hello”[3:4] == “lo”
  • エスケープ特殊文字を必要としないPython形式の“raw strings”に対応しました。例えば、r"c:foo"
  • 新しい配列関数: sort, slice, reverse, find, append, pop。
  • 新しい文字列関数: chr, ord, slice, split, append。
  • 新しいsplineバリアントは、キー位置と値の配列を受け取り、キーが等間隔になっていなくても滑らかなカーブを生成します。
  • getbbox, getpointbbox, intersect, intersect_all, minpos, pcfind, relbbox, relpointbbox, xyzdistの関数で新しいグループサポート。
  • 新しいsetattribtypeinfo関数は、アトリビュートをベクトルまたはクォータニオンに変換します。
  • 確率分布のサンプリング用のVEX関数が追加されました。それらの関数名は、すべてsample_から始まります。例えば、sample_distribution_cone。これらの分布は、Attribute Randomize SOPでも利用可能です。
  • OpInputは、op:ではなくopinput:nをバインドしています。それらのバインドを適切に使用したこのVEX関数は、複数の出力を制御します。
  • 最適化された可変長引数のハンドリング。これは、非常に大きな可変長引数を持つCVEX BSDFシェーダで大きな効果があります。
  • CVEXが配列のバインドをサポートしました。
  • 最適化されたコンパイラ。
  • vcc -vまたはvcc --version`は、バージョン番号をプリントします。
  • vccは、-をファイル名として使用することで、stdinからIFDを読み込めるようになりました。
  • vccは、パラメータ上の#pragma hint hiddenを適切にハンドリングします。
  • #pragma optable vopを使用した時に新しく作成されるVOPノードから入力を隠す#pragma hint parm invisibleinputが追加されました。