プロフィール

Na-7

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


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発

開発中のメイン画面
槍兵歩行モーションが実装された。Softimageモデルとなったため、以前と少し見た目が異なる。



◎ランタイムライブラリの組み込み

今回は、自作の連画取得ツールに槍兵歩行モデルを組み込みます。

SoftimageモデルをXNAで動かすために、インポーターやランタイムを組み込む必要がありますが、注意事項がやたら多くて厄介です。XNAバージョンの問題とかもあるし…ブツブツ。

何種類ものビルドエラーを半日がかりで一通り解消しましたが、肝心のモデルは画面に表示されません。やはりこのランタイムは一筋縄ではいかないですね。(これに比べるとACLは偉大だなぁw)

結局、この問題の原因はシーンファイルでした。Softimageで使用中のシーンファイルをコピーしただけではダメで、XNAのカメラに合わせる必要がありました。そういえば、これも注意事項の1つでしたね。


最初は、組み込み手順をまとめてHP記事のネタにしようかと思っていたのですが、注意事項の多さに嫌気がさしてやめました。頑張って書いても、結論は「こんなの使わない方がいいですよ」になりそうだし(爆)



◎ポージング

ランタイムの組み込みは何とか成功しましたが、連画を取得するためには、現在取得中の画像番号に合わせてモーションのポージングを行う必要があります。しかしこれがどうしても出来ません。

XSIAnimationContentクラスのCurrentTimeやPlayBackを利用すると、任意のタイミングのポーズを表示することができますが、停止せずに動き続けてしまうのです。Durationを0に設定してもダメでした。誰か止めて~!

XSIXNAランタイムの制御に関しては、マニュアルもネットもアテにできないので、ひたすら試行錯誤しかありません。ランタイムソースを解析すると、PlayBackメソッドの中で時間が加算されていたので、これを書き変えたら任意のポーズで静止しました。



◎アニメーションブレンド

ポージングは出来たのですが、任意の間隔で連続画像を取得すると、予想と異なる画像が表示されました。

タイミングのずれ?
でも初期動作のタイミングは合ってるようだし…??

いろいろ試してみると、どうやら無意識のうちにモーションブレンド状態だったらしく、モデルのニュートラルポーズ状態と、作成したモーションを、PlayBackメソッドの引数blendで指定するようになってました。これを0.1に指定していたために、モーションが中途半端にブレンドされて予想と異なる画像が表示されていたわけです。

ブレンド値0.1

厄介なのは、この値を1にするとモーションは完璧に再現されますが、モデルのワールド座標を制御できません。0にすると、ワールド座標は制御できますが、ニュートラルポーズから全く動かなくなります。

それで過去の私は0.1にしたのですね。そういえば、昔ブログでそんな記事を書いたかも(汗)



◎原因判明

また同じ問題で悩むのは嫌なので、今回は原因を徹底的に追及します。

昔のサンプルやXNAViewerのソースを見直したり、シェーダを書き替えたりと紆余曲折ありましたが、原因は意外な所にありました。

モデルクラスにプロパティを追加してワールド座標を受け渡していたのですが、Draw()内でプロパティにセットし、Update()内でプロパティからモデルに受け渡してました。

つまり自分で埋め込んだバグだったわけですが、ブレンド率を変えると中途半端に反映されるので、なかなか気付けませんでした。



◎実装

ようやく連画が取得できるようになったので、アニメーションエディタで初期モーションを削除し、ループモーションのみをPublishしました。(初期モーションは後日追加予定)

しかしModels[*].Animations[*].Durationの値はアニメーションエディタの編集を考慮していないようで、モーション全体の時間が入ってました。これはPublish機能のバグかもしれません。(モーションはループ部分のみ再生されます)

仕方が無いので、Durationの値を使わずに自分で計算してベタ打ちしました。どうもスマートにならないなぁ。


そんなこんなでようやく連続画像を取得。とりあえず攻撃画像と差し替えました。移動プログラムも少し変更して、移動先が侵入不可の場合、ランダムに方向転換するようにしました。



馬は走るモーション、人は歩くモーションなので、若干不自然な気もしますが…まぁとりあえずいいかw



◎次回予告

実は先週からランタイムの組み込みに着手していたのですが、ようやく一段落しました。日数はかかりましたが、かつて散々悩んだ問題をクリアできたので良かったです(^_^)


次回は、1モデルに複数のモーションを登録できるよう改修し、攻撃、歩行開始、歩行の3モーションを登録します。

スポンサーサイト

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

コメント

コメントの投稿


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

トラックバック


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



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