プロフィール

Na-7

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


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:Softimage Mod Tool
周倉
周倉
関羽の側近。荊州の戦いでは、得意の水練によりホウ徳を捕獲した。正史に登場しないため架空の人物とされている。



◎メッシュとボーンの入れ替え実験

前回予告どおり、メッシュの入れ替え実験を行います。いきなりメッシュだけ入れ替えても動かなそうなので、ボーンも一緒に入れ替えます。

1.ロボットモデルのシーンファイルをロードする

2.オリジナルモデルを作成する
  (アニメーション登録の手前まで行う)

3.ロボットモデルとオリジナルモデルの
  メッシュとDeformerRoot配下のボーンを入れ替える

4.既存のウエイト設定を削除し、
  エンベロープを再設定する

5.エクスプローラで既存のキーセットを削除する

6.アニメーションマネージャでキーセットを取得する

7.既存のアクションを削除し、新規にアクションを
  作成してXNAで再生する

上記のようにしてメッシュとボーンを入れ替えると、ロボットメッシュは動きましたが、円柱メッシュは動きませんでした。
この実験から、以下の2点が判明しました。

・オリジナルモデルのメッシュかボーンに問題がある

・エンベロープ設定以降の手順に誤りは無い


余談ですが、上記6の手順でSkinModel01の下に例のキーセット(の下の不明オブジェクト)が自動作成されました。このオブジェクトは、メッシュかボーンの階層から拾った情報を元に自動作成されるようです。

SkinModel01に作成されたキーセット



◎さらなる追及

メッシュとボーンのどちらが悪いかを追求したいので、メッシュだけ入れ替えてみました。
(前述の手順3でメッシュだけ入れ替え)

すると、ロボットメッシュは(オリジナルボーンに沿って)動きましたが、円柱メッシュは動きませんでした。

今度は、ボーンだけ入れ替えてみます。
(前述の手順3でボーンだけ入れ替え)

これも、ロボットメッシュは(オリジナルボーンに沿って)動きましたが、円柱メッシュは動きませんでした。


…ということは、悪いのはメッシュ?!
これまでボーン、エンベロープ設定、キーセット、アニメーション付けなどの方が怪しいと思っていたのですが、これは意外ですね。



◎メッシュの何が悪いのか?

メッシュが悪いと言っても、メッシュ作成手順は下記3点だけです。

1.円柱ポリゴン取得
2.フリーズ
3.XNAモデルへの変換

とりあえずフリーズせずにやってみましたが、やっぱり動きません。そもそも、Softimage上では円柱メッシュもちゃんとスキンアニメするんだよね…ということは、XNAモデルへの変換ミス?

しかし、XNAモデルへの変換手順はチュートリアル通り(のつもり)だし、変換後の階層構造も(マテリアル以外は)ロボットと一緒。メッシュのパラメータをざっと眺めてみても、悪そうな所は見当たりません。

うーん…変換手順の問題じゃないとすれば、事前に用意するメッシュの問題かなぁ?例えば、円柱はモデルじゃなくてポリゴンメッシュだからXNA変換に失敗してるとか??

そういえば、「Create Skinned Model」で作成されるメッシュ(箱)は「Skinned Model」のはずだから、まずあの箱をスキンアニメさせてみてはどうだろう?その上で箱と円柱の違いを調べれば、円柱が動かない原因が分かるかも…?



◎箱も動かず

というわけで、箱にボーンを入れてエンベロープを設定し、アニメを付けてXNAで表示しました。

箱アニメ01   箱アニメ02

XNAでは動きません。これでは円柱と一緒です。この箱は「SkinnedMesh」という名前なのに、なぜロボットと同じ手順で動かないのでしょう?


ちなみに、.xsiファイルの中を覗くと、個々のボーンへのFカーブ値などが格納されていますし、この.xsiファイルを再度Mod Toolで開くと動きます。謎は深まるばかりです…。

(メッシュウエイトが少しおかしいように見えますが、これはサンプルのロボットも同様です。アニメーションマネージャを開くと直るようです)



◎ロボットのメッシュを削る

こうなったら、ロボットのメッシュを徐々に削って、箱や円柱に近い状態にしていきましょう。もし途中で動かなくなったら「XNAで動くメッシュの規則性」がわかるかもしれません。また、もしシンプルな状態でも動くようなら、今後はそちらを基本メッシュと見なして、モデルを作成すれば良いわけです。

1.メッシュを削る

2.旧ボーンを削除し、メッシュの大きさに合わせて
  シンプルなボーンを入れる

3.旧ウエイトを削除し、エンベロープを再設定する

4.旧キーセットを削除して新規に作り直す

5.旧アニメを削除して新規に作り直す

6.publishしてXNAで表示確認する

7.1~6を繰り返す



ほほう…足の一部だけの超シンプルな状態としても、ちゃんとスキンアニメしましたね。

この状態をベースに、新規モデルを作成することが出来そうです。とりあえず目的の1つは果たせたようですね。



◎ついに原因判明!!

今後のモデル作成の足掛かりは掴めたようですが、ここまで来たら、動かなかった原因もやはり知りたいです。

で、とことんオリジナルモデルに近付けようと、skin_mesh→Polygon Mesh→Clustersの中の(マテリアル設定関連と思われる)4つのオブジェクトを削除しました。

Clusters配下のオブジェクト   マテリアル削除

マテリアルを削ったので色が落ちるのは予想済でしたが、何とアニメもしなくなりました!つまり、円柱がアニメしなかったのは、このオブジェクトの有無が原因だったのです!!



◎XNAのマテリアルとメッシュ

試しに、例のオブジェクトのうちgrassだけ削ってみました。



grassを削ったら、メガネだけ動かなくなりました。ということは、このオブジェクトは単なるマテリアル情報だけじゃないってことですね。

待てよ?XNAはメッシュをマテリアル単位に複数のModelMeshPartに分割保持しますが、その元がコレなのでは?つまり「マテリアル設定を省いたからメッシュが分割保持されず、XNAで正常動作しない」ということ?そう考えると、Softimageで動くのにXNAで動かない理由も納得できますね。

ぐぅぅ~とりあえずモデルが表示されるからマテリアルは無視してたのに…いっそのこと、何も表示されない方が早く気付けたかもしれません(嘆)



◎次回予告

ようやく原因が判明したので、例のオブジェクトを生成する作業工程(多分マテリアル設定?)を探ります。これでようやく動きそうな予感…。

…おっと、6月になったので、「5月の総括と6月の目標」が先ですね。ああ、5月を振り返るのが怖い…。

スポンサーサイト

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

コメント

こんにちは
文章を読んでいて
解決策がわかりましたよ!

多分、ご承知の通りマテリアル設定だと思います

マテリアルのRealTime部分にサンプル付属のファイルをくっつけて
テクニック項目をSkinnedにすればOKだと思います

コレで解決できれば、ただ単純にスキンメッシュさせるシェーダーじゃなかったってことでしょう!

動きました!

LAGさんこんばんは~

御忠告のとおりマテリアルを設定したら、ついにxnaでスキンアニメしました!

ほんと長かったなぁ~
どうもありがとうございました!!


>コレで解決できれば、ただ単純にスキンメッシュさせるシェーダーじゃなかったってことでしょう!

そのようですね。お陰でどっぷりハマってしまいました(笑)

コメントの投稿


管理者にだけ表示を許可する

トラックバック


この記事にトラックバックする(FC2ブログユーザー)



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