◎概要
公式ランタイムライブラリ(XSIXNARuntime)を利用してSoftimageモデルをXNAで動かす場合、シミュレーション機能はサポートされず無視される(サポートされるアニメーションはTransform
animationのみ)。
そこで、本稿ではNullを媒介としてシミュレーションの動きをスキンアニメに変換し、Softimageのシミュレーションの動きをXNAで再現する手順を記述する。
◎サポート対象
この手順はクロス/ソフトボディ/ヘア等のシミュレーションをサポート対象としている。
(パーティクル/流体/エクスプロージョン等はサポート対象外)
◎使用ツール
0 |
XNAViewerを準備する |
|
|
1 |
こちらを参考にXNAViewerをセットアップする |
|
2 |
こちらを参考にXNAViewerを改修する(省略可能)
→この改修を省略する場合は、モデルを作成する都度、全マテリアルをDirectX向けシェーダに置換する必要がある(参考はこちら) |
|
|
|
1 |
スクリプトをインストールしてコマンドボタンを追加する |
|
|
1 |
こちらのサイトからXSIスクリプト(HairRig.xsiaddon)をダウンロードする |
|
2 |
「ファイル>アドオン>インストール」でスクリプトをSoftimageにインストールする |
|
3 |
「表示>ツールバーのカスタマイズ」で利用可能コマンドの一覧からHairRigToolbarを選択し、シェルフやツールバー等の空きスペースにドラッグ&ドロップしてコマンドボタンを追加する |
|
4 |
コマンドボタンを追加したシェルフやツールバーの上にマウスカーソルを合わせて右クリックし「保存」を選択する(コマンドボタンが追加された状態が保存される) |
|
|
|
2 |
スクリプトを利用してクロスメッシュを作成する |
|
|
1 |
「モデル>作成>カーブ>CVでキュービックを描く」等で適当にカーブを描く
→細かいメッシュを作成したい場合は、ノットやポイントの数を増やすこと |
|
2 |
追加したコマンドボタンを押してHairRigToolbarのメニューを開き、「fromCurve(Grid)(Cloth)」を選択する
→マウスカーソルがピックモードになる |
|
3 |
対象とする全てのカーブを選択して右クリックし、ピックモードを終了するとクロスメッシュが作成される →カーブは用済みなので非表示または削除可能 |
|
4 |
クロスのプロパティを適当に調整する |
|
|
|
3 |
風等のフォースを配置しクロスメッシュの動作を確認する |
|
|
1 |
(クロスメッシュを選択した状態で)「シミュレート>フォース>風」を選択し、風フォースを追加する |
|
2 |
プレイバックパネルの再生ボタンを押してクロスメッシュの動作を確認する
→動作が気に入らない場合は、クロスメッシュや風フォースのプロパティを調整する
→クロスにファンや渦巻等のフォースを適用する場合は、「HairMesh→Polygon Mesh→ClothOp」の「フォースタブ」の「外力係数」を調整すること |
|
|
|
4 |
板ポリを新規作成する |
|
|
|
|
5 |
板ポリをメッシュ→通常モデル→XNAモデルに変換する |
|
|
1 |
(キーボードの「8」を押してエクスプローラを起動し、新規モデルを選択した状態で)「XNA Game Studio>Convert to XNA
Model」を選択し、板ポリをXNAモデルに変換する |
|
2 |
HairMesh配下のnullを全て選択し、「新規モデル→grid」配下にドラッグ&ドロップで移動する
→XNA連携時は、モデル配下の単一ツリー内に全ノードを含める必要があるため、この手順は必須 |
|
|
|
6 |
クロスのNullをデフォーマとして板ポリのエンベロープを設定する |
|
|
1 |
(板ポリを選択した状態で)「アニメート>デフォーム>エンベロープ>エンベロープの設定」を選択し、表示された質問に「はい」と答える
→マウスカーソルがピックモードになる |
|
2 |
「新規モデル→grid」配下のnullを全て選択する |
|
3 |
右クリックでピックモードを終了すると、エンベロープが設定される
→成功すると板ポリのポイントがカラフルになる |
|
|
|
7 |
アニメーションマネージャでキャラクターキーセットを取得し、新規アクションを作成する |
|
|
1 |
(板ポリを選択した状態で)「XNA Game
Studio>Manage Animation」を選択し、アニメーションマネージャを起動する →自動的にキャラクターキーセットが作成されてKeyableParamsウィンドゥも開くので、null.kine.local.posx等が追加されていることを確認する
→アニメーションマネージャのキャラクターキーセット一覧にキャラクターキーセット(Model.KeyableParams等)が追加されていることを確認する |
|
2 |
Newボタンを押して「NewAction」を追加する |
|
|
|
|
|
|
8 |
Publishする |
|
|
1 |
(板ポリを選択した状態で)「XNA Game
Studio>Publish Models」を選択し、ファイルの出力先パスとモデル名を指定する
→例:C:\Documents and Settings\username\My Documents\Visual Studio
2008\Projects\XNAViewerTest1\SOFTIMAGE_XNAViewer\Content\Models\SkinModel01.xsi) |
|
|
|
9 |
XNAで動かす |
|
以下はXNAでの操作 |
− |
1 |
予め準備したサンプルプロジェクト「XNAViewer」を開く |
|
2 |
ソリューションエクスプローラの「SOFTIMAGE_XNAViewer→Content→Models」で右クリックし、
「追加>既存の項目」でPublishしたファイルを選択する
→選択前に、オブジェクトの種類を「すべてのファイル」としてフィルタを解除する |
− |
3 |
追加したファイルのプロパティを確認する →Content ImporterがCrosswalk Importerに、Content ProcessorがCrosswalk Model
ProcessorになっていればOK |
|
4 |
LoadContent()内の
Models.Add(new ModelAsset("Content/Models/Robot_Articulated", content));
のアセット名を、先の名称に変更する
(例:Models.Add(new ModelAsset("Content/Models/SkinModel01", content));) |
|
5 |
ビルドしてプログラムを実行し、パッドを操作してアニメーションを開始する |
|