プロフィール

Na-7

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


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発
複数マップ画像05
開発中のメインマップ画面
マップ解像度を数倍大きくしたので、カメラをアップにしてもある程度耐えられるようになった。



◎マップの分割

これまで使用していたマップ画像は、1600×900×1枚でした。これだとマップが狭いし、カメラをズームアップすると画像が粗く見栄えが悪いので、マップ解像度を拡大します。

3D地形モデルは、512×512のパターンテクスチャが縦横それぞれ253枚分(総数64009枚分)で出来ています。つまり、129536×129536ピクセルです。これを巨大な1枚画像として扱うことが可能であれば、話はカンタンです。

しかし、XNAは最大8000×8000までしか扱えませんし、私のPCはハード制限で4000×4000までしか扱えません。そこで、画像や板ポリゴンを複数に分割し、プログラムで1枚に連結します。



◎複数マップ画像の取得

最も繊細な画像を取得しようと思ったら、6万枚以上の画像ファイルを出力することになります。実際そこまではやりませんが、大量出力をこの先何度か行うことになるでしょう。できることなら、この作業は完全自動化したいものです。

しかしXNAには、表示中の画面を自動的に画像ファイルに落とす機能がありません。
(この機能すごく欲しいです…誰か作って~!)

仕方が無いので、キーを押すと地形の一部を次々表示するプログラムを用意し、FRAPSでスクリーンショットを撮ることにしました。

これでかなり省力化できましたが、それでも256枚とか取得するのは面倒なので、今回は16枚(4枚×4枚)の画像を取得しました。いずれ地形を綺麗に作り直してから、再度取り直す予定です。



◎複数マップ画像を並べる

計16枚の板ポリゴンを用意し、1枚の板ポリゴンに見えるように並べました。

複数マップ画像01   複数マップ画像02

カメラをズームアップした際の画像が細かくなりました。
しかし、板ポリゴン間の境界線が目立ちますね。これは何とかしないといけません。

カメラを手前に引くと、30fpsにまで低下しました(右図)。
えっ?たかが板ポリゴン16枚で30fpsってマジですか?(汗)



◎境界線の謎

1枚の板ポリゴンを拡大して、よく見てみましょう。

板ポリゴンの左端約1ラインに右端の模様

上図のように、板ポリゴンの左端約1ラインに、右端の模様が表示されます。

3D地形モデル作成時も似たような現象が発生しました。この時は小数点演算の誤差かと思い、サンプラステートのアドレスモードをミラーモードに設定して回避した…ような気がします。

しかし今回はシンプルな板ポリゴンにテクスチャを1枚貼るだけです。同じ手は使えないので、原因を探りましょう。



◎パフォーマンス向上?

最初は拡大縮小比率の問題かと思いましたが、等倍でも現象再現しました。しかしテクスチャ解像度を900×900としたら、現象再現しませんでした。

テクスチャの縦横比とテクスチャ貼付面の縦横比が異なると、この現象が発生するのかもしれません。画像1枚あたり1600×900で取得していたので、1000×1000で再度取得しました。

複数マップ画像03   複数マップ画像04

あれ?境界線が消えませんね?

その代わり、パフォーマンスが上がって、テスト飛行が快適になりました。それはそれで疑問だなぁ…。



◎遅延原因

ここで原因が1つ判明しました。ハードエラー対策として、板ポリゴンモデルの
Resize Textures to Power of Two
をTrueに設定していたため、テクスチャ解像度が自動調整されてました。

1600×900が遅かった原因は、多分コレでしょう。便利な機能ですが、パフォーマンスに影響する可能性があるようなので、今後はなるべく使わないようにします。

これをFalseに設定し、画像を1024×1024で三たび取得しました。でも、境界線は消えないなぁ…。



◎境界線の原因

さらに、ちょっとビックリな事実が判明しました。

FRAPSのスクリーンショットで取得した画像(1024×1024)を、WindowsXP付属ペイントツールで開きます。そのまま上書きコピーしてペイントを終了し、再度ペイントを起動して先の画像を開くと…左端に境界線が出現します!

MainMap004

なんだそりゃ~??

プログラムとかXNAの問題じゃなくて、FRAPSのBMP形式とMS社のBMP形式が微妙にズレてるようです。どうせなら、ペイントで最初に開いた段階でズレてくれた方が早く気付けたのに…。



◎境界線の解消

FRAPSのスクリーンショット画像を、一旦GIMPで開いて保存すると、この問題を回避できました(以後、ペイントやXNAで不具合が発生しなくなります)。

複数マップ画像05   複数マップ画像06

やっと境界線が解消できました!
早くて繊細でいい感じです!

(現在のマップ解像度:4000×4000)



◎次回予告

まさかFRAPSとMS社のフォーマット相性問題とは思いませんでした。落とし穴は意外なところにあるものですね。

地形がアップに耐えられるようになり、ヒントも頂いたので、次回はビルボードに再チャレンジします!

スポンサーサイト

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

コメント

コメントの投稿


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

トラックバック


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



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