CG Gallery


 AT寿司氏によって3Dモデルを表示するステージdllが開発された。従来の3Dステージを作成するには専用dllを必要としたため、プログラミングとDirectXに関する知識が必要だったが、このdllによってそれらの知識がさほどなくても、3Dステージを作成することが出来るようになった。dllの仕様は、X形式のモデルデータを読み込んで表示するもので、テクスチャ読み込みにも対応している。ステージを作成するにはモデルデータやテクスチャを用意するだけで良いことになる。
 ステージデータとなる3Dモデルをモデラーで作成する。 モデラーはXファイルを出力できるものであれば何でも良いが、以下の理由でメタセコイアを推奨する。メタセコイアにはシェア版とフリー版があり、フリー版は機能が一部制限されているが、フリー版でもXファイルの出力には対応しているので、フリー版メタセコイアだけでもステージ作成のためのモデリングには十分な機能がある。メタセコイアの操作方法そのものについての説明は省く。
 
 サンプルとして作成したステージの構成はいたって単純で、キャラが立っている地面、遠景及び近景の立体物で構成されている。ゲーム中、Goluah本体が使用するカメラは原点付近からZ軸プラス方向を向いている。今回はZ軸マイナス方向に背景が展開するようにオブジェクトを配置している。このままの座標系ではカメラとは逆の向きに配置している形になっているが、デフォルトの設定でXファイルを出力するとZ軸とX軸が反転して、結果的に適正な位置に配置されるようになっているので、敢えてこの形で配置している。
 地面は一枚のポリゴンにテクスチャを貼り付けている。本格的に作るのであれば、単なる平面にとどまらず形を工夫してみるのも面白い。近景には立体的な家を配置している。 遠景は一枚のポリゴンに画像を貼り付けたものを使用している。遠景を多重スクロールさせる場合は、アルファマスクを持たせたPNG形式の画像貼ったポリゴンを複数用意して、奥行きずらして重ねればよいが、処理が重くなるので、遠景が複雑な場合は近景の立体物をコンパクトにまとめる工夫が必要になる。
モデルのデータが重くなるとゲームに支障が出ることになるので、家は面取りをせず、シンプルに作るようにしている。質感はテクスチャで表現する。モデルの主要な部分にのみテクスチャを貼っている。テクスチャをマッピングする際に注意が必要なのは、UV値が0-1の範囲を超えないこと。例えば、小さなテクスチャをより大きなポリゴン上に並行投影すると、ポリゴンの端がテクスチャの外にはみ出した格好になる。それでもメタセコイア上では自動的にタイリングして表示してくれるので、全く問題ないように見えるが、このdllではゲーム中にその処理が出来ないので、テクスチャからはみ出した部分は正常にマッピングされなくなってしまう。これを回避するために、テクスチャを大きくして(小さなテクスチャをより大きな画像に敷き詰めて)対応した。
 
 
 3DCGを作成する際にモデル形状やテクスチャ素材を利用することは多いが、自由に使えるのはレンダリング画像だけで、モデルやテクスチャそのものやそれを改変したものを配布するのは利用規約に引っかかることが多い。dllの仕様上、モデルデータやテクスチャ画像を配布する形になるので、そういった素材はあてに出来ない。ステージの仕様上、ポリゴン数を抑えなければならないので、モデルの形状については、どっちにしても自前で作らなければならないし、あまり複雑なモデルを作る必要もないので、モデルの形状についてはあまり問題にはならないと思う。
 むしろテクスチャの方が、自前で作るとなると慣れている人でもない限りかなり面倒だと思う。簡単にテクスチャを作成できるフリーソフトも結構あるので、そういったものを使ってみるのもいい。今回はフリーソフトの彩彩畑を使用して小さなテクスチャをつくり、それをPaintgraphic(¥1980)で敷き詰めて大きなテクスチャに加工した。しかし仕上がったステージを見ると、もっと荒いテクスチャでも良かったようだ。モデリング段階ではモデルの細かいところを見ながら作っているので、テクスチャを細かくしがちだが、実際にステージに仕上げてみると、細かいところは見えなくなる。ちなみに、遠景や地面のテクスチャはVUE5で出力したものを使用している。ソフトを持ってる人ならすぐ気づくようなベタな構成になっている。
