Fabric Engine 1.15.3 プラグインをMayaへ導入する

Fabric Engine 1.15.3 を Maya 2014 64bit(EN) に導入するまでの手順を解説します。


インストール


 ・Fabric Engine公式サイトでファイルをダウンロード

 まずは、Fabric Engineのダウンロードです。
Fabric Engine公式サイトへ行きダウンロードします。

【Fabric Engine】http://fabricengine.com/

 今回は個人的に評価/研究のために使用するので、Evaluation ライセンスでダウンロードしました。


REQUEST LICENSEを押します。
すると、ユーザー情報の登録フォームページが開きます。


・ユーザー情報登録フォームに必要事項を入力

各項目を入力します。

First Name : 姓
Last Name : 名
E-Mail : メールアドレス
JOB Title : 役職
Company : 会社名
WebSite : 会社のWebサイトURL(個人であれば個人サイト)

Please tell us a little about what you
do and how you plan to use Fabric Engine.

Fabric Engineを使用する目的を簡単に記入します。

入力が終わったらSUBMITを押します。
すると、ダウンロードページが開きます。


・ダウンロードページ

使用するOSのブロックにあるDOWNLOADボタンを押し、ダウンロードを開始します。

※当方はWindows版を使用するので、Windows環境での解説をします。


・ファイルの解凍と配置

 ダウンロードした「FabricEngine-1.15.3-Windows-x86_64.zip」を解凍します。
解凍して出来たフォルダ「FabricEngine-1.15.3-Windows-x86_64」を任意の場所へ移動します。
今回は、分かりやすい C:\Program Files 直下に移動する事にしました。


・Maya.envを編集しモジュールパスを通す

Maya.envファイルはMaya2014の場合、以下のパスにあります。

C:\Users\USER_NAME\Documents\maya\2014-x64\Maya.env

上記.envファイルをテキストエディタで開き、以下の行を追加します

※各パスは各々の環境に合わせて適宜書き換えてください。
※当方の環境はMaya2014ですので、FabricSpliceMaya2014SP3にします
※良いエディタがない場合、ワードパッドは使わずメモ帳を使用すると安心です。


・MayaにFabric Engine(FabricSpliceMaya.mll)をロードする

 Mayaを起動し、Plugin Managerを開きます。
前の手順でMaya.envに追記された「MAYA_MODULE_PATH」で示されるパスの中にFabricSpliceMaya.mll があることを確認し、Loadedにチェックを入れます。問題なくチェックできればロード完了です。
必要に応じてAuto Loadをチェックしておくと、次回以降のMaya起動時に自動ロードされるようになり便利です。

 緑色の i ボタンを押し、プラグインにより追加されたノードやコマンドを確認してみます。

 以上でMayaへのFabric Engineの導入は完了です。


・ノードを作ってみる

 試しに、Mayaで以下のPythonコードを実行してみます。

 Maya起動後の初回ノード作成時は、Fabric Engineのシステムをロードするためか、実際にノードが作成されるまで結構時間がかかります。

 先ほど作成したspliceMayaNodeノードをアトリビュートエディターで表示してみました。

 実際にコードを編集する際は、Open Splice Editor ボタンで開くSplice Editorを使用することになります。

 具体的な使い方やTIPSは追々勉強しながら書いていこうと思います。

Maya – リソースイメージを抽出

ツールのGUIを作ってる時、Mayaのリソースイメージをそのまま流用したいことがある。
わざわざキャプチャしたりするのは面倒なので、上記のコマンドでごっそりイメージファイルを抜き取って、必要なアイコンを使ってしまおう。


こんな感じで簡単にアイコンを抽出出来た。

Python SOPでデフォーマーを作ってみる

リクエストがあったのでVOP SOPのような処理をPython SOPで行う方法を書いてみる。
とりあえず、ノード構成はこんな感じでやってみる。

■Python SOP

myDeformerはPython SOP
Python SOPはデフォルトの状態だと以下のようにコードが記述されている。

 

hou.pwd()はPython SOP自身のノードオブジェクトを返す。
Node.geometry()は自身に入力されたhou.Geometry型のジオメトリオブジェクトを返す。

