ページ 11

遠景はどうやって作るのか?

Posted: 2015年7月09日(木) 09:07
by ライズ
画像のようなどこまでも続くような遠景はどのように作るのでしょうか?
画像
画像

ゲームを作ってて思ったのですが、遠景を本当に遠くに配置しようとするとZファイティング問題が置き、まともに見ることが出来なくなります。
どうすればいいでしょうか?

1つ思いついたのは、
スカイボックスならぬ1/10000スカイモデルを作り、スカイボックスのようにカメラに被せ、スカイボックスのようにZ値を無視して最初に表示します。
完全にカメラに固定すると、視点が動くとき不自然に見えてしまうので、1/10000とかの移動値をスカイモデルに適用します。
これでZファイティング問題を解決して(Z値無視するので)かつ遠景を表示出来ると思うのですが、
この場合だと、Zテストがスカイモデルに使用できなくなる気がします。
スカイモデルに含まれるモデルを自分でZソートすれば見れなくもないですが、やはりピクセル単位で整合性が取れるようにしたいです。
この場合、ピクセルシェーダーを触ればなんとかなるのかもしれませんが、
他に綺麗でシンプルな方法があれば知りたいです。

Re: 遠景はどうやって作るのか?

Posted: 2015年7月09日(木) 18:15
by Aozora0630
http://hpcgi2.nifty.com/natupaji/bbs/pa ... st&no=1961

此方の空の表現はどうでしょうか?

パソコンにはメモリ上限やCPUの問題があるのでとても大きなオブジェクトを動かしたり、
無限に生成したりすればあっという間に落ちてしまいます。

(スカイドームも大きいオブジェクトみたいだから低スペックには向かないかも・・・。
まあ、大体低スペックで3Dは出来ないけど・・・。)

Re: 遠景はどうやって作るのか?

Posted: 2015年7月09日(木) 20:46
by softya(ソフト屋)
オブジェクトをちゃんと遠近に分類できるなら、
画面をクリア→near/farを遠景用に設定→遠くを描画→Zバッファだけクリア→near/farを近景用に設定→近くを描画で出来るんじゃないかと思います。
その上で速度を考えると、スカイドームやらLODやら色々なものが複合されていると思います。

Re: 遠景はどうやって作るのか?

Posted: 2015年7月09日(木) 22:39
by ライズ
地続きや海続き(?)も表現したいんです

LoDやらミップマップやらはもちろん活用しますが、
Zテストを2重で行うのはキツイです(GPUでやる分自分でZソートよりはマシかもしれませんが)

と思ったらこんなのがありました
http://game.watch.impress.co.jp/docs/20051207/3dwa.htm

うーん、これが最適解なんでしょうか

Re: 遠景はどうやって作るのか?

Posted: 2015年7月09日(木) 22:49
by softya(ソフト屋)
最適解というか、最低限やるべきことでしょうね。
それと書き忘れてましたが
SetZBufferBitDepth( 24 ) ;
などもつかってみましょう(重くなりますが)