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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ライズ

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

#1

投稿記事 by ライズ » 10年前

画像のようなどこまでも続くような遠景はどのように作るのでしょうか?
画像
画像

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

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

Aozora0630
記事: 85
登録日時: 10年前
住所: 日本
連絡を取る:

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

#2

投稿記事 by Aozora0630 » 10年前

http://hpcgi2.nifty.com/natupaji/bbs/pa ... st&no=1961

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

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

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

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

#3

投稿記事 by softya(ソフト屋) » 10年前

オブジェクトをちゃんと遠近に分類できるなら、
画面をクリア→near/farを遠景用に設定→遠くを描画→Zバッファだけクリア→near/farを近景用に設定→近くを描画で出来るんじゃないかと思います。
その上で速度を考えると、スカイドームやらLODやら色々なものが複合されていると思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ライズ

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

#4

投稿記事 by ライズ » 10年前

地続きや海続き(?)も表現したいんです

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

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

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

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

#5

投稿記事 by softya(ソフト屋) » 10年前

最適解というか、最低限やるべきことでしょうね。
それと書き忘れてましたが
SetZBufferBitDepth( 24 ) ;
などもつかってみましょう(重くなりますが)
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る