プロフィール

Na-7

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


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発
槍兵再作成28
再作成中の槍兵モデル
手首から先の階層構造を修正してXNAで可動可能とし、エンベロープウエイトを調整した。



◎ボーン追加

槍と着物の裾のボーンを追加します。

・中継ボーン不在の空中浮遊ボーンOK
 →但しGlobalSRT階層の構造は要注意

・Softimageのコンストレイン機能はXNAでは無効
 →ボーン階層による自動連動しかない??

最初は裾ボーンを腰骨の下に付けたのですが、XNAでは連動せずにNG。左右の裾ボーンはそれぞれ左右の大腿骨に付けるとして、問題は中央の裾ボーン。結局左右いずれかの大腿骨に付けて片側の連動は無視。うーんイマイチ…。

中継ボーン不要とわかったので、以前と同じボーン数で裾を2段階曲げることが可能になりました。但し着物メッシュの頂点座標が膝の位置からかなりずれていたので、あまり自然な感じにならない気がします。あまり意味が無いからボーン数減らすべきか?でも最大ボーン数増えたのに節約してもなぁ…うーむ。

決めかねたのでボーン1本と2本のパターンを両方作成。しかしXNAではどちらも表示が微妙に崩れます。やはり中継ボーンは必須なのか?

槍ボーンの方が構造がシンプルなので槍ボーンでいろいろ試したら、中継ボーン不在でも自在に動かせて表示も崩れず、槍ボーン自体は全く問題ありませんでした。



◎やっぱり駄目

槍ボーンのテスト中に気付いたのですが、手首から先のボーン(掌、指など)を動かしてもXNAに反映されません。

ガーン!!

RHandRootの移動先が悪いのか?しかし移動先をあちこち変えても上手くいきません。元の位置に戻すと…(表示が崩れる上に)手首から先のボーンは動かず。

最初からダメだったんかい!!

ちなみに、下半身はXNAでも足首まで自在に動きます。GrobalSRT階層内で足と腕の違いを確認すると、足チェインのRlegEffは通常のEffで、足首や足先のコントローラは別階層に存在し、腕チェインのRArmEffはコントローラ兼用です。

あれこれ試したのですが、

・ボーンを別のチェインに移動することはできない(チェインの移動は可)

・ボーンの下にチェインを移動するとXNAに反映されない

・XNAにはコンストレイン機能が反映されない

・コントローラをenvelope_groupに追加してエンベロープ再設定してもXNAでは無視される

・ボーン削除不可(後述)

