HIKCharacter を視覚的にキャラクタライズする

HumanIK API によって提供されている関数を呼び出すことでランタイム コード単独で HumanIK キャラクタライゼーションを正常に作成することもできますが、通常は組織内のアーティスト、アニメータ、またはテクニカル デザイナに視覚的なデザイン ツールでキャラクタライゼーションを作成してもらう方がシンプルです。これによりアーティストはフィードバックをすぐに得られるようになり、IK またはリターゲット アニメーションをキャラクタに適用してキャラクタライゼーションをテストすることができるようになります。また、アーティストがこのテストの結果に応じてキャラクタライゼーションを簡単に調整できるようになります。アーティストがキャラクタライゼーションに満足したら、実行時にゲームにロードするファイルにキャラクタライゼーションを書き出すことができます。

視覚的なキャラクタライゼーションのオプション

アーティストは次のいずれかの視覚的なツールを使用して HumanIK キャラクタライゼーション ファイルを作成することができます。

MotionBuilder

MotionBuilder と HumanIK は同じコア テクノロジから開発され、ビルトイン生体力学モデルへのスケルトンのマッピングに対して多くの同じ要件を現在も共有しています。MotionBuilder で作成した、動作する Biped または Quadruped のキャラクタライゼーションは HumanIK API で使用したときも同様に動作するはずです。ただし、HumanIK API を使用してロードできるファイルに MotionBuilder キャラクタライゼーションを書き出すには、まず使用しているバージョンの MotionBuilder 用の HumanIK プラグインをビルドしてインストールする必要があります。

MotionBuilder HumanIK ソルバ プラグイン」を参照してください。

Maya 2012 以降

2012 リリース以降の Maya には、キャラクタ スケルトン用の HumanIK キャラクタライゼーションの作成、HumanIK コントロール リグを使用したキャラクタのアニメート、HumanIK SDK で使用可能なバイナリ ファイルへのキャラクタライゼーションの書き出しに使用することができるツールが含まれています。

HumanIK Characterization Tool

組織内でサポートされているバージョンの MotionBuilder または Maya を使用していない場合でも、HumanIK SDK に付属の Characterization Tool を使用して HumanIK キャラクタライゼーションを視覚的に作成することができます。

Characterization Tool は次のような形で提供されています。

  • Maya 2011 のプラグイン。
  • Softimage 2011 のプラグイン。
  • FBX ファイルのコンテンツからキャラクタライゼーションを作成するスタンドアロン バージョン。

これらのバージョンの Characterization Tool は、Windows プラットフォームに対応した HumanIK パッケージの tools フォルダ内のサブフォルダに含まれています。各バージョンにはインストールと使用方法について説明するドキュメントが付属しています。このドキュメントはまた Characterization Tool のインタフェースからも開くことができます。

アーティストは、パイプラインに最適なバージョンを選択できます。

手順 1. 視覚的なツールでキャラクタライゼーションを作成、保存する

アーティストは次の操作を行わなければなりません。

  1. デフォルトの T スタンス」に示すように、デフォルトの T スタンスでキャラクタのスケルトンをセットアップします。

    Quadruped キャラクタには特別な要件があります。Quadruped キャラクタに HumanIK を使用する場合は、「Quadruped に HumanIK を使用する」に示す重要な情報を参照してください。

  2. キャラクタのボーンとHumanIK で認識されるノードの間にマッピングを作成します。

    使用しているツールと、どのリリースのツールをインストールしたかに応じて、この手順の実行方法が若干異なる場合があります。ツールのマニュアルを参照してください。すべてのツールが次のような視覚的なインタフェースを使用しています。

    キャラクタのスケルトンのボーンを、この Figure ビューに表示されたさまざまなノードにマップしなければなりません。ボーンに正しくマップされると、各ノードの表示が緑色に変わります。

    Characterization Tool が自動的にキャラクタのニュートラル スタンスのジオメトリを検証し、検出したエラーや警告を報告します。

  3. キャラクタライゼーションをテストします。

    • MotionBuilder、または Maya 2012 以降: キャラクタに新しいコントロール リグを作成して、キャラクタのエフェクタを異なる位置に移動したり、Reach や Pull の値を変更して結果をテストすることができます。また、異なるキャラクタに記録されたアニメーションのターゲットとして新しいキャラクタを設定することもできます。
    • Characterization Tool: Characterization Tool ウィンドウの Test タブで、モデリングやスキニングを行わずに新しくキャラクタライズしたスケルトンに対してさまざまなアニメーションをリターゲットした結果を確認することができます。ツールにはいくつかの基本的なサンプル クリップが用意されています。また、ユーザ独自のアニメーション クリップを追加することができます。

  4. 新しいキャラクタライゼーションをファイルに保存するか、書き出します。このファイルのデータを使用して、HumanIK の初期化コードで完全にキャラクタライズされた新しい HIKCharacter オブジェクトを作成します。これは使用しているツールに応じて異なる(ただし同様の)方法で行います。

    • MotionBuilder: Properties ウィンドウでキャラクタの HumanIK プラグインを開き、Save HIK Character ボタンをクリックします。これによりバイナリ .hik ファイルでキャラクタライゼーションが保存されます。
    • Maya または Characterization Tool: キャラクタライゼーションを作成したウィンドウまたはそのメイン ドロップダウン メニューに、キャラクタ定義をバイナリ .hikc ファイルに保存または書き出すことができるコントロールがあります。アーティストは、ランタイムに使用されるターゲット プラットフォームに合わせて、リトル エンディアンまたはビッグ エンディアン バイト オーダーでこのファイルを保存する選択ができます。このファイルのエンディアンがランタイムに使用されるプラットフォームのエンディアンに一致しない場合、HumanIK は自動的にデータのバイト オーダーを切り替えます。

      このファイルにはアーティストまたはリガーが各 HumanIK ノードにマップした、キャラクタのスケルトンのボーンの名前を示す XML ファイルが付属する場合があります。FK アニメーション システムと HIKCharacterState の間で、ランタイムにアニメーション データを変更するコードを記述するときに、このファイルの情報を使用できます。「インバース キネマティックス ソルバ」および「リターゲットのソルビング」を参照してください。

