プロフィール

Na-7

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


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:Softimage Mod Tool
伊籍
伊籍
元劉表配下の文官。劉表死後、劉備に仕えた。内政や外交に手腕を発揮し、諸葛亮らと共に蜀の法律を制定した。
演義では、劉備の馬が的盧であると教えたり、蔡瑁の劉備暗殺計画を伝えたりした。



◎ACLはインスタンシング対応?

前回のTEAさんからの回答コメントに、content.load遅延バージョン(ここでは以後ReadAsset方式と呼びます)のプログラムを添付しました。これは2回目以降もモデルの新しいコピーを行うもので、content.loadの読み込みは遅くなります。

しかし描画部分のプログラムは一切変更していないので、描画速度は元のバージョンと同じはずです。ところが、実際に試してみると差が出ました。

ACL:ReadAsset方式
10体 60fps
50体 10fps
100体 2fps

ACL:非ReadAsset方式
10体 60fps
50体 15fps
100体 6fps

モデルデータをコピーしたReadAsset方式が遅いということは、「ACLは同一モデル複数表示を想定し、インスタンシング技術(マテリアルバッチなど)を内部実装している可能性がある。(HPの推測より)」の可能性が高まったのではないでしょうか?



◎インポータの変更

ランタイムライブラリに性能差があるかどうかを簡単に確認する方法は無いでしょうか?…そうだ!インポータとライブラリの組み合わせを変えてみるのはどうでしょう?

槍兵モデル(.xsi)
コンテントインポータ:Crosswalk Importer
コンテントプロセッサ:Model-Animation Library

と設定してビルドすると…ビルドエラーになりました。

Building content threw NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。

(ちなみに、プロセッサにModel-XNA Frameworkを設定すると、ビルドは通りました。当然動きませんがw)
念のため、.xsiファイルを槍兵モデルからロボットモデルに変えてみましたが、現象は変わりませんでした。
こりゃダメだなぁ…。


仕方がないので、逆の組み合わせを試してみました。

槍兵モデル(.x)
コンテントインポータ:X File - XNA Framework
コンテントプロセッサ:Crosswalk Model Processor

と設定してビルドすると…ビルドは通りました。

インポータの変更

えーと、足の部分が拡大されているようですね。シェーダーが変わってしまったので、ワールド座標を変更してもサイズが変わりません。

頑張れば正常に表示できるかもしれませんが、どうせ頑張るなら.FBX渡しを模索しましょう。



◎FBX渡しに再チャレンジ

まずロボットモデルをFBX書き出し機能で出力します。オプション設定はとりあえず以下のようにしました。

FBX出力オプション設定

すると、こんな警告画面が出ました。

FBX出力時の警告とエラー

テクスチャのUVマッピングとかで警告が出たようですが、ログファイルが指定の位置に存在しません。
警告内容は以前試した時よりマシになりましたが、ログファイルが存在しないのは相変わらず謎です(笑)

これをXNAに追加し、

コンテントインポータ:Autodesk FBX - XNA Framework
コンテントプロセッサ:Model-Animation Library

と設定してビルドすると…ビルドは通りました。
(ちなみに、インポータにCrosswalk Importerを指定するとビルドエラーになります)

以前はビルドエラーになりましたが、今回はサンプルモデルを使用したお陰で、ここまでは順調…と思いきや、Content.Loadでエラーになりました。

An unexpected error has occurred.

直訳すると「予期しないエラーが発生しました。」とのことですが、こちらのItoさんの回答を見ると、ドライバ側が正しくエラーハンドリングできなかった場合に発生するとのこと。
こちらにも別の事例がありましたが、要するにハードの問題である可能性が高いようです。

心当たりありすぎ(ー_ー;



◎ハードエラー回避テク

ふとコンテントプロセッサ(Model - Animation Library)のプロパティを展開すると、「Resize Textures to Power of Two」などがありました。ひょっとして、これをTrueにすればいちいちテクスチャ解像度を修正しなくても良いのでは?

実際に試したら、

Invalid texture. Face 0 is sized 512x499, but textures using DXT compressed formats must be multiples of four.

Device does not support multi-level texture width and height values that are not powers of 2.

上記の2つのエラーは、Resize Textures to Power of TwoをTrueにすると回避できました。これまでテクスチャ解像度をいちいちペイントツールで修正してましたよ(T_T)

ちなみに、このプロパティはXNA標準のモデルプロセッサやテクスチャプロセッサにも装備されています。



◎サブPCに開発環境構築

本題のFBX渡しに戻ります。
予期しないエラーは不可解で、アテもなく適当にいじってどうにかなるとは思えません。

いい加減新しいPC買おうか悩みましたが、結局サブPC(GeForceFX5200)にXNA開発環境を構築することにしました。
サブPCは実行環境テスト用にしておきたかったのですが、仕方無いですね。

USBメモリによるデータ渡しには限界を感じたので、ネットワークHDDを購入しました。メルコ製ですが、付属ソフトによる自動セッティングが簡単で感心しました。一般向けってお手軽だなぁw


「SoftimageはXNA3.1で動かない」との書き込みをちらっと見かけたことがあるので、XNA3.0を導入したかったのですが、今は英語版しか無かったので、結局XNA3.1日本語版を導入しました。

数時間かけて環境構築し、プログラムを実行すると…メインPCと同じエラーが出ました。ガーン!!

安物の旧式とはいえメーカー製のグラボなんだから、せめてエラーメッセージぐらい返してくれ~!(泣)



◎キャプテンモデルのFBX渡し

ロボットモデルが「予期しないエラー」で行き詰ってしまったので、今度はキャプテンモデルで試してみました。するとコントローラ設定行で

指定されたキーはディレクトリ内に存在しませんでした。

とエラーになりました。アクション名が見付からないと言われたわけですが、アクション名を「bind_pose」や「walk」にしても同じエラーが出ます。

FBXファイルを検索すると、上記アクション名は存在せず、

Pose: "Pose::BIND_POSES", "BindPose" {

こんな記述があったので「BIND_POSES」や「BindPose」を指定してみましたが同じエラーが出ます。FBX出力時にアクションが格納されていないような気がするなぁ…



◎Softimageのサンプルプロジェクト発見!

ネットを探っていたら、こちらの記事を見付けました。

「4. XNA Game Studio での単純なモデルの表示」ではFBX渡しを実装していますが、非アニメーションモデルなのであまり参考にならなさそうです。

しかし「7. ゲームの作成」では、アニメーションモデルを.xsiで渡しており、複数表示の参考になりそうです。

しばらく英語ビデオを見ていましたが、時間が長いし肝心な所がわかりにくいので、プログラムをダウンロードすることにしました。

236MB!デカいな~



◎次回予告

というわけで、サンプルプロジェクトの解析を始めた所ですが…自作コードに問題があったんじゃないかな~?(汗)

解析結果は次回報告しま~す!

スポンサーサイト

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

コメント

コメントの投稿


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

トラックバック


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



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