IROMSOFT               http://www.hm.h555.net/~irom/
 この家は、一般素材としても利用できるように欲張って家の中にまでポリゴンやテクスチャを貼っていたので必要以上に重くなってしまった。家のデータのポリゴン数1900はやはり重過ぎたので、正面から見えない面はばっさり削除した。これでも1200程度のポリゴンがある。壁とは別オブジェクトで作っている窓部分はさらに窓枠と窓に分かれているのでかなりのポリゴンを使っている。 ゲーム用に使うことを考えるともっと思い切って、ポリゴンを省くようにするべきだが、当初に比べればずいぶん軽くなったのと、せっかくの窓枠を壊すのも忍びないので、とりあえずこれで良しとする。もっともハードウェア頂点処理が出来ない環境ではこれでもかなり厳しいものがあると思われる。こうしてみると窓枠以外でもまだ削減する余地はあるけど。

 モデラー上と実際のゲーム画面では、モデルの見え方が大きく異なっている。したがってマテリアル関係はゲーム側にあわせて調整していくことになる。実際にはゲーム画面を見ながら出力を繰り返して調整していくことになる。
 メタセコイアのマテリアルはデフォルトで上のようになっている。現行のdllはこれら全てのパラメータに対応しているわけではない。 モデルのカラーに関しては、テクスチャとソリッドカラーを指定することができ、マッピング方式についてはUVマッピングを読むことができる。諸設定欄については、現状のdllで読み込んで対応できているのが、拡散光と自己照明の二つ。残念ながら残りはまだ読み込んでいなかったり、不具合があるので使えないと思ってよい。
 拡散光は光源から直接受ける光に対する反応を設定する。値が大きいほどオブジェクトは明るく陰影と色彩がはっきり出る。自己照明はオブジェクトそのものが発光して明るくなる(ただし他の物体を照らすわけではない)パラメータだが、現状では環境光が使えないので、少し設定してやったほうが良さそう。このページトップのスクショでは、家(ガラスを除く)のマテリアルはデフォルトに近いままだが、周囲の景色に比べると、環境光がないこともあって、やや家が暗くなってしまっている。

 遠景のマテリアルは拡散光を0にして、自己照明を1.00に上げている。こうすると光源の影響による陰影が現れず、テクスチャの色がそのまま出力される。遠景については、一枚絵に陰影が付くと酷いことになるので、このようにした方がよいと思われる。また近景についても、テクスチャを工夫して敢えて拡散光をキャンセルするというのも一つの選択肢としてある。
 テクスチャファイルの指定はファイル名だけを指定し、モデルデータを保存するフォルダにテクスチャファイルも置いておくこと。そうしないとX形式で出力した際に、テクスチャを読めなくなってしまう。
 Xファイル形式への出力は次のように行う。デフォルトではこの状態になっているので、作例どおりの配置をしている場合は、そのままでよい。法線は陰影計算に必要なので通常は出力する。UVマッピングもマテリアルにテクスチャを貼っている場合は出力する必要がある。
 出力するファイル名はback.xとして、dllと同じフォルダに保存する。また、読み込むテクスチャもdllと同じフォルダに入れておく必要がある。メタセコイアはX形式を出力は出来るが、読み込みは出来ないので、必要に応じて、mqo形式での保存も行うことを勧める。

注)フリー版では頂点カラーは選択できない。
 マテリアルの調整をした。自己照明は0.3まで上げているが、周囲とのバランスの問題なのでいつも同じ設定でよいわけではない。  house.zip へのリンク

back