geometryの中にはPointやEdgeやPrimitive型のオブジェクトが含まれており、実際に形状や色を変更する際は、これらのコンポーネントオブジェクトを取得して操作する。

■コンポーネントの取得

■Pointリストの取得
points = geo.points()

■Primitiveリストの取得
prims = geo.prims()

それぞれのコンポーネントに一律の処理を行うには?

 

 

■pointを移動してみるサンプル

 

 

・Gridを変形

・Sphereを変形

■各オブジェクトのリファレンスマニュアル

各オブジェクトの使い方は以下のマニュアルを参照すべし

・hou.Geometry
http://sidefx.jp/doc/hom/hou/Geometry.html

・hou.Point
http://sidefx.jp/doc/hom/hou/Point.html

・hou.Prim
http://sidefx.jp/doc/hom/hou/Prim.html

Houdini – Networkノードの使い方考察

Network系ノードの取り扱い

各種チュートリアルを見ていると、objツリーにいきなりPOP NetworkノードなどのNetworkノードを作成して作業を進める例が多いことに気づいた。
しかし、それではノード管理が難しくなりそうに思えた。

そこで、各種コンテキスト内に適したNetworkノードを作成し、必要に応じて別のコンテキストから呼び出すような作り方を試してみることにする。

Network系ノードを使うのはどんな時か?

パーティクルの挙動を一つのノード内で管理する場合などはPOP Networkノードを作成する。

同様に、画像のコンポジットを行うときはImage Networkノードを使用する。

このように、各種コンテキストに特化した処理をパックするために使用する。

共通ルール

各種Network系ノードは、能動的にNetworkノード内からデータを受け取りに行く方法と、受動的に外からデータを受け取る方法があるようだ。

※ただし、Networkのタイプによってはどちらかしか出来ない場合もある。

・能動的にデータを受け取りに行くケース

Network内にデータの入口となるノードを作成し、入力したいノードのパスを指定するパラメータを使用して直接データを受け取る方法

例:SOP Networkの Object Mergeノード

・受動的にデータを受け取るケース

データを受け取りたいNetworkノード外でデータ出力用ノードを作成し、出力先のノードパスを、受け取りたいNetworkノードのものに指定する。

例:POP Networkへの出力 POP Mergeノードと、POP Network内のSourceノード

SOP Network

オブジェクトの変形や参照など、Geometryに対する様々な処理をパックするのに使う。

外部からオブジェクトを受け取る場合は、Object Mergeノードを作成して、Objectパラメータにより受け取りたいオブジェクトのパスを指定する。

受け取ったあとは、通常通り各種ノードによる処理が行える。

POP Network

パーティクルの挙動をパックする。

1 事前にPOP Networkノードをpartコンテキスト内に作成する。

2 POP Mergeノードを作成し、POP PathパラメータでそのPOP Mergeノードから参照したいPOP Networkノードを指定すると、POP Mergeノードは、指定したパスのPOP Networkノードそのもののように動作するようになる。

3 POP Mergeに、いつもPOP Networkノードに接続していたようにオブジェクトなどをコネクトする。

4 指定されたPOP Networkノード内にSourceノードを作成し、Geometry Sourceパラメータを任意のものに指定すると、POP Mergeノードが受け取ったとおりのデータを使用して、POP Networkを使用できる。

CHOP Network

各種チャンネル処理をパックする。

1 CHOP Networkノードを作成する。

2 Channnelノードを作成し、CHOPパラメータに、使用したいCHOP Networkノードのパスを入れる。

3 CHOP Networkノードの中に、GeometryやFetchなどのノードを作成し、各ノードパスを指定するパラメータを使用して任意のノードを入力する。

上記のようなパターンで、実際に処理を行う各種ネットワークノードを孤立させ、任意の場所・タイミングで呼び出すことができるようだ。
VOP Network
VOP Networkは、入力されたデータから、内部に用意されたGlobal Variablesノードのタイプに応じた入力値を使用して処理を行う。
外部から呼び出す際は、VOP SOPノードからVOP Networkのパスを指定する。
例外のネットワーク
SHOP Networkは、マテリアルの作成のみを受け持つので、直接外部からオブジェクトを読み込んで何かするためのノードが用意されていないようだ。