プロフィール

Na-7

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


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発
自作地形A2案
開発中の自作地形
適用するテクスチャ毎にインデックスデータを分割して作成した。任意ポリゴンのテクスチャ差し替えも可能。



前々回の続きです。

◎B案の懸念と対策案

B案によって性能と機能は目標レベルに達したものの、このままでは、将来問題が生じる可能性があります。想定される懸念と、その対策案を記述します。

懸念a:Color.a(透明度)が利用できない
懸念b:VertexElementUsage.Depthが利用できない
懸念c:テクスチャパターンが数百に及ぶ場合でも、正常に動作するか?

懸念aと懸念bの対策案:
現在TEXCOORDの値は全て30未満である性質を利用して、TEXCOORDにテクスチャ番号情報も含める。具体的なコード例は、C#側で「TEXCOORD += テクスチャ番号 * 1000」とし、HLSL側で「テクスチャ番号 = TEXCOORD / 1000、TEXCOORD = TEXCOORD % 1000」として分解する。

懸念cの対策案:
予め、数百個のサンプラを登録して動作検証する。その際、動作可否だけでなく、実行速度への影響度にも注意する。

上記の対策案を実施して、問題無さそうであれば、このままいけそうな気がします。但し、例外的な仕様であることは間違いないので、必ずしも理想的とは言えないでしょう。



◎2つのA案

一方、A案について考慮すると、2通りの方式が考えられることに気付きました。

A1案(従来のA案):
適用するテクスチャ毎に、頂点データ及びインデックスデータを分割して地形モデルを作成する。表示時は、分割されたインデックスデータ毎にテクスチャを適用する。

A2案:
適用するテクスチャ毎にインデックスデータを分割して地形モデルを作成する(頂点データ作成部は変更しない)。表示時は、分割されたインデックスデータ毎にテクスチャを適用する。

A2案をA1案と比較すると、地形作成速度は劣りますが、比較的シンプルなコードで、改修量は少なくなります。任意ポリゴンのテクスチャ差し替えは、(B案には劣りますが)A1案よりも簡単です。



◎A案は一般的か?

A1案とA2案はインデックスデータを分割する方式です。
ということは、1つのモデルが複数のインデックスデータを持つことになります。それって普通のやり方なんでしょうか?

この記事から推測すると、1つのモデルのインデックスバッファは1つであり、配列の範囲で分割するみたいですね。描画時は、先頭の配列番号を指定して描画するのでしょう。



◎A2案でチャレンジ!

総合的に考えると、任意ポリゴンのテクスチャ差し替えが上手く出来れば、A2案が一番良さそうです。
改修量も少量なので、試しにやってみることにしました。

(冒頭図参照)

おお!うまくいきましたね!
HLSL(カスタムエフェクト)からBasicEffectに戻し、インデックスバッファを分割してテクスチャを変更しながら表示しています。CPU使用率も70%程度でB案と同等です。



◎XNAのマテリアル形状データの格納場所

XNAで3Dモデルを扱う場合、大きく2つの方式があります。
Modelクラスにモデルデータを格納して扱う方式と、
頂点データやインデックスデータを直接扱う方式です。

前者については、マテリアル形状=ModelMeshPartであろうと先日書きましたが、後者については、マテリアル形状=インデックスデータのようですね。

マテリアルが複数存在する場合は、インデックスデータをマテリアル形状毎に分割するA2案が一般的に正しそうです。さらに推測すると、ModelMeshPartは分割したインデックス配列の先頭番号を所持してると思います。



◎テクスチャ差し替え検証

A2案で残る懸念と言えば、「任意ポリゴンのテクスチャ差し替え」です。これについても実際に試してみましょう。

スペースキーを押すと「カラーマップの色情報配列の値を書き換えて地形種別を変更し、インデックスデータの再構築を行う」ように改修しました。

自作地形A2案スペースキー押下前   自作地形A2案スペースキー押下後
スペースキー押下前(左図)と押下後(右図)

…変わりましたね~!1秒弱ぐらいです。
アクションゲームじゃないので、これなら許容範囲内でしょう。A2案に決定!!



◎次回予告

複数のテクスチャシリーズは、今回でめでたく終了です。
次回はテクスチャパターンを作成します。

スポンサーサイト

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

コメント

コメントの投稿


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

トラックバック


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



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