劉封劉備の養子。孟達と共に上庸を攻略し守備するが、関羽の援軍要請は断った。孟達が魏に寝返った際、誘いに乗らず抵抗したが敗北、関羽見殺しと上庸失陥の罪を問われて死罪となった。
◎何かおかしい前回記事で「ライトをモデルの階層下に移動したら色が鮮明になった」と書きましたが、その後いろいろ試してみると、何かおかしな感じです。
・AmbientColorのみ反映される
・DiffuseColorが反映されない
・モデルに陰影が付かない
・ライトを削除しても色が変わらない
AmbientColorのみが有効で、ライトが無視されているようです。ライトの作り方が悪いのかなぁ?
◎ライトあれこれライトに関する英語ヘルプを読むと、モデルの中にライトを置くのは正解のようですし、それ以前に、XNAViewerはデフォルトでscene_data.xsiが読み込まれているので、ライトを別途用意する必要は無さそうな気もします。
Point1〜3に関しては、ライトタイプがポイントなので、ポイントライトであることは間違いなさそうですが、自分で選択して移動する方法がわかりません。新たにポイントライトを作成して移動すると、Point1〜3も同位置に移動します。いまいち正体が掴めないなぁ。
ロボットのサンプルシーンを見ると、ロボットモデル内にライトは存在せず、scene_dataの中にPoint1〜3が存在するだけです。これが基本構成と思いますが、Lambert.fxを使用する場合はどうすべきなんでしょうね?
◎ポリゴン数と頂点数最近蒸し暑くなってきた上に、PC3台の熱気の中で試行錯誤してると、やる気も集中力もどんどん落ちてきます。せめてもう少し効率的にできないものかなぁ?
一番ウザイのは、毎回サブPCにデータを持って行く所です。もう百回ぐらいやってます。いい加減USBメモリ壊れそう…。
メインPCで発生するインデックス要素サイズエラーを回避できれば、この手間は省けます。
モデルメッシュを選択して 編集>選択の情報 とすると、こんな情報が表示されました

ポリゴン:844 triangles, 6786 quads, 0 polys with 5+ pts
三角形:59352 triangles
ポリゴンには、三角形、四辺形、nポリゴンの個数が計上されているようですが、三角形の数と計算が合わないなぁ…まぁいいや無視しましょう。
三角形の方がXNA的ポリゴン数に該当すると考えて良さそうです。尚、シーン全体の三角形は62392だそうです。
三角形が約6万ということは、頂点数は約18万。インデックス要素数は不明ですが、この様子だと16ビット超えてもおかしくありませんね。多分これがエラーの原因でしょう。
それにしても、デフォルト取得モデルの頂点数が約18万とは驚きですね。ゲーム用のモデラーとは思えないんですけど…最近のゲームってこれが普通なんでしょうか?
◎頂点数を減らす私が知っている頂点数を減らす方法は、マイナスキーを押すだけなんですが、これはModTool表示上だけ有効かもしれません。とりあえずやってみましょう。
おや?三角形が14416に減りましたね?ひょっとすると…
おお!エラーを回避してメインPCで動きましたよ!しかもDiffuseColorの赤とAmbientColorの緑が両方反映されていて、ちゃんと陰影も付いてます。サブPCのアレはいったい何だったんだ〜!
◎結論同じプログラムをサブPCで動かしたら、やっぱり以前の通りでした。

色がおかしかったり陰影が無かったりするのは、どうやらグラボの違いによるもののようです。サブPCはインデックスエラーが出ないので、グラボはサブPCの方が上と思っていましたが、一概には言えないようですね。尚、ドライバの設定はデフォルトのままなので、設定をいじれば見た目が変わるかもしれません。
また、メインPCで試してみましたが、結局「ライトをわざわざ作る必要は無い」という結論に至りました。Scene_Data.xsiにポイントライトが組み込まれているためか、Lambert.fxもそのまま使えるようです。
◎サブディビジョンについてテンキーの「-」を押すと、頂点数やインデックスサイズが減ることは間違いありません。私はこれを「サブディビジョンレベルを下げる操作」と認識しているのですが、ヘルプを読んでもいまいち確証が得られませんでした。
また、人体モデルのPolygon Meshプロパティには、「サブディビジョンルール」と「三角形にループを使用」は表示されているのに、「サブディビジョンレベル」が表示されていません。
「メッシュ全体ではなくポリゴン単位で指定すべきなのか?」
「テンキーが無い人はどうするのか?」
「三角形がXNA上のポリゴンに該当するという認識で間違いないか?」
などの疑問もありますが、当面の不都合は無いので、今はこれ以上追及しません。
◎DirectXとFBXdotXSIでスキンアニメするモデルが作成できたわけですが、これを.Xや.FBXでXNAに持って行ってACLで表示することはできないでしょうか?
ではまずDirectX書き出し機能による出力を…って、ModToolが落ちました!オプション指定が悪かったかなぁ?…いや、デフォルトでも落ちますね。どうやら、このモデルの構成はDirectX書き出し機能の想定外らしいです。
次にFBXの書き出し機能による出力を試みると、警告が2種類出ました。1つはテクスチャ関連ですが、もう1つは…よくわかりません。ボーンかな?
「このジオメトリはサポート外です。exportする前に、コンバートしてください」と言われました。ちなみに、エラーログのパスも表示されていますが、そこにログファイルが存在しません。何故?
ファイルは出力されたので、とりあえずXNA&ACLに組み込むと、ビルドエラーになりました。
Vertex is bound to bone "Biped_Shadow:LFootBone1", but this bone is not present in the skeleton.スケルトンに存在しないボーンがあるってことでしょうか?
何やら根が深そうです。
これは憶測ですが「モデルは各フォーマット向けに調整してから出力しないと、XNAで読み込めない」ってことじゃないでしょうか?.Xや.FBXで渡すスキルを身に付けるには、また試行錯誤しないといけないのかもしれません。
もう勘弁してください!(笑)
◎次回予告Softimage Mod Tool修得シリーズは今回で終わりです。XNA連携でこんなに苦戦するとは思いもしませんでしたが、でも半分はグラボのせいかもしれません。素直に買い替えた方が早かったなぁ。
次回は自作モデルを修正します。
テーマ : ゲーム製作 関連 - ジャンル : ゲーム
コメントの投稿