[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 ◎ ○