プロフィール

Na-7

Author:Na-7
SE(システムエンジニア)として約15年間システム系ソフト会社を勤めあげ、2008年3月退社。現在、ゲーム制作会社設立を目指して活動中。


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
董衡   董超
董衡(左図)、董超(右図)
魏の武将。ホウ徳の配下。荊州の戦いで形勢が不利になり、関羽に降伏しようとしたが、これを知ったホウ徳に殺害された。



◎トラックバック

トラックバックを頂いたのに、不覚にもしばらく気付いてなかったのですが、記事を拝見すると、私のブログは「分かりやすくてとてもいい」とありました。

自分のブログの評価を目にするのは初めてですが、まさかこのようなご好評を頂けるとは…dai.alphaさん、どうもありがとうございました!

ドイツでは参考書の入手や翻訳など大変そうですが、負けずに頑張ってください!!



◎XNAViewerプログラム解析

XNAViewerのプログラムは、以前ざっと見たことがあるのですが、プログラミングのリハビリを兼ねて、もう一度見てみましょう。


最初にModelAssetクラスを作成しています。ACLではモデルデータとアニメーションデータを別々のクラスで管理しますが、こちらはModelAssetクラスにまとめて管理するようです。

LoadContent()では、「Models = ~;」と「Models.Add(~);」でモデルデータを読み込んでいます。

Update()では、ゲームパッドの操作に応じてパラメータを変更しています。

Draw()では、「DrawModel(~);」でモデルを表示しています。


一見分かりにくいのは「Positionはカメラ座標だ」ということ。ではモデルのワールド座標はどこにあるかというと、

Models[CurrentModel].CrosswalkModel.Meshes[*].Effects[*].Parameters["World"]
(注:*は数値)

ここにあります。座標をセットする時は「~.SetValue(world);」のようにやります。