手順 2. 書き出されたファイルから HIKCharacter をロード、作成する

ゲーム内で実行時に HumanIK キャラクタを作成するために、アーティストによって作成されたバイナリ ファイル内のデータを使用するこの手順は、作成したファイルのタイプに応じて若干異なります。

下記のようにキャラクタライゼーションをロードすると、HIKCharacter を使用できるようになります。引き続き「初期化」の手順に従って、キャラクタに必要なその他の HumanIK オブジェクトをセットアップします。

.hik ファイル(MotionBuilder から)

HIKLoadCharacter() 関数を呼び出して、.hik ファイルに含まれているデータから新しい HIKCharacter を作成します。この関数には次の引数が必要です。

  • キャラクタを含む .hik ファイルのパスおよびファイル名
  • HumanIK の評価バージョンを使用している場合は、Autodesk, Inc.によって発行されたライセンス キー。「HumanIK のライセンス キーを設定する」で推奨されるように、ソース コード ファイルに autodeskmwkey.h ファイルをインクルードした場合は、定義済みの値 AutodeskCustomerString を使用できます。HumanIKのフル ライセンス バージョンを使用している場合は、null 値を渡すことができます。

  • HIKCharacter にメモリを割り当てるために呼び出されるコールバック関数へのポインタ。標準の malloc 関数、または malloc と同じ種類の定義を満たす任意のカスタム メモリ割り当て方法を指定できます。「 HumanIK オブジェクトとメモリ管理」を参照してください。

例:

HIKCharacter * MyChar = HIKLoadCharacter(
                                   "C:\data\hero.hik",
                                   AutodeskCustomerString,
                                   &malloc);

または、次のセクションで概説されている手順を代わりに使用して、キャラクタ データをバイナリ ファイルのコンテンツから読み込むことができます。

.hikc ファイル(Maya または Characterization Tool から)または .hik ファイル(MotionBuilder から)

  1. プロジェクトで使用しているファイル管理インタフェースを使用して、キャラクタ用に作成された .hikc ファイルをメモリにロードします。
  2. HIKCharacterDefinition クラスの新しいオブジェクトを作成します。例:

  3. HIKReadFromStream() 関数を呼び出して、.hikc ファイルに含まれているデータから新しい HIKCharacter を作成します。この関数には次の引数が必要です。

    • 上記で作成した HIKCharacterDefinition オブジェクトへのポインタ。このオブジェクトは新しいキャラクタで使用されるノードと、Degrees of Freedom (DOF)およびペアレント オフセットを持つノードで示されます。
    • 書き出されたファイルから読み込まれたコンテンツの、メモリ内での場所を示すポインタ。

    • ファイル ストリームのバイト単位のサイズ。

    • HIKCharacter にメモリを割り当てるために呼び出されるコールバック関数へのポインタ。標準の malloc 関数、または malloc と同じ種類の定義を満たす任意のカスタム メモリ割り当て方法を指定できます。「 HumanIK オブジェクトとメモリ管理」を参照してください。

    • メモリを割り当て解除するために呼び出されるコールバック関数へのポインタ。標準の free 関数、または free と同じ種類の定義を満たす任意のカスタム メモリ割り当て解除方法を指定できます。「 HumanIK オブジェクトとメモリ管理」を参照してください。

    • HumanIK の評価バージョンを使用している場合は、Autodesk, Inc.によって発行されたライセンス キー。「HumanIK のライセンス キーを設定する」で推奨されるように、ソース コード ファイルに autodeskmwkey.h ファイルをインクルードした場合は、定義済みの値 AutodeskCustomerString を使用できます。HumanIKのフル ライセンス バージョンを使用している場合は、null 値を渡すことができます。

    例:

    HIKCharacter * MyChar = HIKReadFromStream(
                                       def,
                                       stream, 
                                       streamSize,
                                       &malloc,
                                       &free,
                                       AutodeskCustomerString, 
                                       );
  4. 手順 1 で開いたファイル ストリームを閉じます。