[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: [jfriends] Java3Dの混合処理




Numakuraさん、はじめまして (^ ^)

同様の問題は、先日のJava3Djp MLでも話題になったのですが ......

> OpenGL1.1では、半透明のポリゴン(これをAとする)を描画した
> 後で、その後ろに他のポリゴン(これをBとする)を描画すると、AとBの
> 重なった部分は、Aしか表示されません(つまり半透明を表現でき
> ていない。半透明を表現するには、Bの後にAを描かなくてはならない)。

OpenGLで半透明オブジェクトは、現時点の描画バッファと描画する半透明
オブジェクトによる混合処理によって実現されている点に注意してください。

この場合にA/B交差部分にAしか表示されないのは、Aオブジェクトを
Bオブジェクトより先に描画していることにより、AオブジェクトによりZバッ
ファが更新されてしまい、この時点でAオブジェクトよりZ位置が遠方にある
Bオブジェクトを後から描画しても望むべき結果は得られないのです。

#このような問題に対処するため、Zバッファ更新を無効にしてオブジェクトを
#描画する方法もあります。


当然ながら、Java3DをOpenGLを用いてプラットフォームに実装する場合には
このような問題を考慮して、より正確に描画するために透過オブジェクトを現在
の視点からソートするなど方法があるのですが、現状では透過オブジェクトが
ある場合でもシーングラフ階層にのみ従って描画順序が決定される形で実装
されていると考えて良さそうです。

以上簡単ですが、ご参考まで。

-----------------------------------------------
Satoshi Konno
http://www.cyber.koganei.tokyo.jp
skonno@xxxxxxxxxx