…恥ずかしい話ですが、プログラミング感覚をすっかり忘れていたため、ここまで把握する(というか思い出す)のに半日近くかかってしまいました(^_^;



◎ワールド座標のパラメータ名

DrawModel()を一見した時は、そのまま自作ゲームにコピーして流用できる部品かと思ったのですが、このままだとワールド座標が変更されないので、流用する場合は改修が必要ですね。

で、ワールド座標を渡してセットするよう改修したら、実行時にエラーとなりました。
…あれ?まだ何か忘れてるのかな?

effect.Parameters["World"].SetValue(world);

パラメータ名が違うかもしれないので、他にWORLD、world、VIEW、View、viewなどを試すと、Viewだけ正常に動作し、他はエラーとなりました。Viewパラメータが存在するのに、何故Worldがエラー?

シェーダの内容を確認すべく、Lambert.fxから呼び出されていたxsi_defaultvs.hlslの中身を確認すると、

float4x4 Model : WORLD;

とありました。Softimage添付のfxファイルはこれで統一しているようですが、ワールド座標のパラメータ名が「Model」というのは一般的なんでしょうか??

とりあえず、パラメータ名をModelに変更したら、エラーは出なくなりました。しかし、スケールや座標の値を適当に変更しても、画面に変化は見られません。

…まだ何か落とし穴が?それともやり方が根本的に間違ってる??



◎SASDataについて

プログラムを見てて気になるのが、XSISASContainerクラスのインスタンスであるSASDataです。DrawModel内に

// bind all other parameters
foreach (EffectParameter Parameter in effect.Parameters)
{
  SASData.SetEffectParameterValue(Parameter);
}

とあるので、このコードの前に

effect.Parameters["Model"].SetValue(world);

としておけばエフェクトパラメータを渡してくれると思ったのですが、違うようですね。


試しに

SASData.Model = transforms[mesh.ParentBone.Index];
SASData.Model = world; // この行を追加
SASData.ComputeModel();

このように記述してみましたが、これでも変化がありません。



◎比較用モデルを表示する

試行錯誤を続けるうちに、ある疑念が湧いてきました。コンテナのワールド座標を変更したとすると、カメラも同様に移動して、見た目が変わらないように見えるのでは?

この疑念は、ランタイムで表示したモデルと、ランタイムを使用せずに表示したモデルを、同時に画面表示すれば解明できます。

しかしXNAViewerプログラムに他のモデルを追加すると、Content Importerの選択肢に、標準インポータである「X File - XNA Framework」が存在しません。

標準インポータは「Microsoft.Xna.Framework.Content.Pipeline.XImporter」らしいので、これを参照設定で追加すると、メモリエラーなど怪しいエラーが続発。ひょっとして、ランタイムと標準インポータは相性が悪いので除外してるとか?

しかしその後XNAを再起動すると問題無く動作しました。インポータを追加したらXNAを再起動した方が無難かもしれません。

比較用モデル表示

ワールド座標を変更すると、XNA標準機能で表示したモデルは移動しますが、ランタイムで表示したモデルは移動しません。先程の疑念は晴れましたが、ランタイム表示モデルを移動する方法は謎のままです。


尚、ランタイム表示モデルは片方ずつアニメーションします。モデルを大量に表示して、同時アニメーションがどこまで耐えられるか評価テストをしたかったのですが、ワールド座標が変更できないと話になりません。



◎次回予告

ヘルプを見ても、この辺のことは全く触れられてないようなんですが、「その程度のことにいちいち説明はいらんだろう」ってことなんでしょうか?

…その程度のことが出来ずに詰まってる自分が情けなさすぎ(>_<)

できればさっさとクリアして、性能テストやACLとの比較などをしたいなぁと思っています。

スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
張昭
張昭
呉の文官の代表格。孫策臨終の際に、周瑜と共に孫権の補佐を託された。しかし孫権との折り合いは悪く、しばし意見が対立したが、剛直な性格で互いに譲らなかった。周囲から何度も宰相(丞相)に推されながら、孫権は最後までこれを認めなかった。



◎対象者は?

HPに記事をUPしました。

3D人型モデルをSoftimage Mod Toolで編集しXNAで動かす

XNA連携調査の集大成のようなもので、1ページの記事のボリュームは過去最大です。流用部分が多いとはいえ、数回書き直したのでそこそこ時間かかりました。

XNA連携に関するまとまった情報が少なかったので、このような記事を書いたのですが、改めて考えると、この記事が役に立ちそうな人は、「今から、XNAかSoftimageが次期バージョンアップを果たすまでの期間内に、XNAとSoftimageの連携を(新たに)始める人」ぐらいでしょう。

もしかして、対象者がほとんどいないのでは?(涙)



◎BVHファイルについて

今回は、BVHファイルのモーションを自作モデルに適用してみたいと思います。

BVHファイルは、モーション定義ファイルです。こちらの説明にあるように、主にモーションキャプチャーデータの保存に使われているそうです。



◎動機

機材揃えるの大変そうなので、自分でキャプチャーする気は今のところありません。

また、キャプチャデータの流用(適用)も、以前はさほど興味ありませんでした。理由は「他人が用意したモーションデータを自作モデルに適用するのは手間がかかりそうな気がするから」です。3Dテストプログラムの経験から「流用するよりも作った方が早そうだ」と思ってました。

しかしSoftimageでは「自作モデルをXNAで動くように調整するだけで結構大変」ということがわかりました。

「ここまで手間かかるなら、あと少し手間が増えても大差無いのでは?」

というわけで、BVHファイルの流用を試す気になりました。



◎理想のデータは?

モーションはボーンに連動するものなので、ネット上に公開されたBVHファイルは、モーションデータだけでなくボーンデータを含んだものが多いようです。

逆に考えると、ボーンデータが異なる複数のVBHファイルを、1つのモデルに適用するのは難しそうな気がします。
(不可能ではないと思いますが、調整が大変そう)

ということは、ゲーム制作者向けの「基本モーションセット」のようなものか、若しくは、同一のボーンで沢山のシンプルモーションが用意されていれば使いやすいのではないでしょうか?



◎データ検索

というわけで、国内外のサイトを適当に探したんですけど…結論から言うと、自分がイメージしていたようなものは、見付かりませんでした。今回は兵士だからキビキビとした動作が欲しかったのですが、逆に滑らかな動作ばかりでした。

モーションキャプチャーは「自然でリアルな動作」を目指したものなので、ダンス系やスポーツ系が多いのはわかりますが、たまには軍隊系なんてのがあっても…ダメ?(^^;

腕を除外するとか、部分的な流用も考えましたが、どうにも合わなさそうなので、三国志軍記への適用は諦めました。
3Dテストプログラムなら使えるかもしれません。



◎BVHファイル読み込み

ゲームへの適用は諦めましたが、後学のために、少しは試しておこうと思い、こちらのサイト後半のサンプルデータ(act04bvh.zip)をダウンロードしました。


モデルメッシュ作成済のシーンで「ファイル>読み込み>Biovisionファイル」とし、表示された画面でBVHファイルを指定してOKボタンを押すと、エクスプローラに新しい階層(act04)が追加されます。

BVHファイル読み込み後のエクスプローラ

これを選択してからアニメーションマネージャを開くと、アクションリストにact04_BasePoseとact04_Motionが追加されています。act04_Motionを選択して再生ボタンを押すと、派手に動くボーンアニメーションが再生されます。



あとは、自作モデルのエンベロープ設定時に、このボーンをデフォーマとして指定すればOKでしょう。

裾ボーンの調整等が面倒なのでこれ以上やりませんでしたが、実際にやると見た目はこんな感じになりそうです。

こ~ゆ~ハデな動きは、デモとしては良いのですが、ゲームには使えないんですよね~(^^;



◎追記

今回の調査で気になったサイトをちょっとだけ紹介します。

mocapdata.com

フリーモーションが4000件以上登録された国内サイト。
日本語選択可。アクターやファイルフォーマットの選択可。

試しにダウンロードしようとしたら、アカウント登録には成功したものの、メールアドレスorパスワード誤りでログイン不可でした。今回欲しいデータは無かったのでそのままスルー。



◎次回予告

前回ラストで、RokDeBone2はBVHファイル読み込みが出来ないようなことを書きましたが、これは間違いでした。ごめんなさい。まぁRokDeBone2なら、モーションは自作した方が早そうですけど…。

次回は、Softimageで作成したモデルをXNAで制御します。
まともなプログラミングは3か月ぶり?!

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
諸葛瑾
諸葛瑾
呉の軍政家。諸葛亮の兄。風格は堂々としていたが思慮深い上に人当たりが良く、孫権から絶大な信頼を寄せられた。
劉備への荊州返還や呉蜀同盟の使者となるなど外交的な働きが目立つ一方、関羽討伐戦や対魏戦などに参戦した。



◎近況

3年おきくらいに、X68000という古いパソコンで懐かしのBGMを聞いたりしますが、ついにPCM音源が壊れて、BGMがまともに聞けなくなりました。

まぁ20年近く前のパソコンが故障するのは当たり前。こんなこともあろうかと、確保していた予備機に交換したら、こちらはHDD認識せず。実家に戻って3台目を引っ張り出し、魔窟(押入れ)からFDを発掘して2日がかりで復旧作業。結局、HDD起動が再現できず、FDD起動で何とか復活。

FM&PCM&MIDIの同時演奏はこのパソコンぐらいなので、動かないと寂しいのですが、あと何年もつかなぁ?



◎中継ボーン要否

着物の裾にボーンを入れて、スカートの裾のようにひらひらできるようにします。RokDeBone2で作成した際は、6方向12本ボーンを入れて少ないと感じたので、今回は8方向16本追加するつもりです。本数が倍になるのは、中継ボーンが必要だからです。

槍の中継ボーン
中継ボーンの例

…ここまで書いて思ったのですが、Softimageでも中継ボーン必須でしょうか?(RokDeBone2は必須でした)

そもそも中継ボーンは、「階層は1つにまとめる必要がある」というXNAの制限をクリアするためのものです。しかし今はリグとシャドウリグを分けてるので、シャドウリグ階層が1つにまとまっていれば大丈夫かもしれません。

ちょっと試してみましょう。



◎中継ボーン削除実験

というわけで、槍チェインを中継ボーン無しで再作成し、XNAで表示すると、ちゃんと動きました。

槍中継ボーン無し(XNA)

しかしこれ本当に大丈夫でしょうか?いずれ思いもよらぬ所で問題になったりして…でもXNAのボーン数上限は58しかないので、中継ボーンの要否は早めに知っておきたいですね。

…まぁ所詮サンプルモデルだし、テストを兼ねてこのまま進めましょう。



◎裾ボーン追加

中継ボーン不要となったので、裾ボーンは8本の棒線だけになりました。

階層の配置場所はちょっと迷ったのですが、結局FL、L、BLをLThigh(左フトモモ)の下に、FR、R、BRをRThigh(右フトモモ)の下に配置しました(FBLR=前後左右)。
ここに配置すると、裾が足の動きに連動します。

FとBは、下記手順で両足の動きに50%ずつ連動します。

1.エクスプローラでFを選択
2.Constrain>向き
3.エクスプローラで連動対象(LThigh)を選択
4.ブレンドウエイトを設定(今回は0.5)
5.上記の要領で、FとBにLThighとRThighを0.5ずつ設定

コンストレインのブレンドウエイト設定

これでリグへのボーン追加が完了したので、後はシャドウリグへのボーン追加、エンベロープ設定等を実施すれば完了です。



◎下半身の仕上げ

エンベロープのデフォーマ指定は、これまでShadow_envelope_groupをマウス中ボタン選択してきましたが、このやり方だと裾ボーンの自動ウエイト設定がかなり乱れるので、裾メッシュのデフォーマは裾ボーンと首ボーンだけ、つまり必要最低限のものだけ個別指定しました。
本来は最初からこうすべきなんでしょうね(^^;

裾のデフォーム指定


また、体や足を動かすと、内側の衣服が外側の鎧や衣服にはみ出したりするので、頂点座標やウエイトを調整しました。

下半身調整完了

大きく動かすとまだちょっとはみ出たりしますが、練習なので細かいことは気にしません(笑)

RokDeBone2版は、全ての裾を個別に動かしていたので大変でしたが、今回は足の動きに連動するので微調整程度で済みそうです(^^)



◎アクション登録

Softimageにはコントローラーがあり、これを動かすと関連するボーンが一緒に動いてくれるので、比較的楽に動き(=アニメーション)を付けることができます。

しかし、コントローラーには向いてない動きがあります。例えば、腕を前に動かすだけならコントローラーでOKですが、両手を体の前方で合わせようとすると、腕が内側に折れて不自然になります。

こんな時はボーン操作で動きを付けるものと思いますが、あるフレームまでコントローラ操作で動きを付け、途中からボーン操作に切り替える方法がわかりません。

結局、コントローラで動きを付けた後、その状態でボーンにキーを付けて、コントローラのキーを全消去する、という方法で回避しました。コントローラからボーンに手動移行したわけですが、他に良い方法がありそうな気がします。



◎背中のコントローラ

下半身を動かし始めると、前述の回避策でも動かせないボーンが出てきました。どこかに連動してるのでしょうが、複雑すぎてチェックしきれません。しかし足元のコントローラだけではガニ股ポーズが付けられなくて困っていたら、足の方向を決めるコントローラが背中にあることに気付きました。

背中のコントローラ

こんな所に足のコントローラがあるとは…腕も背中のコントローラで制御すべきだったようです。まぁ、途中まで作っちゃったから、腕はこのまま続けちゃいましょう。



◎完成

キーのコピーや、フレームのサイズ変更によるアニメーション速度調整などはAnimation Editor の DopeSheetを利用しました。以前ブログに書いたので、説明は省略します。

というわけで、アニメーション登録が完了しました。



腰から首の間のボーンが回転できなくて、上半身の仕上がり具合がいまいちでした。コントローラ制御方式で作り直せば、もう少しマシになるかもしれません。下半身はコントローラ中心で動きを付けましたが、裾ボーンの連動具合は割といい感じでした。ただし前ダレにボーンを付けなかったのはちょっと失敗かも。

今回は練習なので、細部は気にしないでください。
お疲れさまでした~!



◎次回予告

これでやっとRokDeBone2と同レベルのことができるようになりました。Softimage始めて2か月半…こんなにかかるとは思いませんでした。(内2か月はXNA連携)

しかし手間暇かけて同レベルではつまらないので、RokDeBone2にできないこと…「モーション キャプチャーデータの適用(BVHファイル読み込み)」を試してみようと思います。どんな感じになるかワクワクしますね~(^^)

おっと、その前に書きかけのHP記事を仕上げて…って、半分ぐらい書き直す必要あるかも(^^;

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
丁奉
丁奉
呉将。甘寧、潘璋、陸遜の指揮下で抜群の武功を重ね、将軍にまで昇進した叩き上げの軍人。専横に走る孫チン誅殺に成功して軍部のトップにのぼりつめ、呉末期には宿老として重きをなした。



◎ニュートラルポーズ解除調整

SoftimageとXNAで掌の向きを合わせたいのですが、リグやメッシュのニュートラルポーズを解除しただけでは合いませんでした。

そういえば、手メッシュを移動回転させ、ニュートラルポーズ設定をしてからエンベロープ設定をした気がします。ということは、エンベロープの再設定が必要?

…しかしニュートラルポーズを全解除し、エンベロープを再設定してもダメでした。

最終的に手メッシュを90度回転させた状態で、Transformがスケール:1、回転:0、移動:0の状態にしたいのですが、Edit>フリーズやフリーズMでもダメ。う~ん…。

こんな調子で半日ほど粘って、ようやく「Transform>すべての変換をフリーズ」のコマンドに辿り着きました。

Transformフリーズ後(Softimage)   Transformフリーズ後(XNA)
フリーズ後のSoftimage(左図)とXNA(右図)

メッシュを移動回転後、このコマンドを実行すると、現在の状態がTransform初期値になります。XNAの初期値はこれで調整するのですね。これを知らなかったために、かなりの時間と労力を無駄にした気がしてヘコみます(>_<;

…いや、何事も苦労しないと身に付かないものです!
必要な過程であったと前向きに考えましょう!



◎ニュートラルポーズのまとめ

Softimageのニュートラルポーズ機能は、Transformのオフセット値を修正する機能です。しかしXNAにはこの機能が無いため、ニュートラルポーズ機能を使用するとSoftimageとXNAでズレが生じます。

この問題は、前項のように「Transform>すべての変換をフリーズ」でTransform初期値をフリーズすると解消します。今回はメッシュをリグに合わせてフリーズしましたが、逆のパターンも可能と思います。


一方、私のモデルでは「DefaultPoseを利用するとアクションが戻らない」という問題は残っているので、これを解決するために、フリーズ直後の状態で全てのリグとメッシュにニュートラルポーズを設定しました。

これで必要な時(ボーン追加時やエンベロープ設定時など)に手軽にニュートラルポーズに戻すことができます。もちろんアクションは保持されますし、XNAとのズレもありません。



◎新たな課題

問題をひとつクリアすると、次の課題が見えてきたりします。

掌の向きが合うようになって改めて気付きましたが、今の状態では、指を曲げることができません。これは、ボーン数を節約するために、シャドウリグ作成時のオプションを「シャドウフィンガーなし」としたからです。

このモデルは元々頂点数を節約するために、親指以外の4本の指をひとまとめにしてあります。兵士の指は、グーとパーだけ出来れば用が足りますからね。

しかしシャドウフィンガーを自動作成したら、指10本分のボーンが出来てしまうでしょう。関節を考慮すると、ボーン数をかなり多く消費してしまいます。

というわけで、これから親指と中指をシャドウリグに追加して、グーが出来るようにします。



◎指の追加

指のリグは既に存在するので、指のシャドウリグのみ追加します。手順は前回記述した通りです。

指シャドウリグ追加

XNAでもちゃんとグーを握れるようになりました。やりたいことが一発で出来たのは、久しぶりな気がします(笑)

※ワンポイントアドバイス
CreateShadowParts実行前に、シャドウリグを作成したいリグパーツ(ボーンの一部など)を選択する必要がありますが、チェイン(連結ボーン)を選択する際はrootに近い側から選択すると、実行時に元の階層の上下関係が反映されます。rootに遠い側から選択すると、同一階層に複数のボーンが作成されます。




◎リセット操作

リグの一括リセット操作は、これまでBiped配下のcontrols_group配下のノードをまとめて選択していましたが、ここには指のノードが登録されていないので、このままでは指がリセットされません。

しかしここに指を追加すると、余計なトラブルを引き起こさないか心配です。リセット専用のグループを別途作成し、そこに一括リセットしたいノードを全て登録するという方法も考えましたが、結局以下の方法にしました。

1.Biped_Shadow等を非表示にする
2.ビューポートでリグ全体を選択する
3.Transform>すべての変換をリセット
4.Biped_Shadow等を表示状態に戻す

若干面倒ですが、個別に選択するよりはマシでしょう。



◎ボーンの階層移動

槍ボーンは中指の先から伸ばしてしまいましたが、これだと槍が指の動きに連動して扱いにくいことを思い出したので、腕から延ばすことにしました。

リグ内のボーン階層移動をしたかったのですが、ドラッグ&ドロップで移動を試みるとエラーになります。そこで槍のエンベロープを削除し、Biped_ShadowのGlobalSRTやShadow_envelope_groupから槍ボーンを削除したのですが、この状態でも移動できません。まだどこかに槍ボーンの情報が残ってるのかなぁ?



◎ボーンの削除

この様子だと、削除して再作成した方が早そうなので、Biped内の槍ボーンを削除しようとしたのですが、それもエラーになりました。ありゃ~困ったね~(^_^;


ヘルプを見ると、意外なことが書かれてました。

チェインからボーンを1つずつ削除することはできませんが、チェインをブランチ選択すると、チェイン内のボーンをまとめて削除できます。」

ボーンを1つずつ削除できないって…ちょっとびっくりです。
これじゃ階層移動できなくて当然ですね。


しかしヘルプに後述されているように、ボーンのカットを試みても、全く変化しません。カットが機能してない感じです。

試しに他のコントロールやチェインルート等のノードをカットすると、カット操作と同時に階層構造が変化しました。しかしチェイン内の他のボーンをカットしても、階層構造が変化しません。やはり何らかの理由で、ボーンはカットできない状態のようですが、その理由は不明です。

ヘルプには他に「ボーンの長さをゼロに設定し、ボーンが削除されたように見せる方法」も紹介してますが、これだとゴミが残るようで嫌な感じです。他に方法は無いでしょうか?



◎続・ボーンの削除

調べていくと、「ボーンでチェインを分割」というコマンドがありました。

分割して一方を削除できないかと思ったのですが、このコマンドはチェインを2つに分けるのではなく、チェイン内部をサブチェインで区切るものでした。サブチェインを削除すると、以前の状態に戻ります。ボーン削除用としては使えませんね。


他に「ジョイント/ブランチの移動」コマンドがありました。

これはチェイン内の各エレメントのサイズを調整するもので、関節の位置をずらす場合などに利用できます。しかしチェインの外にエレメントを移動するものではないので、ボーン削除用としては使えません。


…やはり、ボーンの個別削除はできそうにありません。
でも、チェインの削除は可能なので、こんな感じでできないでしょうか?

1.旧チェインをコピペ(コピー&ペースト)して
  新チェイン作成

2.残したいボーンを旧チェインから新チェインにコピペ

3.旧チェイン削除

実際にやってみると、1はできましたが、2のボーンペーストができませんでした。

チェインを跨るボーンの切り貼りやコピペが出来ないとなると、チェインにボーンを追加して、全プロパティを元と同じように個別設定するしかありません。エンベロープ設定やデフォーマ、ウエイト関連ぐらいまではやる気でしたが、全プロパティはちょっと…移植ミスでトラブるのも馬鹿らしいので、諦めて「長さゼロ」方式にします。


実際にボーンの長さを0にしようとすると、0.01に補正されてしまいました。実害はないと思いますが、気分的にはすっきりしません。

ボーンの長さ0



◎槍チェインの追加

次に、新しい槍ボーンを腕に追加しようとしたのですが、BipedのRHand選択後「チェインにボーンを追加」すると、ボーンは追加されますが、RHandが変な方向に曲がってしまいます。さらによくわからないのは、RHandや新規ボーンをリセットする度に、別々の方向を向いてしまうことです。

「描画時にルートを最初のボーンに位置合わせ」なども試してみましたが、この現象が直る気配はありません。

う~ん…元々Softimageから自動的に取得したリグ(チェイン)なので、手のチェインには手のコントロールなどが関連してるのかもしれません。そこに勝手にボーンを追加してバランスが狂ったとか??
でも、既存の指と同じようにボーンを追加したいだけなんですけどねぇ…。

いや待てよ?既存の指はボーンじゃなくてチェインでした。ということは、ボーンじゃなくてチェインを追加すればうまくいくかも?

そこで一旦2Dチェインを作成し、エクスプローラでRHand配下に移動すると、思い通りに制御できるようになりました。

結局槍ボーンじゃなくて槍チェインを追加したわけですが、Softimage的には多分この方が正解でしょう。仕上げにシャドウリグのボーン追加、エンベロープ設定、ウエイト調整…ってもういちいち書かなくていいですね。

槍チェイン追加(Softimage)   槍チェイン追加(XNA)

これでグーでもパーでも槍の位置は影響されません。指が気軽に動かせるようになりました。



◎次回予告

今までボーンかチェインかなんて気にしてませんでしたが、改めて見ると、Biped配下のGlobalSRTはコントローラとチェイン(=ボーン含む)、Biped_Shadow配下のGlobalSRTはボーンで構成されてますね。

リグは人間が制御しやすいように、シャドウリグは制御ソフトが必要最小限のリソースで済むように、設計されているのがよくわかります。


…まぁそれはそれとして、ようやく上半身が完成したので、次回は着物の裾チェインの追加と下半身のウエイト設定です。

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
徐盛
徐盛
呉の武将。呉軍における主要な戦いのほとんどに参加して武功を挙げた。敵中孤立の状況下で自ら突撃を敢行するほど勇猛果敢な一方、魏の曹丕が大軍を率いてきた際は偽の城壁を建造して退却させるなど、奇計も用いた。



◎リセットがきかない?

槍ボーンを追加するため、まずニュートラルポーズに戻して…ってあれ?リセットがきかない?前回試した時はちゃんとニュートラルポーズに戻ったはず…??

しばらく試すと、コントロールを1つだけ選択した時は、ニュートラルポーズの設定やリセットが問題なく機能するが、Bipedをマウス左ボタンや中ボタンで選択した時は無視されることが判明。

しかしリセット一発で体全体のポーズを初期化できないと不便極まりないし、ヘルプにも複数選択可と書かれています。何でヘルプに書かれてることができないのかねぇ?

…しばらく悩んでいたら、複数選択の方法は他にもあることに気付きました。エクスプローラでBiped配下のcontrols_group配下をごっそり選択する、という方法です。

コントローラを複数選択

この状態でニュートラルポーズを設定したりリセットすると、ちゃんと機能しました。Bipedをマウス中ボタンで選択する方法だと、ルートのBiped階層が優先されて失敗したのかもしれません。というわけで、ヘルプの記述は本当でしたw

しかしいちいち複数選択させるなんて不親切ですね。
あ、普通はDefaultPoseで一発だからいいのか(^_^;



◎あっさり?

今度こそ(アクションを保持したまま)ニュートラルポーズにリセットできるようになったので、改めて槍ボーンの追加を試みます。…ってあれ?なんかあっさりできちゃいました(汗)

槍ボーンあっさり追加?

手順は前回と一緒ですが、今回はWeightEditorに槍ボーンがあっさり追加されました。

前回との違いは何でしょうか?
わざわざ古い状態に戻して確認すると、WeightEditorに槍ボーンが追加されるのは、エンベロープ設定時です(チェインにボーンを追加した直後まで不在)。
ではエンベロープの自動設定か手動設定かで変わるのかと試したら、どちらも同じ結果でした(WeightEditorに槍ボーンが追加された)。

う~ん…あと考えられそうなのは、前回はニュートラルポーズが不正でボーンとメッシュの距離が(見た目は合わさっていても、座標上は)離れていたから?

…どうも違う気がしますが、他に思い付きませんし、結果的に上手くいってるようなので、とりあえず先に進みましょう(汗)



◎ビルドエラー

ところが、XNAで動かすと、ビルドエラーになりました。

Error normalizing vertex bone weights. BoneWeightCollection does not contain any weighting values.

このエラーは、ウエイト未設定の頂点が含まれていたり、ウエイト指定先ボーンが不在の場合に発生するようです。以前発生した時はWeightEditorでウエイト調整したら直りましたが、今回は手強い感じです。

試しに槍メッシュを削除するとエラーが発生しなくなるので、槍メッシュのウエイト設定絡みであることは間違いありません。しかし槍メッシュのウエイトを全てNeckとすると、エラーが発生します。新規ボーンをデフォーマとして認識させるには、何か手順が足りないのでしょうか?


…あれ?よく見ると新規ボーンはカラフルです。それに槍以外のメッシュを選択しても、新規ボーンはWeightEditorの列に存在しません。

これはつまり、槍ボーンをデフォーマとして認識してるのは槍メッシュだけという状態ですが、この状態はSoftimage的にはOKでもXNA的にはアウトとか??

試しに槍以外のメッシュを全て選択し、エンベロープ設定コマンドを実行して、槍ボーンを指定しました。すると、全てのメッシュのデフォーマに槍ボーンが追加され、WeightEditorの列項目に存在するようになりました。これで、今までやりたかったことが1つできましたw

しかし、この状態としてもXNAでは相変わらずビルドエラーになりました。残念ながら、先の推測はハズレですね。



◎Shadow_envelope_groupについて

次に怪しいのは、Biped_Shadow配下のShadow_envelope_groupです。この配下に新規ボーン不在なのが良くない気がするのですが、自力で追加するのは難しそうです。

シャドウリグ作成時のオプションでヌル階層を指定してるので、配置すべきノードは多分ヌルだと思いますが、既存ノードをチェックすると、GlobalSRTとリンクしてるようです。

ということは、予めGlobalSRTにノードを追加しておく必要がある??



◎GlobalSRTについて

GlobalSRTは以前から気になっていましたが、未だに謎の階層です。

ヘルプでキーワード検索すると、Behavior関連の説明ばかりです。Behaviorをネットで検索すると、「HTML等で構成されるHTC(HTML Component)ファイルをHTML上で使用する機能」とありました。要するに、IE等のブラウザ向けキャラクタモデル形式(フォーマット)ということでしょう。

Behavior関連の説明がXNA連携に当てはまるか確認すると、一部当てはまる記述もありますが、当てはまらない記述もありました。この様子だと、ヘルプは参考になりません。


ネット上でGlobalSRTを検索すると、何やら難しそうな話ばかり。もうちょっと手軽にできないものかと探っていたら、リグ作成用スクリプトを発見しました。

こちらの記事の2番目「CreateShadowParts」が、今回私が望んでいた機能です。



◎Rig作成用スクリプトの組み込み

今回のスクリプトはアドオン形式なので、組み込みは以前のスクリプトよりも簡単です。

1.スクリプトをダウンロードする
 (デフォルトファイル名はRigTool.xml)

2.ファイルの拡張子を変更する
 (RigTool.xml→RigTool.xsiaddon)

3.ファイル>アドオン>インストールで
 上記ファイルを指定してインストール

4.Softimageを再起動

上記手順を完了すると、Animate>作成>キャラクタに3つのコマンドが追加されます。



◎シャドウリグへのボーン追加

スクリプトの準備が完了したので、いよいよ槍ボーンをシャドウリグに追加します。

1.槍ボーン(2個)を選択

2.作成>キャラクタ>CreateShadowParts

3.Biped_Shadow配下のShadow_envelope_groupを選択

4.右クリックで選択終了(コマンド実行)

しかし実際にやってみると、3.でエラーになります。Shadow_envelope_groupは指定できないようですね。指定先をBiped_Shadow(シャドウリグのルート)とすると、boneとbone1が作成されました。

シャドウリグにボーン追加

これは…ひょっとして、GlobalSRTに格納すべきものでは?(何となくGlobalSRTの中のノードに似てるので(^^;)
というわけで、boneとbone1を以下の深~い所にドラッグ&ドロップで移動しました。

Biped_Shadow→GlobalSRT→UpperBody→SpineStart1→SpineVertebra3→SpineVertebra4→SpineVertebra5→ChestBone1→RShoulder→RBicep→RForearm→RHand

移動後、さらにboneとbone1を個別にShadow_envelope_groupにドラッグ&ドロップしました。

槍ボーンをShadow_envelope_groupにドラッグ&ドロップした

この状態で、槍メッシュを選択してエンベロープ設定を行い、デフォーマにShadow_envelope_groupを指定しました。仕上げにWeightEditorでウエイト設定すると…

シャドウリグへのボーン追加(XNA)

やりました!リグだけでなくシャドウリグにもボーンを追加して、XNAで動かすことができました!ちょっとハードル高そうでしたが、これが出来たのもスクリプトのおかげですね!



◎ニュートラルポーズ禁止!

こちらの記事の後半に「ShadowRigにニュートラルポーズを利用してはいけない」という記述があります。

こちらの記事はFBX出力方式ですが、記事の内容を読むと、dotXSI出力方式にも該当しそうな気がします。前回ニュートラルポーズが失敗したのはこのため??

改めてSoftimageとXNAの掌の向きをチェックすると…
うわっ、90度ずれてる!(前項画像参照)

…dotXSI方式でも、ニュートラルポーズは禁止すべきもののようです(汗)



◎次回予告

Softimageでは私のカンはハズレまくりでしたが、ようやく当たったので嬉しいです!(^^)

階層構造の理解が一気に深まった気がするので、今後カンの的中率が上がっていくことを期待しています!
…ってカン頼みかよ!(笑)


次回は
・ニュートラルポーズ解除調整
・着物の裾ボーン追加
・下半身のウエイト設定
などを予定しています。これでようやくモデル完成かな?

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
馬忠
馬忠
呉将潘璋の部下。荊州の戦いにおいて、麦城から脱出を図る関羽親子と趙累を捕縛する大功を挙げた。演義では、夷陵の戦いで糜芳と傅士仁に裏切られて殺され、首を蜀軍に送られた。



◎腕の崩れ

XNAでまともに動かなくなってしまったので、試しにアニメーションマネージャでNewActionを一度削除してからアニメーションを再登録しました。すると、体全体が動き出したのですが、腕は悲惨な状態でした。

バラバラで動いた

う~む…一応動いたから半歩前進?
でもSoftimageでは綺麗に動くのに、XNAで腕がこれほど崩れる理由がよくわかりません。

キーセット追加するも、変化なし。
腕や手のウエイト設定変更するも、変化なし。
Biped選択後のアニメーションマネージャのアクション一覧に登録済のアクションを全て削除するも、変化なし。

…こんな調子で試行錯誤を重ねていたら、両腕のメッシュは左足のコントローラに、両手のメッシュは両足のコントローラに連動していることが判明。なんだそりゃ?

結局、それ以上のことはよくわかりませんでした。ウエイト設定が完全に無視されるので、どうすれば直るのか見当が付きません。

ただ、腕、手、槍以外は普通に動くので、エンベロープ再設定に問題があったと考えるべきでしょう。



◎やり直し

もう一度デフォルトポーズに戻して、エンベロープ設定をやり直します。

1.Biped選択後、画面下のAnimation>アニメーションの削除>すべてのパラメータから:任意のアニメーションタイプ

2.Biped選択後、アニメーションマネージャ>DefaultPoseを選択

3.腕、手、槍メッシュ選択後、デフォーム>エンベロープ>エンベロープの削除

4.腕、手、槍のボーンとメッシュを合わせる

5.腕、手、槍メッシュ選択後、デフォーム>エンベロープ>エンベロープの設定
  Biped_ShadowのShadow_envelope_groupを指定

エンベロープ設定対象をShadow_envelope_groupとしてやり直しましたが、駄目でした。腕は最初と同じ状態(ボーンとメッシュの掌の向きが90度異なる状態)に戻ってしまい、槍メッシュは槍ボーンを完全に無視してます。

槍のウエイト設定をしたくても、槍ボーンがWeightEditorの列に表示されないんだよなぁ…WeightEditorじゃなくて、ペイント方式で槍ボーンを指定できないかな?最終的にはShadow_envelope_group配下に槍ボーンが追加された状態にしたいのですが、どうすればその状態になるのでしょう?

腕の方は、デフォルトポーズの問題かもしれませんね。



◎ニュートラルポーズの設定

デフォルトポーズ(ニュートラルポーズ)を変更できないかヘルプを読むと、何やらいろいろ書かれてました。隅々までは理解できませんでしたが、要するに一度ニュートラルポーズを設定すると、そこからのオフセット値でアニメーションする、という話のようです。

設定手順は説明よりも単純です。

1.ニュートラルポーズにしたいポーズとする

2.Bipedをマウス中ボタン選択後、画面右のTransform>ニュートラルポーズの設定

3.同様に、Transform>ニュートラルスケーリングの設定

4.同様に、Transform>ニュートラル回転の設定

5.同様に、Transform>ニュートラル移動の設定

これでニュートラルポーズを設定できました。Bipedをマウス中ボタン選択後、画面右の「Transform>すべての変換をリセット」などとすると、ニュートラルポーズに戻すことができます。



◎試行結果と結論

で、ニュートラルポーズを設定してから再度エンベロープ設定を行いましたが、結局ダメでした(泣)
腕や手のメッシュはポーズに影響されましたが、掌の向きが90度異なる点は変わりません。

考えてみると、ポーズはリグに対して行いましたが、エンベロープはシャドウリグに対して設定してるので、このような結果になるのかもしれません。

そこでShadow_envelope_group配下のBiped_Shadow.RHand等を動かそうとしたのですが、ピクリとも動きません。多分、リグとシャドウリグが連動関係(Softimageではコンストレインと言うらしい)にあるからでしょう。

コンストレインを一旦解除してエンベロープ設定後に再設定することも考えましたが、それで上手くいく可能性が高いとは思えません。どうせならシャドウリグを作り直した方が確実という気がします。

でも、そこからやり直すなら、手のメッシュを回転してリグに合わせた方が早いですね。今までそうしなかったのは、本来リグをモデルに合わせるべきであって、モデルをリグに合わせると、今後支障が出るかもしれないと考えていたからです。しかし今でも十分支障が出てるので(笑)、これで直してしまいましょう。



◎修正完了

というわけで、以前の状態(XNAでアニメーションするが、掌のメッシュとボーンが90度ずれている状態)に戻して以下の手順で直しました。

1.Bipedをマウス中ボタン選択後、画面下のAnimation>アニメーションの削除>すべてのパラメータから:任意のアニメーションタイプ

2.Biped選択後、アニメーションマネージャでDefaultPoseを選択

3.腕、手、槍メッシュ選択後、デフォーム>エンベロープ>エンベロープの削除

4.手メッシュを移動、回転

5.手メッシュに合わせて手ボーンを拡大

6.腕、手、槍メッシュ選択後、デフォーム>エンベロープ>エンベロープの設定
  Biped_ShadowのShadow_envelope_groupを指定

ついでに、ニュートラルポーズの設定もしておきました。これで今後ニュートラルポーズに戻してもアクションが初期化されないでしょう。

掌のメッシュとボーンが揃った状態   掌のメッシュとボーンが揃った状態(XNA)

というわけで、掌の向きの問題は解決…と言うより回避しました。XNAでちゃんと動きます。

理想的な解決ができず気分的にはイマイチですが、進捗遅れまくりなので、いい加減先に進めましょう。



◎次回予告

次回は、槍ボーンの追加です。
シャドウリグの追加って、どうすれば良いのでしょう?ヘルプには全然書かれてないんですけど(泣)

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
馬良
馬良
劉備配下の文官。劉備入蜀後も荊州に残り、関羽を補佐した。演義では、関羽の危急を救うため成都に援軍を求めるが、間に合わなかった。眉に白い毛が混じっていたため、優れた人物を白眉と呼ぶ故事のルーツとなった。



◎上半身のウエイト調整

前回予告通り、上半身のエンベロープウエイトを再調整しました。

WeightEditor   上半身ウエイト設定完了
Weight Editor(左図)と上半身ウエイト設定後の槍兵(右図)

動かしても殆ど崩れなくなって、徐々にいい感じになってきました(^^)

※ワンポイントアドバイス
着物が鎧より手前に表示されていた場合などは、ビューの表示を「隠線消去」にすると、はみ出たポイント(頂点)を簡単に選択できます。


ちょっと細かい話です。
着物や鎧はChestBone(背骨?)に影響させたかったのですが、WeightEditorの列にChestBoneを追加することができなかったので、Neck(首)に連動させました。このままだと首が動かせないかも(汗)

ヘルプを見ると、WeightEditorの列はBoneではなくデフォーマとのことですが、デフォーマって何?とヘルプを辿ると、通常はスケルトンを指すようです。NeckやRFootBone2などがデフォーマとして認識済なのに、ChestBoneがデフォーマとして認識されない理由は不明。まだまだ謎ばかりですね…。



◎ボーンの追加

下半身のウエイト調整の前に、槍や着物の裾を制御するためのボーンを追加しましょう。手始めに、簡単そうな槍ボーンの追加から。

念のためビューをフロントにして、中指を選択し「作成>スケルトン>チェインにボーンを追加」…むむ、指定した所とは全然違う所にボーンが作成されました。アクション中のポーズに追加したからかなぁ?

このまま進めると、後々問題を抱える可能性がありますが、アクションを初期化すると、別の懸念があります。う~む、どうしよう。

…とりあえずこのまま継続して、問題があったら初期化してやり直します。



◎デフォーマの追加

さて、ここからが本番です。既にエンベロープ適用済ですが、この状態からデフォーマを追加します。ここで言うデフォーマ追加とは、エンベロープ設定の追加のことです。たぶん…。

槍メッシュを選択して
「デフォーム>エンベロープ>エンベロープの設定」

自動的にエンベロープを再割り当て

自動的にエンベロープを再割り当てすると、設定済みのウエイトまで初期化されそうなので、チェックを入れずにOKし、ウエイトを手動で新規ボーンに設定しました。

…新規ボーンを動かすと槍も動くようになりましたが、ボーンの向きと槍の向きが異なるので、このままだと混乱します。やはりメッシュとボーンを揃えてから設定しないとダメですね。



◎掌の向き

というわけで、槍とボーンを揃えてから再度デフォーマを追加しようとしたのですが、その時になってリグとメッシュの掌の向きが90度ずれてることを認知しました。ガーン!
(リグは掌が下向き、メッシュは掌が手前向き)

これを直すには、腕全体のエンベロープを再設定する必要がありそうです。こうなると、アクションを初期化した方が良さそうです。



◎アクションの初期化とデフォルトポーズ

というわけで、アクションを初期化して最初のポーズに戻したいのですが、実はこれを正しく行う方法がよくわかりません。それらしい方法を試すと、以下のようになります。

○アニメーションマネージャのRemove Animationボタン
・Biped_Shadowをマウス左ボタン選択後にこれを行う
 →変化なし

・Biped_Shadowをマウス中ボタン選択後にこれを行う
 →上記と同様

・Bipedをマウス左ボタン選択後にこれを行う
 →胴と足は動かなくなるが、腕だけ動く

・Bipedをマウス中ボタン選択後にこれを行う
 →上記と同様


○画面下の「Animation>アニメーションの削除>すべてのパラメータから:任意のアニメーションタイプ」
・Biped_Shadowをマウス左ボタン選択後にこれを行う
 →変化なし

・Biped_Shadowをマウス中ボタン選択後にこれを行う
 →上記と同様

・Bipedをマウス左ボタン選択後にこれを行う
 →胴と足は動かなくなるが、腕だけ動く

・Bipedをマウス中ボタン選択後にこれを行う
 →体全体が動かなくなるが、ポーズは現在表示中の状態で固まる


こんな感じでいろいろ試していたら、Biped選択後のアニメーションマネージャのアクション一覧にDefaultPoseがあるのを発見しました。…もっと早く気付けよ!<一人ツッコミ

Biped選択後のアニメーションマネージャ

ちなみに、一旦DefaultPoseを選択すると、元のアクションに戻せません。Biped_Shadow選択後にアニメーションマネージャを起動してNewActionを選択すると、腕は動きませすが、胴や足は動きません。階層構造の問題かなぁ?



◎腕ボーンの回転

掌の向きを合わせようと、腕ボーンの回転を試みますが、ピクリとも動きません。当初からボーンが回転できたりできなかったりして「思い通りにいかない」要因の1つだったのですが、その原因と対処がはっきりしました。

原因は、腕先のコントローラを移動してFKアクションを付けたことです。これにより、FKアクションを実現するために腕ボーンが個別制御不能になっていたのでした。

対処は、FKアクションを削除することです。DefaultPoseを選択しても、FKアクションのキーが残っていたので、Shift+Kなどの操作でそれらのキーを全て削除すると、腕ボーンが個別制御可能になりました。

…これで謎が1つ解けましたね。まだ沢山ありますが(^_^;



◎ボーン追加とエンベロープ再設定

というわけで、実際には以下の順番で修正しました。

1.腕コントロールのキー削除

2.DefaultPose選択(初期ポーズ)

3.腕や槍メッシュを選択して
  デフォーム>エンベロープ>エンベロープの削除

4.ボーンの拡大や回転を行い、メッシュに合わせる

5.腕のエンベロープ設定

6.中指チェインに槍ボーンを追加

7.槍ボーンの回転を行い、槍メッシュに合わせる

8.槍のエンベロープ設定


5と8の手順は、メッシュを画面表示しておくとボーン選択が難しいので、メッシュは予め非表示にしておき、エクスプローラで選択しました。

ボーン追加とエンベロープ再設定   ボーン追加後にアクション設定(Softimage)

指先までボーンがカラフルになって、エンベロープが綺麗に張られました。実際に動かしてみると、指先から槍先まで思い通りに動きます。イイ感じだ~!

そもそも、今までボーンがカラフルじゃなかった時点で良くなかったのかも…腕以外も全てエンベロープ再設定した方がいいかなぁ?


…などと思い始めていたのに、XNAで表示すると、腕だけでなく足や胴も動きません。何故か腕の付け根だけ動きます。やっぱり謎だらけ…(哀)

腕の付け根だけ動く



◎次回予告

これでうまくいったと思ったのに、XNAでは何故か思い通りに動きません。一度DefaultPoseを選択したのがまずかったかなぁ?

次回は、XNAの謎の解明に挑みます。
ちなみに、進捗はどんどん後退してる気がします(汗)

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
趙累
趙累
劉備配下の将。演義では王甫に高く評価され、潘濬に替えて荊州を守らせるよう関羽に推挙されたが、関羽は進言を採用しなかった。麦城から脱出する関羽親子に最後まで付き従った。



◎SoftimageとXNAの違い

前々回の予告どおり、エンベロープウエイトを調整しました。



Softimage(上)とXNA(下)

WeightEditorでざっくり調整しました。頂点単位で設定できる点がRokDeBone2よりも優れてますね。

腕の付け根の頂点が腕ボーンに強く影響されていたのですが、100%肩ボーンに影響するようにしたら、肩幅の問題がかなり改善しました。同様に、アーマーやヘルメットの影響度などを調整しました。下半身は、後で着物の裾をひらひらさせるためにボーンを入れるつもりなので、あまり手を付けてません。


こうして見ると、XNAでは腕が伸び縮みしてるように見えますね。実際には、肘のあたりがバックに後退してるだけなんですが、そもそも手を広げた段階で腕が長すぎるように見えます。Softimageでは、腕の長さもウエイト設定も丁度良いぐらいなんですけど…この差は一体何でしょうか?



◎ビューモードによるカメラ設定の違い

腕の長さがカメラによるものではないことを確認するために、このシーン用のカメラとライトを作成したのですが、カメラと注視点の座標を設定しようとしても、いつの間にか値が勝手に変わったりして、思うように制御できません。

「カメラは把握したつもりだったけど、それも勘違いだったのか?」と不安になりましたが、結局これはビューモードがカメラに設定されていたからで、ビューモードをユーザに切り替えると、思い通りに制御することができました。

ビューモードがカメラの時は、Softimageのビューカメラ操作がXNA用のカメラ設定に自動的に反映されるようですが、注視点は別らしく、Softimageの表示とXNAの表示が異なることがあります。これが混乱の原因でした。

でも、注視点を一度設定すれば、このモードはデバッグに便利そうです。但し、カメラの位置を別の角度から調整したい場合などは、ビューモードはユーザにした方が良さそうです。



◎問題はFK?

腕が伸び縮みする問題ですが、左腕を下ろすポーズに変えたら、さらに極端になりました。

腕が長いSoftimage   腕が長いXNA
Softimage(左図)とXNA(右図)

XNAの腕は、まるでどこかのロボットですね(^^;

どうやら「四角いコントローラを移動してアニメーションを付ける」というやり方がダメだったようです。Softimageでは綺麗にアニメーションしますが、XNAではおかしくなります。

そういえば、RokDeBone2の時もFKはなるべく避けてました。でもそれはオブジェクトの長さが変わるのを嫌ったからであって、実際に使用してもここまで極端にはなりませんでしたが…。ともかく、最初からIKだけで作り直してみましょう。



◎あるべき姿

手順書作成の都合もあって、今度はTransform(スケール調整)をやらずにカメラ調整で歪みの矯正を試みたのですが、するとカメラがSoftimageの視界と完全に連動しました。
…もしかして、スケール調整に問題があったのでは?

そこで再度コントローラ操作によるFKアニメを作成しました。



Softimage(上)とXNA(下)

エンベロープウエイト未調整ですが、腕や肩は以前より遥かにマシですし、(XNA表示が)Softimageと一緒です。ようやく本来あるべき状態に辿り着いたみたいですね(笑)



◎スケール調整について

基本的な考え方は間違ってないと思いますが、失敗した心当たりは幾つかあります。

・元のモデル、Biped、Biped_Guide、Biped_Shadowの4つのスケールがうまく連動できていなかった可能性がある

・元のモデル(の抜け殻)は削除してしまったが、Biped等が元のスケールを参照していた可能性がある

・スケールの設定やタイミングによっては、SoftimageとXNAのビューカメラ連動設定に悪影響を与える可能性がある

結論から言うと、シャドウリグ取得方式では、スケール調整は行わずにカメラで調整するのが無難でしょう。



◎次回予告

次回はウエイト設定の仕上げです。手順書も仕上げて一緒にUPする予定です。

ようやく(崩れてないという意味で)まともなアニメをお見せできそうな予感(笑)

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |
DATE: CATEGORY:三国志軍記開発
王甫
王甫
元劉璋配下の政治家。劉備入蜀後は劉備に仕え、関羽配下となった。演義では関羽の幕僚として的確な進言を行うが、関羽に採用されず、関羽死後に後を追って自殺した。正史では夷陵の戦いで戦死した。



◎6月の目標達成度

・Softimageで城モデル更新(2日)

 実績:7日間で更新完了(達成率100%)


・Softimageで槍兵モデル更新(3日)

 実績:8日間でマテリアル設定完了(達成率50%)


・アニメライブラリ選定(3日)
・地形モデル描画(4日)
・マップオブジェクトモデル描画(5日)
・マップデータ調整(1日)
・マップオブジェクト属性データ作成(1日)

 実績:未着手(達成率:0%)


・その他
 →ブログ更新/HP更新(3日)
 →休息/予備(5日)

 実績:8日間で「Softimage Mod Toolで作成したスキンアニメモデルをXNAで動かす」と「Metasequoia用データをSoftimage Mod Toolで読み込みXNA向けに編集する」を作成(達成率:100%)


HPは頑張りましたが、肝心の進捗は散々です。トホホ…。



◎進捗が伸びない理由

進捗が伸びない理由は、大きく2つ。

・XNA連携がつまづきまくりなため
・活動時間が低下したため

正直言って、XNAとSoftimageの連携の悪さにはかなりウンザリしてます。これがXNA公式推奨ツールって「本当か?」とツッコミ入れたくなるほどです。(XNAツールバーが存在するから疑いの余地は無いんですけどね…)

もしモデルを自作するなら、とっくに投げ出してMetasequoia+RokDeBone2に戻ってますが、やはりモデルを自作する気はないですし、RokDeBone2ユーザを探すのも困難でしょうから、頑張って連携させます。

これはず~っと疑問に思っていることですが、他の人達はどうしてるんですかね?Softimageの解説本にXNA連携が詳しく解説されてるとは思えないし、ネット上の情報も予想より少ないんですけど…もしかして、XNA+Softimageで開発してる人は少数派?w



◎活動時間が低下した理由

活動時間が低下した理由は3つ。

・XNA連携がつまづきまくりでやる気低下(前述)
・スロージョギングを始めた
・クーラーを禁止した

不思議と病気にはならないのですが、5秒走って息切れする基礎体力の無さに生命の危機を感じ、体力作りにスロージョギングを始めました。とりあえず生命の危機からは脱したようですw

しかしこれには副作用がありました。ひと汗かいた後にシャワーで汗を流して一杯飲む(ノンアルコール)と、「今日一日やることやった~!」みたいな充足感があって、しばらく何もやる気が起きず、ダラダラ過ごしてしまうのですwww

最近はダラダラ時間帯に食事するようにしましたが、そうすると食事の支度や後片付けが面倒で手を抜きたくなります。運動しても、食事がカップ麺ではむしろ不健康っしょ!(笑)


また、「7月までクーラー禁止!」という自分ルールを作ってしまったため、蒸し暑い日は全くやる気になれませんでした。極寒のマシン室に十年近く勤務し暑さに耐性の無い私に、網戸が無く窓を開けられず風通しが悪くPCの熱でサウナ並の室内は、ちょっとキツかった…。

それでも自分ルールは最後まで守り通したので、健康と財布と地球環境には良かったと思いますが、活動時間は低下してしまいました。やれやれ。



◎相互管理

進捗が伸びなかった理由は前述の通りですが、所詮言い訳に過ぎません。

「暑くてやってられない」というのは事実ですが、でも「7月からクーラー解禁で、進捗が大幅にアップするか?」と冷静に考えると、答えはNoです。少しはアップすると思いますが、大幅とまではいかないでしょう。つまり「別途効果的な改善策が必要」ということです。

では、どうすれば進捗が大幅にアップするのか?

XNA連携のつまづきを簡単に突破する方法があればベストですが、そんな都合の良い特効薬は無さそうなので、これは諦めます。

一方、活動時間の低下は、要するにやる気の問題です。
やる気を起こす方策を考えて、出した結論は「相互管理」。

鳳雛さんもブログで時間管理に苦戦中の御様子だったので、鳳雛さんに話を持ちかけたら賛成してもらえました。というわけで、7月3日から鳳雛さんと相互管理を始めました。

ちなみに、相互管理と言っても、活動項目と時間を1日1回互いにメールするだけです。たった数行の手間で済む割に、効果は期待できそうです(^^)



◎進捗状況チェック

年間スケジュールは完全に破綻しました(--;

SoftimageのXNA連携が想定外でした。8月まで待って、XNA連携の決着と相互管理の効果のほどを確かめてから年間スケジュールを組み直します。



◎7月の目標

・Softimageで槍兵モデル更新(3日)

・アニメライブラリ選定(3日)

・地形モデル描画(4日)

・マップオブジェクトモデル描画(5日)

・マップデータ調整(1日)

・マップオブジェクト属性データ作成(1日)

・その他
 →ブログ更新/HP更新(3日)
 →休息/予備(5日)

7月は、その他に「活動時間月140時間以上」を目標とします。最近は月80時間ペースにまで落ち込んでしまったので、まずそこまで回復せねば!



◎次回予告

次回はエンベロープウエイトの続きです。

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
潘濬
潘濬
元劉表配下の政治家。劉表死後は劉備に仕え、関羽配下となるが、関羽には疎まれていた。荊州が陥落すると自宅に退き出仕しなかったが、孫権に説得されて呉に帰順した。
その後は異民族討伐や宮中混乱平定などで呉に貢献した。



◎RokDeBone2データの流用可否

槍兵モデルには、RokDeBone2のモーションデータがあります。なので一応RokDeBone2とSoftimageのデータ連携が可能なインポーターやエクスポーターを探してみましたが、予想通り見当たりません。

というわけで、モーションは1から作り直すしかなさそうです。



◎考えすぎ

自分で1から作るとなると、「どんなモーションを、どんな風に作るか?」でちょっと悩みます。以前と同じモーションか?別にするか?ボーン構造はRokDeBone2と同様にするか?どこかのサイトでボーンの付け方から学ぶべきか?

今回の目的は、SoftimageとXNAの連携スキルを身に付け、3Dモデル担当者を探してモデル製作を依頼し、自身でも若干の修正ができるようになることです。そういう意味では、どこかのサイトできちんと学んだ方が良いかもしれません。

一方、アニメーションライブラリを比較検討し、最終的に採用するライブラリを決める必要があります。そういう意味では、以前と同じモーションをRokDeBone2と同様の方式で作成した方が比較しやすいかもしれません。

でも、プログラムで自動変換したデータならともかく、1から手作りしたデータでは、見た目が同じでも正しい比較にならない上に、Softimageの長所を見落とす可能性があります。


…まぁ、こんな調子で一人ブツブツ考えてました。「考えすぎ」は私の特性の1つで、長所であると同時に短所でもあります。よく考えて良い結果に繋がることもありますが、今回は「Softimageがまだよくわかってないのに頭の中で考えてもムダ」ってやつですね。

こんな時は、考えるより先に行動すべきでしょう。詰まったらその時に考えれば済むことです。というわけで、とりあえずRokDeBone2方式で以前と同じモーションを目指します。



◎サンプルのボーン

RokDeBone2方式というのは、「作成>スケルトン>2Dチェインを描く」で1からボーンを作ることです。以前と同じボーン構造を目指しますが、両手両足などの分岐や連結で早くも疑問に突き当たりました。

こうすれば出来るかも?と思い付くことは多いのですが、試行錯誤でいつも時間がかかりすぎているので、今回は先にサンプルを覗いてみました。

ロボットのボーン

ロボットのDeformerRootだけ表示するとこんな感じです。
多分これがボーンなんですけど、私のイメージとは大分違いますね。それともSoftimageではこれが普通なのかなぁ?

…でもやっぱり普通じゃない気がする。Softimageではガイドやリグがあって…そうだ!メッシュだけ入れ替えれば、デフォルトのガイドやリグを流用できるのでは?Softimageは本来そういうこと(流用性アップによる生産性の向上)を目指してる気がするので、わりと簡単にできるかも?



◎デフォルトリグの活用

というわけで、やり方を変えます。二足ガイドを作成して、二足ガイドからリグを作成して、リグのサイズを調整してからエンベロープを設定すると…


Softimageでの表示

なんだ、出来るじゃないですか!(笑)
これをXNAで表示すると…


XNAでの表示

むむ…一応動きますが、スキンの崩れ方が激しいですね。エンベロープウエイト未調整なので、多少崩れるのはわかりますが、それにしても崩れすぎです。Softimageでは、XNAほど崩れてない気がするのですが…気のせいじゃないよね?(^_^;



◎エンベロープウエイトの謎

XNAとSoftimageを見比べると、顔、肩、胴が極端に違います。

顔が横に広がるのは、ヘルメットの両端が肩に影響してるからです。こういうのは納得できますし、ウエイト調整ですぐに直せそうです。

しかし肩と胴は謎です。
肩が極端に広がるのは、腕の移動に引っ張られているからですが、XNAだけ極端なのは何故でしょうか?でも腕は普通だから、カメラとかスケールの問題じゃなさそうです。胴の伸縮も理解できません。


先にアニメーションを付けてからTransform調整したのが悪かったのかと、順番を変えてやり直したり、メッシュがバラバラなのがまずいのかと思ってメッシュをヌルオブジェクトでまとめたりしましたが、変化なし。IKとFKを変えて試したり、手動でプロットしてオプションを変えたりしてみましたが、これもダメ。



◎次回予告

エンベロープウエイトの謎を解いてからUPしたくて粘っていたのですが、どうにも進展しないので、現状報告ということでUPしました。デフォルトリグの活用は正解だと思うので、そちらの手順をHP用にまとめたのですが、こちらはウエイト設定ができるまでUP見送りです。

デフォルトのウエイト設定がRokDeBone2よりも悪いのは納得できないし、XNAとSoftimageを身比べながらウエイト調整するのも気が進まないので、なかなか踏み出せずにいましたが、このままだと埒が明かないので、とりあえずウエイト設定始めようと思います。

あ、その前に、6月の総括と7月の目標やります。

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |

copyright © ゲーム制作の舞台裏 all rights reserved.Powered by FC2ブログ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。