[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:01734] Re: 16bit カラーでレンダリング異常
株式会社カーネル河村です
> カラーモードを16bit(65536色)にすると、Java3Dのレンダリングがどう
> もおかしくなるという現象に遭遇しています。
> 見た感じだとZバッファの精度が足りないときのような描画になります。
原因が判明しました。
ViewのfrontClipDistanceが近すぎました。
(3Dグラフィックの基礎の話でした... お恥ずかしい...)
ViewのデフォルトのfrontClipDistanceは0.1ですが、これを0.001とかに
設定してしまっていました。nVidiaのチップではどうやら16bitカラー
モードではZバッファも16bit程度になってしまうようで、これでは
frontClipDistanceを0.001にしてしまっては明らかにZバッファの精度不
足を起こします。(デフォルトの0.1だと16bitモードでも精度は足りるよ
うです)
32bitカラーモードにするとZバッファも24bitもしくは32bit程度になるよ
うで、精度が足りているので表示も正常というわけです。
カラーモードに連動してZバッファの精度が変わるとは考えてもみません
でした。このへんはビデオチップにもよるのでしょう。ちょっと高級な
OpenGL対応ビデオカードだとカラーモードを問わずZバッファは常に
24bitや32bitというようなものもあります。確かにAccelGMX 2000ではカ
ラーモードを問わず常にZバッファは32bitなので、どのカラーモードでも
表示は正常でした。また、ソフトウェアレンダリングではカラーモードを
問わずZバッファは16bitのようです。あと、カラーモードを問わずZバッ
ファが16bitというビデオカードもあるようです。
clipDistanceとZバッファの精度についての話が
http://www.opengl.org/developers/faqs/technical/depthbuffer.htm
に出ています。(12.040項)
... As the zNear clipping plane is set increasingly closer to 0.0,
the effective precision of the depth buffer decreases dramatically.
と書いてあります。frontClipDistanceが0.001というのはやはり無謀でし
た...
==================================================================
株式会社カーネル PHONE 0298(57)7457 FAX 0298(57)7458
河村 進 E-MAIL kernel@xxxxxxxxxxxxxxx
==================================================================
------------------------------------------------------------------------
★投げる! 打つ! 走る! 春の高校野球放送中!★
○ ◎ http://www.infoseek.co.jp/Kky?pg=kky_top.html&svx=971122 ◎ ○