プロフィール

Na-7

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


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発
槍兵再作成33
再作成中の槍兵モデル
足首の階層を修正し、表示崩れはなくなったが、頂点位置が微妙にズレるケースがあるようだ。



◎目玉の位置

HPの技術資料では、標準取得メッシュを利用して人体モデルをXNAで動かします。

しかしXNAでは目玉が別の場所に表示されて、どうしても表示位置を補正できなかったのですが(1年前から)、実はコンストレイン機能が働いていたらしく、「すべてのコンストレインの削除」としたら補正可能となりました。

さらに「ニュートラルポーズの解除」→「すべての変換をフリーズ」とすると、左目はOKで右目だけズレました。

右目の位置がおかしい

…何故右目だけ!?


その後もかなり苦戦しましたが、「すべての変換をフリーズ」で付与された右目メッシュのセンター位置を強引に補正するとXNAで正常に表示されました。

右目の位置を修正した   Softimageでは右目の位置がおかしい

ちなみに、右目メッシュ全体の位置を修正して「すべての変換をフリーズ」するとXNAで正常に表示されます(左図)が、その場合Softimageで右目位置がズレます(右図)。

気になる場合は、Softimageでセンター位置をずらすと(センター位置はXNAに反映されないので)どちらも正常な位置に表示されます。

…我ながら強引な回避策ですね(汗)



◎槍ボーン追加

右目の問題は一応ケリが着いた(?)ので、槍兵再作成の続きです。

1 「2Dチェインを描く」でボーン追加

2 ボーン位置微調整
  →「ニュートラルポーズの設定」
  →「すべての変換をフリーズ」

3 チェイン/ボーン名称変更

4 チェインをGlobalSRT階層のRForearmの下に移動

5 ボーンをenvelope_groupに追加

6 エンベロープ再設定

気になるのは、キャラクタキーセットを追加しなくてもXNAでちゃんと表示されるのか?という点ですが…。

槍兵再作成30

画像が崩れました。階層の位置を変えてキャラクタキーセットを追加してもダメ。中継ボーンを追加してもダメ。

以前はこれでうまくいったんだけどなぁ…手首の階層構造の修正が影響してるのか?



◎手だけじゃない

よく見ると、ボーンを追加した槍や右手は崩れずにアニメし、関係無い右足が崩れています。何故でしょうか?

…ハッ!?もしや!?

足首のコントローラは4つあって、普段は1つしか動かしてませんでした。試しに以前のモデルで他の3つを動かすと、XNAに反映されませんでした(形は崩れないが動かない)。

ガーン!!

これまで気付いてなかっただけで、実は足首も手首同様XNAと相性が悪かったのね(爆)




◎足首階層の修正

というわけで、足首から先の階層構造も手首同様に修正しました。ついでに槍ボーンも実装。

槍兵再作成31

足首付近の4つのコントローラが全て反映されました。

修正後、表示崩れは一切無くなって、安定感が出てきました。他人には理解できないと思いますが、アクション付けてXNAで崩れないという安心感は、大変快適です!www


HPの技術資料に目玉と足首階層の件を反映しました。



◎勘違いループ

槍ボーンを実装してみると、腕骨の先よりも掌骨の先に付けた方が良いことに気付いたので階層を修正。相対位置がずれるので、ニュートラルポーズの位置を付け直すためにアクションも作り直したのですが、XNAの表示は問題なし。

その後も、腕ボーンの長さを調節したり手のエンベロープウエイトを調整したりと細かく修正。腕を曲げてもクシャクシャにならず、掌を伸ばしても自然に見えたりと以前気になった点が改善できるようになりました。まぁ、連画に取り込んじゃえば大差無いので自己満足なんですけどねw

で、出来あがったアクションをXNAで動かすと、Softimageと槍の位置が微妙に違うような…?
よく調べると、槍ボーン一本では位置アニメがXNAで反映されないことが原因でした。
この勘違いこれで何度目だっての!(爆)

エラーにならず表示崩れず好きな座標に配置して回転アニメも可能だが、座標移動アニメのみ反映されない

スケール変更不可となったため、中継ボーンを入れても腕からの距離変更不可で意味無し。というわけで、槍位置変更アニメ無しという以前の結論に戻りました。



◎位置ズレの問題

待機姿勢から歩行開始までのモーションを作成しました。

槍兵再作成32   槍兵再作成33

Softimageでビシっと決めても、XNAで槍の位置がずれます。
槍ボーンの回転の問題か?
しかしよく見ると、腕の角度が微妙に異なる気もします。
うーん、どっちの問題??

さらに腕の模様を比較すると、SoftimageとXNAで模様の大きさの比率が異なります。模様が異なるだけなら良いのですが、頂点座標もズレてないか心配です。頂点座標が少しでもズレると、槍を両手で持てなくなります。



◎試行錯誤の輪廻

手足の階層を修正して画像は崩れなくなりましたが、今度は位置ズレです。

現象が生じるからには原因があるわけで、頑張れば解決できるとは思いますが、これが最後の問題という保障も無いので、いい加減ウンザリしてきました。この問題を解決しても、また別の問題が生じたり、いつの間にかSoftimageとXNAで違ってたりするかもしれません。

シャドウリグ方式をやめれば試行錯誤の輪廻から抜け出せると期待したのですが、結果的には抜け出せてないですね。そもそもリグやシャドウリグを使うのは

・ボーンを1から作るより楽
・コントローラを使うと滑らかなアニメが手軽に作りやすい

という理由だったわけですが、実際にメリットがあるのは歩行アニメ時の足コントローラぐらいです(手は細かく動かすのでコントローラ使えない)。

むしろXNA連携で苦労しまくりなので、コントローラは諦めて1からボーン作った方がはるかにマシですね。



◎次回予告

どうにも暑過ぎなのでしばらく夏休みを取得しました。その間に考えたのですが、そもそも公式ドキュメントには「リグを使え」とは一言も書かれていないので、公式ドキュメントに沿ってボーンを1から作り直すことにします。

ここまでやっといて残念ではありますが、全てがムダになるわけではないので、気を取り直して頑張りましょう。

スポンサーサイト

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

コメント

結局、Softimageのコントローラやリグ、チェインの実装ってどうなってるんでしょうね。

まとめ

折角話を振って頂いたので、この場を借りて簡単にまとめておきます。
(興味が無い人は無視してください)

リグはチェインとコントローラの集合体です。チェインは始点と終点を含んだボーン集合体です。わかりにくいのはコントローラで、チェインの終点をコントローラにしたり、別のノードを用意してコンストレイン機能でボーンと連携させたりするようです(コントローラという単独のノードは存在せず、何かのノードをコントローラに仕立てるらしい)。

XNAにはボーンとメッシュしか渡されないので、コントローラは原則無視されると考えた方が良いのですが(但しボーンをコントローラとした場合は除く)、標準リグの問題点は、同一リグ階層にチェインとコントローラが混在しているのでXNAへの影響がわかりにくい、ということです。

例えば、手首や足首のコントローラはチェイン終点なのでXNAには渡されず、手首足首の先に配置されたボーンはXNAでおかしくなることがあります。この「~ことがある」というのが曲者で、ある特定のアニメを付与した後で初めて発覚することが多く、そうなるとまた階層から作り直し(その後の工程も全てやり直し)になるので、その繰り返しにいい加減ウンザリした、というわけです。

サンプルモデルのシーンファイルでは、ボーンとコントローラの階層は完全に分離されているので、今後はそちらの方式を見習います。…但しコントローラの作り方がよくわからないので、当面はコントローラ無しですが(苦笑)

コメントの投稿


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

トラックバック


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



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