プロフィール

Na-7

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


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:Softimage Mod Tool
司馬懿
司馬懿
魏で功績を重ねて大権を握り、後の晋の礎を築いた。演義では諸葛亮のライバルとして描かれている。荊州の戦いでは、関羽の北上に狼狽し遷都を諮る曹操に反対し、孫権を動かして関羽の後背を突く作成を提案、これを成功させた。



◎情報収集

ヘルプが駄目だったので、ネットを探ってみたのですが、検索範囲を海外まで広げても、ランタイムのコードに関する情報は殆ど見当たりませんでした。

唯一見付けたのがこちらのソースですが、残念ながらBasicEffectなので参考になりません。

いや待てよ?現在のエフェクトをBasicEffectと見なして強引に読み込めないかな?
…ダメでした。「キャストできません」とエラーになりました。



◎チュートリアルビデオ

どうしたものかと悩んだ末、海外の公式チュートリアルビデオをチェックすることにしました。ビデオでコードまで踏み込んでいる可能性は低そうですし、英語で解説されてもさっぱり解らないのですが、こうなったらダメモトです。

こちらが多分公式のチュートリアルビデオです。今回はラスト2つを視聴しました。


特に気になったのは、エラーチェック(XNA Game Studio>Diagnose Models)を実行した時に、警告やらエラーやらが大量に表示されたこと。「自分だけじゃないんだなぁ」と安心していたら、いつの間にかエラーが無くなりました。ちょっとびっくりしましたよ!「お前、今何やった!?」って(笑)

ビデオを見直すと、XNA Game Studio>Publish Models の「Consolidate images and FX files」ボタンを押してました。ヘルプを確認すると、テクスチャ/Effectファイルをコピーする機能のようです。私は予め手動コピーしていたので動作上の問題はありませんでしたが、本来はこうするべきだったのですね。


他に気になったのは、

・ビューポートは「DirectX9」画面で編集している模様

・マテリアル関連を操作しているが、よくわからない

・「Publish」直前に「Transform>すべての変換をフリーズ」を実施している

・モデル出力先フォルダがXNAコンテンツフォルダではない

などです。マテリアル関連は後できちんと確認した方が良さそうだなぁ。



◎要総チェック?

ビデオ2本見ただけ(しかも解説無し)でこれだけ気になる点が出てくるということは、全ビデオを翻訳して見直した方が良いかも…と迷いましたが、結論は保留。

仮にビデオの内容をマスターしたとしても、XNAでモデルを制御できなかったら意味無いですからね。
というわけで、プログラムに戻ります。



◎コントローラ導入

ビデオからは何もヒントが得られなかったので、どうしたものかと思っていたのですが、たまたまヨドバシカメラに行く用事があったので、ついでにXBOX360のコントローラを購入しました。本体は持ってないんですけどね(笑)

これを機にSoftimageの再インストールを実施し、XNAViewerプロジェクトを初期状態に戻しました。これまで(キーボード対応など)プログラムを多少改造していたので、初期状態に戻せば何かヒントが掴めるかも…と期待したからです。

コントローラ操作1   コントローラ操作2

キーボードではアナログコントローラを再現できないので、その辺の機能はこれまで無視してましたが、ようやく操作できるようになりました。

しかしアナログコントローラを操作すると、画面上での位置は移動しますが、ランタイム表示オブジェクトだけでなく非ランタイム表示オブジェクトも移動します。やはり、この操作はワールド座標ではなくビュー座標を変更してました。

合計3個(アナログ2個と十字1個)のレバー入力が可能なのに、ワールド座標変更操作が1つも無いのはサンプルとしてどうかなぁ?



◎FXファイルの書き換え

結局新たなヒントは1つも得られませんでした。残る手段は、FXファイルの書き換え/差し替えぐらいでしょうか?ハードルが高そうなのでなるべく避けたかったのですが、他に思い付きません。

…で、腹をくくってFXファイルを解析すると、意外なことが判明しました。

以前さらっとxsi_defaultvs.hlslを見た時に、Modelパラメータをベースとしたワールド座標変換処理が記述されていることを確認したのですが、実はスキンモデルと非スキンモデルに処理が分かれてて、以前見たのは非スキンモデルの処理でした。

スキンモデル処理内のワールド座標変換処理は、Modelパラメータを無視してるようです。ワールド座標が反映されない理由は、ここにありました。


というわけで、ワールド座標を反映するよう書き変えました。

// transform in screen space
// OUT.position = mul( mul(weightedposition, View), Projection );

float4 position = mul(weightedposition, Model);
OUT.position = mul( mul(position , View), Projection );


FXファイル書換

前回の画像と見比べてもらえばわかると思いますが、今回の槍兵モデルはワールド座標の変更が反映されています。やっと思い通りに動かすことができました!

キャプテンモデルのワールド座標の変更も試みましたが、こちらはさらにXNAコード改修が必要のようです。まぁ、元々1体だけ表示するプログラムですからね。



◎意図不明

XNAViewer及び添付FXファイルは、非スキンモデルはワールド座標パラメータに対応してますが、スキンモデルはワールド座標パラメータ非対応でした。

何故このようにしたのか、私には設計者の意図が理解できません。私のレベルでは気付かない、何か深い意味があるのでしょうか?



◎次回予告

8月になったので、次回は「7月の総括と8月の目標」です。

スポンサーサイト

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

コメント

Softimage記事を参考にさせていただいています。
スキンモデルのワールド座標について記載の通り試したら自作モデルが動かせるようになりました。
もとの設計思想どころかHLSLとかサッパリなので大変たすかりました。

コメントありがとうございます

HOSSIEさんこんにちは。
コメントありがとうございます。

ブログやHPの記事は「これって誰かの役に立つんだろうか?」と自問しつつ書いているのですが、お役に立てたようでとても嬉しいです(^^)


HOSSIEさんのブログを拝見させて頂きましたが、XNA+物理エンジン+Softimageの組み合わせは初めて見たので面白かったです。自分も試してみたい衝動が湧きあがってくるのを何とか抑えましたw

それでは、今後ともよろしくお願いします。

コメントの投稿


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

トラックバック


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



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