SideFXのコンテンツライブラリからダウンロードしたファイルをランスルーで紹介していきたいと思います。Houdiniを始めたばかりの方にとってはシーンを見るのもなかなか大変ですよね。
今回ご紹介するのはオオハシのリグサンプルです。
このサンプルファイルは、実はKinefxを使ったジョイントの作成からウェイト、リグ等一連の内容を網羅しているのでとてもわかりやすいサンプルとなっています。
ちなみにAPEXを使用した基本機能に関しては下記で説明しているのでぜひご参照ください。
Houdini20.5 リグ用のスケルトンを準備するパート1
Houdini20.5 リグ用のスケルトンを準備するパート2
Houdini20.5 リグ用のスケルトンを準備するパート3
Houdini20.5 リグ用のスケルトンを準備するパート4
SideFXコンテンツライブラリからファイルをダウンロードします。
https://www.sidefx.com/contentlibrary/toucan-rig/
ダウンロードしてToucan_Rig_With_Groom.hipファイルを開きます。
この中のTucan_Rigネットワーク内をみていきます。
Tucan_Rigをダブルクリックして中に入るとこのような形で整理整頓されたネットワークが表示されます。とてもわかりやすいですね。
では、上から見ていきましょう!
一番上のImport Meshではオオハシのモデルデータを読み込んでいます。ここがすべてのスタートです。
次にこのエリアでは、KineFXを使用し、骨を作成していきます。
skeltonノードで右半分のジョイントを作成しています。
その横のSubnetでは目のジオメトリを使用してアイジョイントを作成し、その向きを計算しています。
目のジョイントをスケルトン構造に追加し、親子関係を追加します。
反転コピーしたいジョイントをグループ化し、その後ジョイントをミラーコピーしています。
ジョイントを作成したら、これをモデルデータと関連付けするためにウェイトをキャプチャします。
CAPTURE subnetでは、部位に分けてウェイトをキャプチャしブレンドしています。
Base Skeltonの後、Captureとは別にGuide Skeltonを作成しています。
このガイドを元にタグ付けを行いリグの準備を行います。
Guide Skeltonでの工程は以下になります。
リグのジョイントに色を設定しやすくするために、Cdアトリビュートを使用してコントロールの色を設定します。これにより、リグの各部分を視覚的に区別しやすくなり、操作や識別が簡単になります。Cdアトリビュートは、Houdiniでカラー情報を保持するための標準的なアトリビュートです。
次にスケルトンにプロパティを設定することで、リグ内のコントロールに使用するメタデータを定義できます。
rordはAPEXジョイントの回転順序(Rotation Order)、scaleinheritanceはスケールの継承に使用します。
その後、APEX Autorig Componentで使用するためのタグ付けを行います。
この工程の最後としてガイドスケルトンにロケーターを追加して、Autorig Compoientで作成される新しいコントロールを配置できるようにします。
Blendshapeセクションではジオメトリを変形して、Blendshapeのターゲットを作成しています。
まばたきなど。
ここまで用意した要素をPack Folderでまとめます。
Pack Folderは、ディスク上のディレクトリ構造に似たフォルダー構造でキャラクター要素を整理するために使用されます。
Pack Folder SOPの 2 番目の入力は、パックされたフォルダ構造に追加する複数のキャラクタ要素を受け取ります。要素が Pack Folder SOP に接続されると、要素が接続された順序で Pack Folder SOP にNameパラメータが自動的に作成されます。Name パラメータには、入力ノードの名前が自動的に設定されます。この例では、次のようになります。
Packed character formatの詳細はこちら
ここでは別に作成したグルーム用モデルもキャラクタコンテナにいれています。
Rig Treeビューをみると下記のようになっています。
Rig Treeを開くには新しいタブアイコン(+マーク)をクリックし、「New Pane Tab Type」▸「Animation」▸「Rig Tree」を選択します。
ここから先はAPEXによるリグのセットアップになります。
まずはAPEX Autorig Componentをいくつか使用して必要なリグのセットアップを行っていきます。
APEX Autorig Componentを選択するとツール選択がAnimateに切り替わります。
これが選択されることで、Autorig Compoientで作成されるコントローラーを選択しアニメーションが可能になります。
1つ目はfktransformで2つ目はbinddeformです。
fktransformコンポーネントはスケルトンジョイントをAPEXジョイントに変換します。
指定したAPEXジョイントのrotateコンポーネントがプロモートされ、ビューポートで操作できるようになります。
この時点でRig TreeをみるとBase.rigが追加されました。
bonedeform Rig Componentは、スケルトンにキャラクタースキンを追加します。
3つのAutorig Compoientはtransformdriverです。
transformdriver は非常に汎用性の高いコンポーネントで、新しいコントロールの追加や、コントロールのペアレント設定、コンストレインを行うことができます。ここでは、ルート、骨盤(pelvis)、胸(chest)、そしてくちばしの先端に配置するロケーターのコントロールを設定しています。これらはすべてリグ内で親子関係が設定され、他のコントロールを駆動します。
背骨(spine)と首(neck)は、spline コンポーネントを使用してセットアップされています。
ルート、先端(tip)、および駆動させたいジョイントを指定するだけで、コントロールが簡単に設定されます。
次がmultiIKです。
multi IK は、3つ以上のジョイントを持つIKチェーンを解決することができます。
このコンポーネントはセグメントもサポートしており、セグメントとはスケルトンに設定されたタグのグループを指します。例えば、L_leg や R_leg のようなタグです。このコンポーネントは各タグに対してループ処理を行い、それぞれにIKセットアップを構築します。
つまり、複数のIK(両手、両足等)を1つのノードでセットアップすることができます。
このようにルート、Pole Vector、Targetとタグを指定し、両足まとめてIKリグをセットアップしています。
次はもういちどTransfordriverが設定されています。
ここでは、デフォルトのワールドスペースに配置されたロケーターを使用して、ヒップ用の新しいコントロールを設定しています。これらのコントロールによってヒップが駆動されるようになります。この方法により、コントロールをフラットにしてアニメーターが操作しやすくしています。
次は、lookat コンポーネントを使用して目のセットアップを行っています。lookat の簡単な設定方法は、駆動されるオブジェクトを追加し、ターゲット、ドライバー、アップのカスタム名を追加するだけです。これにより、必要なコントロールが自動的に設定されます。もしコントロールの配置をさらに詳細に制御したい場合は、同じ名前でコントロールをガイドスケルトン (guide.skel) に追加してください。
blendshape は、キャプチャメッシュ上にあるブレンドシェイプを表示します。
各ブレンドシェイプのコントロールは、parent タブで親子関係を設定することができます。ブレンドシェイプの名前と、それを接続したい親の名前を入力するだけです。
ビューポートで見た際にできているこのような球状のコントローラーを選択して左右にするとBlendshapeを呼び出すことができます。これは喉部分のBlendshapeです。
モデルはスケルトンにバインドしやすいように口が開いた状態になっていますが、deltamushによりリグのデフォルト状態が口が閉じた状態にできるように追加されています。(この段階では閉じてません)
deltamush は一般的に使用することで、bonedeform の後にスキンのデフォーメーションを滑らかにし、不自然な形状の崩れを軽減します。
Packfolder後のbindからこのdeltamushまで、すべてが単一ノードであるAPEX Autorig Componentにて行われています。
次は、APEX Configure Controlsを使用します。
このノードを使用すると、APEXリグのコントロールの外観や動作を設定できます。外観は、あらかじめ用意されたコントロール形状や外部の形状ソースによって調整することが可能です。
set_control_shapesでは、ほとんどのリグコントローラーの形状を決定しています。これにより、すべてのコントロールの外観を一箇所でまとめて管理できるので便利です。また、カスタムコントロールを設定することも可能です。
コントローラーを設定する前まではリグの形状は特に整えられていませんでしたが
このノードによってアニメーションしやすい形状が設定されています。
Shapeの形状はデフォルトでかなり用意されていますし、カスタムも使用することができます
次もAPEX Configure Controlsを使用し、オオハシの一部のコントロールのトランスフォーム制限を設定します。
くちばしと翼には「ソフト」リミットが設定されており、これらはポーズステートのCtrl+GでAnimate Settingsウィンドウを表示し「Enforce Transform Limits」のトグルが有効になっている場合にのみ作用します。
一部のコントロールには「ロック」されたリミットがあります。これらのリミットは、「変形制限を適用」のトグルが有効かどうかに関係なく、常に適用されます。
次にここに羽根リグを追加します。
グルーム自体は別のファイルで行われており、ここは設定されたGroomファイルがキャッシュされています。
グルーム解説に関してはHoudini20.5 オオハシのグルームサンプルの歩き方をご参照ください。
Stashは入力ジオメトリをキャッシュし、入力を切断しても、キャッシュをノードの出力として使用します。
ここではグルームがそのまま読み込まれています。
アニメーターの方がアニメーション作成するときに、羽根がない状態だと少し物足りない感じがしますよね
特に、鳥のような生物では、羽がキャラクターの特徴を大きく左右するため重要です。
羽根があることでシルエットの表現が大幅に向上します。
羽の動きをプレビューするだけでなく、それを制御し、アニメーション化できる状態になります。
では、groom_rig subnetの中に入ってみます。
はじめにAPEXでリグを作るためにPackされていたキャラクタを一度Unpackします。
ここではシェイプと取り出しています。
羽の取り付けに必要な接線アトリビュートを作成します。
次にGroupノード2つは羽根を通して翼の皮膚が見えてしまうことがあるため、翼のメッシュを非表示にします。
再度Pack Folderを使用し、シェイプをキャラクタコンテナにいれます。
再度UnpackしてGroomPoseのシェイプを取り出します。
ここにグルームを追加していきます。
このSubnetの2番目の入力にはグルームが追加されていました。
この後使用するAPEX Add Groomには組み込みの最適化機能がなく、グルームをそのまま使用することが想定されています。
そのため、アニメーションパフォーマンスを向上させるために再サンプリングが行われています。
次に羽根コントロール用のマスクを作成します。
読み込んだグルームとの比較
Guide Groomを使用し、アニメーション用に最適化したグルームをGuide Groomに接続し、リグ用にシェイプに設定しています。
そのためにリグ用シェイプも再度Unpackしています。
グルーム用ポーズとリグ用ポーズは大きく異なっています。このため、少し処理が必要です。
まずはGuide Deformをしようして簡単な変形行い、グルームを新しいポーズにリラックスさせます。
「relax_groom」の中身では下記のようにリラックスを実行しています。
次にFeather Surfaceで、羽根プリミティブをポリゴンサーフェスに変換します。羽根プリミティブを入力として受け取り、羽根のポリゴン表現を生成します。
グルーム用ポーズの羽もポリゴン化し、それをRest として保存します。
これをAPEXキャラクタ、Groom、羽根ポリゴンと一緒にAPEX Add Groomに接続します。
APEX Add Groomでは、ポリゴンサーフェスが自動的に生成され、リグに追加されます。これらは、アニメーターがアニメート状態で見ることになるものです。これらのポリゴンサーフェスは、APEX Scene Invokeを使用してアニメーションされたシーンから取得し、さらなる処理、シミュレーション、レンダリングに利用できます。
元のカーブは再サンプリングされ、リグの一部としても出力されます。これらは、サーフェスを変形させるために使用されるデフォーマーの必須要素です。
カスタムポリゴンサーフェス(通常はFeather Surfaceを使用して生成)を3番目の入力を通じて入力することもできます。これにより、ポリゴンサーフェスに対してカスタマイズした調整を加えることが可能です。
これでアニメーターの方が表示しながら軽快に操作できる羽根を作ることができました。
Add Groomでは羽の動きをプレビューするだけでなく、それを制御し、アニメーション化するためのセットアップを行うことも可能です。
Add GroomノードControl Groupsを追加し、Groupの横の選択アイコンをクリック後、いくつかの羽を選択すると、それらがガイドコントロールに変わります。
作成したガイドを選択し、回転すると、羽の間や羽全体にわたって非常に滑らかな補間が行われ、素晴らしいカーブが生成され、スタイリングに役立ちます。
これで羽根用のリグも追加することができました。
Sceneを使用してここまでの結果を自由に試すことができます。
Ctrl +Gでアニメーション設定ウィンドウを表示し、使用することも可能です。
Scene AnimateノードのReset Animationで変更したポーズをいつでも戻すことができます。
ここでここで、シーンアニメートのデフォルトポーズが設定されます。
ここでマテリアルがセットアップされます。
最後のパートはアニメーションパートです。
Houdiniのアニメーションワークフローに関しての詳細はHoudini アニメーションワークフローをご参照ください。
APEX Scene Add Character SOPは、キャラクター要素をパックしてキャラクターとしてまとめ、APEX Scene Animate SOPのアニメート状態で、シーン内のキャラクターを表示、ポーズ、およびアニメーションすることができます。
最後にAPEX Scene Invoke SOPを使用して、シーン内のアニメーションを再生することができます。
なぜ最後にAPEX Scene Invoke SOPが必要なのかというと、Scene Animate SOPだとシーン内のアニメーションは、アニメートステート状態の場合、Scene Animate SOP上で再生できますが、アニメート状態を終了すると、アニメーションの再生はできません。アニメート状態以外でアニメーションを再生するには、APEX Scene Invoke SOPを使用してください。
animateノードにDisplayフラグを設定し、Animateツールを使用して全てのリグを呼び出しぜひアニメーションしてみてください!
こちらで再生される素晴らしいオオハシのアニメーションを作ってみましょう♪
https://www.sidefx.com/products/whats-new-in-h205/animation/