Softimageのチェインやコントローラの概念がXNAには反映されないのがイタイです。はっきり言って「お手上げ」(ーー;



◎諦めが悪い性質(タチ)です

もうリグをやめてボーンを1から作ろうかと思いましたが、ここまでやってリグを諦めるのは何か悔しいですし、手首以外の胴体や下半身がもったいない気がします。手首から先のボーンを削除して作り直せればベストですが、ボーンは削除できないし…。

…いや、ちょっと待てよ?Softimageのボーンは削除できなくても、envelope_groupから削除すれば、XNA向けボーンから除外されるのでは?(後述)
元のボーンはhiddenグループに入れれば非表示に出来そうだし、これで疑似的に作り直しが出来るかも??

…で、手首コントローラ若しくは腕先にチェインを追加してみたのですが、

槍兵再作成22

やはり画像が崩れました。チェインを追加すると以前と同じ階層構造になるので、表示が崩れるのは当然かもしれません。

こうなったら手首コントローラは諦めて、腕チェインの中にボーンを追加しましょう。以前は腕が複数のチェインで分かれていたのですが、今度は1つのチェインに統合します。

槍兵再作成23

画像は直ったのですが、手首と肘が動きません。新ボーンの手首はともかく、既存ボーンの肘まで動かなくなるとは…。

その後、アクションキーを肩/肘/手首と付け直してUpdateActionClipボタンを押したら肩と肘は動きました。ボーンを追加したらチェイン全体のキーを全て付け直さないといけないのかもしれません。



◎キャラクターキーセット

どうしても新しい手首ボーンがXNAで動きません。完全に無視されてるなぁ…。

いや、エンベロープが崩れずに再現されてる以上、ボーン情報はきちんと渡されてると思います。渡されてないのは新ボーンのアニメ情報(トランスフォーム情報)でしょう。

…あれ?そういえばボーン追加や階層変更時にキャラクタキーセットって更新が必要だったっけ?でも、槍ボーン追加時は何もしなくても綺麗に動いたからやっぱり関係無いか?いや待て、アレはボーン一本だけだったから、アニメ情報じゃなくて基本情報を更新してたのかも?

デフォーマからキャラクターキーセットを取得してアクションを付け直すと…

槍兵再作成24

おお動いた!やっと手首から先が動きました!キャラクターキーセットを更新しなかったのが敗因だったのか~!
最近は意識してなかったので全然気付けなかった…。



◎確認

念のため、もう一度始めから作り直して確認すると、元の階層構造では、キャラクターキーセットを更新しても手首から先がおかしくなりました。

槍兵再作成25

デフォルトリグの階層とXNAが相性悪いというのは間違いないですね。では、手首から先のチェインを肘ボーンの先に移動してみましょう。

槍兵再作成26

手首から先もきちんと動きました。つまり、

・GlobalSRT階層を修正する
 →手首から先のチェインを肘ボーンの先に移動する

・キャラクターキーセットを取得する

上記2点を実施すれば‘デフォルトリグモデルをXNAで使える’ということです。(手首から先のボーン追加作業は不要)



◎着物の裾ボーンについて

ようやくベースのリグが落ち着いたので、裾ボーン追加について再検討します。

裾ボーンは「より自然に見せたい」というのもありますが、どちらかというと「内側の着物が外側にはみ出て見た目が悪くなるのを直したい」というのがそもそもの動機です。

しかし綺麗に直すには

・着物の裾をひざ下まで伸ばす
・ポリゴンを3段階以上に分割する
・ボーンを2段階以上に増やす

上記を実施した上で、ほぼ全てのアクションで裾ボーンの位置をかなり神経質に調整する必要があります。

しかしよく考えたら、メイン画面用のサンプルモデルで、しかも低解像度連画取得のためにそこまでする必要があるでしょうか?

というわけで、着物の裾ボーンもパス。ボーン数上限が増えたのに、槍兵ボーン数はどんどん減るなぁ(汗)



◎エンベロープウエイト調整

この段階では、アクションを付けると鎧が曲がったり、衣服の一部が鎧の上にはみ出したりします。

槍兵再作成27

これを直すために、まずメッシュ毎にエンベロープのデフォーマを個別指定します(エンベロープ再設定)。

エンベロープを付ける際に、親指の付け根ボーンが移動できずに悩んでいたのですが、hiddenグループからLThumbRootを削除したら編集可能となりました。また、指ボーン選択時にリターンキーでパラメータを表示し、一般の「長さ」を変更すると、ボーンの長さが調整できました。(スケール変更ではないのでXNAでも崩れません)

ボーンの初期ポーズを修正したら、右クリックでチェイン全体を選択し「ニュートラルポーズの設定」→「すべての変換をフリーズ」でポーズを記憶します。(ボーン単位で記憶すると後で不都合が生じるかも)

後で「すべての変換をリセット」とすると記憶したポーズに戻せますが、この操作はチェイン単位でまとめて戻すことはできません。

デフォーマの個別指定が完了すると、あちこちはみ出た映像が多少まともになります。しかしまだ不十分な箇所があるので、エンベロープウエイトを頂点単位で細かく調整します。

槍兵再作成28   槍兵再作成29

まだ一部はみ出ることがありますが、これでもかなりマシになったので、とりあえずこれでいきましょう。どうしても気になるようならまた検討します。



◎技術資料

最近身に付けた手法にようやく自信が持てるようになったので、技術資料をHPにUPしました。

XNA向けSoftimageモデルの最大ボーン数を増やす

SoftimageモデルのXNA向けマテリアル設定を改善する

Softimage Mod Tool と XNA の連携手順(その2:デフォルトモデルシャドウリグなし)


記事の執筆中に、分かった(と言うより忘れてた)ことがあります。

1つは、envelope_groupの中のボーンを削ればXNAに渡すボーン数が減ると予測したのですが、実際には減らない、ということ。昔も同じこと考えて試した記憶が…(苦笑)

1つは、Softimageはボーン削除可能ということ。ぐはっ!!ボーンの個別削除は不可能なれど、チェイン単位なら削除可能であることをすっかり忘れてました!(爆)

ならば、リグから不要ボーンを削除して58以下に減らすと、改修せずともXNAで動くのでは?…と考えて、実際に指先のチェイン(エンベロープ非設定)を削除してXNAでビルドすると、致命的エラーでVisualStudioごと落ちました。あらら…。

上手くやればXNAでも動くかもしれませんが、追求するとまたハマりそうなので、ボーン削除は先の課題とします。



◎次回予告

改めてHPの記事にまとめると、自分の勘違いに気付いて恥ずかしいやら呆れるやらw
でも色々気付けたのは良かったです^^

次回は槍ボーンの追加とアクション作成です。

スポンサーサイト

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

コメント

コメントの投稿


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

トラックバック


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



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