2010/11/9 Na-7
2010/11/27 Na-7
 

技術資料一覧に戻る

 

SoftimageのシミュレーションモデルをXNAで動かす

注意 この資料は、筆者が自らの経験を記録したものであり、他人に勧めるものではありません。

この資料を参考として行った行為がいかなる結果になろうとも、筆者は責任を負いませんので予めご承知おきください。

 

◎目次

◎概要
◎サポート対象
◎使用ツール
◎全体の流れ
◎詳細手順

 

 

 

◎概要

公式ランタイムライブラリ(XSIXNARuntime)を利用してSoftimageモデルをXNAで動かす場合、シミュレーション機能はサポートされず無視される(サポートされるアニメーションはTransform animationのみ)。

そこで、本稿ではNullを媒介としてシミュレーションの動きをスキンアニメに変換し、Softimageのシミュレーションの動きをXNAで再現する手順を記述する。

 

 

◎サポート対象

この手順はクロス/ソフトボディ/ヘア等のシミュレーションをサポート対象としている。

(パーティクル/流体/エクスプロージョン等はサポート対象外)

 

 

◎使用ツール

ツール名 入手元
XNA3.1(XNA GameStudio 3.1:ゲーム開発用フレームワーク) http://msdn.microsoft.com/ja-jp/xna/default.aspx
Softimage(旧名称XSI:Softimage Mod Tool 7.5:三次元CG製作用ソフトウェア) http://www.softimage.com/products/modtool/

 

 

◎全体の流れ

0.XNAViewerを準備する

1.スクリプトをインストールしてコマンドボタンを追加する

2.スクリプトを利用してクロスメッシュを作成する

3.風等のフォースを配置しクロスメッシュの動作を確認する

4.板ポリを新規作成する

5.板ポリをメッシュ→通常モデル→XNAモデルに変換する

6.クロスのNullをデフォーマとして板ポリのエンベロープを設定する

7.アニメーションマネージャでキャラクターキーセットを取得し、新規アクションを作成する

8.Publishする

9.XNAで動かす

 

 

◎詳細手順

XNAViewerを準備する
 
  こちらを参考にXNAViewerをセットアップする
  こちらを参考にXNAViewerを改修する(省略可能)

→この改修を省略する場合は、モデルを作成する都度、全マテリアルをDirectX向けシェーダに置換する必要がある(参考はこちら

   
スクリプトをインストールしてコマンドボタンを追加する
 
  こちらのサイトからXSIスクリプト(HairRig.xsiaddon)をダウンロードする
  「ファイル>アドオン>インストール」でスクリプトをSoftimageにインストールする
「表示>ツールバーのカスタマイズ」で利用可能コマンドの一覧からHairRigToolbarを選択し、シェルフやツールバー等の空きスペースにドラッグ&ドロップしてコマンドボタンを追加する
  コマンドボタンを追加したシェルフやツールバーの上にマウスカーソルを合わせて右クリックし「保存」を選択する(コマンドボタンが追加された状態が保存される)
   
スクリプトを利用してクロスメッシュを作成する
 
1 「モデル>作成>カーブ>CVでキュービックを描く」等で適当にカーブを描く

→細かいメッシュを作成したい場合は、ノットやポイントの数を増やすこと

追加したコマンドボタンを押してHairRigToolbarのメニューを開き、「fromCurve(Grid)(Cloth)」を選択する

→マウスカーソルがピックモードになる

対象とする全てのカーブを選択して右クリックし、ピックモードを終了するとクロスメッシュが作成される

→カーブは用済みなので非表示または削除可能

クロスのプロパティを適当に調整する
   
風等のフォースを配置しクロスメッシュの動作を確認する
 
1 (クロスメッシュを選択した状態で)「シミュレート>フォース>風」を選択し、風フォースを追加する
プレイバックパネルの再生ボタンを押してクロスメッシュの動作を確認する

→動作が気に入らない場合は、クロスメッシュや風フォースのプロパティを調整する

→クロスにファンや渦巻等のフォースを適用する場合は、「HairMesh→Polygon Mesh→ClothOp」の「フォースタブ」の「外力係数」を調整すること

   
板ポリを新規作成する
 
「モデル>取得>プリミティブ>ポリゴンメッシュ>グリッド」で板ポリゴンを取得する
板ポリのプロパティを調整し、長さやサブディビジョンをクロスメッシュに合わせる
(板ポリを選択した状態で)「モデル>モデル>新規モデル」を選択し、板ポリをベースに新規モデルを作成する

→必要に応じてモデル名を変更する

   
板ポリをメッシュ→通常モデル→XNAモデルに変換する
 
(キーボードの「8」を押してエクスプローラを起動し、新規モデルを選択した状態で)「XNA Game Studio>Convert to XNA Model」を選択し、板ポリをXNAモデルに変換する
HairMesh配下のnullを全て選択し、「新規モデル→grid」配下にドラッグ&ドロップで移動する

→XNA連携時は、モデル配下の単一ツリー内に全ノードを含める必要があるため、この手順は必須

   
クロスのNullをデフォーマとして板ポリのエンベロープを設定する
 
(板ポリを選択した状態で)「アニメート>デフォーム>エンベロープ>エンベロープの設定」を選択し、表示された質問に「はい」と答える

→マウスカーソルがピックモードになる

「新規モデル→grid」配下のnullを全て選択する
右クリックでピックモードを終了すると、エンベロープが設定される

→成功すると板ポリのポイントがカラフルになる

   
アニメーションマネージャでキャラクターキーセットを取得し、新規アクションを作成する
 
(板ポリを選択した状態で)「XNA Game Studio>Manage Animation」を選択し、アニメーションマネージャを起動する

→自動的にキャラクターキーセットが作成されてKeyableParamsウィンドゥも開くので、null.kine.local.posx等が追加されていることを確認する

→アニメーションマネージャのキャラクターキーセット一覧にキャラクターキーセット(Model.KeyableParams等)が追加されていることを確認する

Newボタンを押して「NewAction」を追加する
     
   
Publishする
 
(板ポリを選択した状態で)「XNA Game Studio>Publish Models」を選択し、ファイルの出力先パスとモデル名を指定する

→例:C:\Documents and Settings\username\My Documents\Visual Studio 2008\Projects\XNAViewerTest1\SOFTIMAGE_XNAViewer\Content\Models\SkinModel01.xsi)

   
XNAで動かす
 

以下はXNAでの操作

予め準備したサンプルプロジェクト「XNAViewer」を開く
ソリューションエクスプローラの「SOFTIMAGE_XNAViewer→Content→Models」で右クリックし、 「追加>既存の項目」でPublishしたファイルを選択する

→選択前に、オブジェクトの種類を「すべてのファイル」としてフィルタを解除する

追加したファイルのプロパティを確認する

→Content ImporterがCrosswalk Importerに、Content ProcessorがCrosswalk Model ProcessorになっていればOK

LoadContent()内の
Models.Add(new ModelAsset("Content/Models/Robot_Articulated", content));
のアセット名を、先の名称に変更する
(例:Models.Add(new ModelAsset("Content/Models/SkinModel01", content));)
ビルドしてプログラムを実行し、パッドを操作してアニメーションを開始する

 

inserted by FC2 system