[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: Java3Dの混合処理
Numakuraさん、こんにちは (^ ^)
> そのとおりですね。したがって、OpenGLで半透明オブジェクトをできる限り
> 忠実に表現するには、
> 1.不透明なポリゴンをすべて描きこむ
> 2.半透明なポリゴンをZバッファをReadOnlyにして描きこむ
> という方法があります(この方法はImmidiateModeでは当然無理です)。
> これでも、半透明ポリゴンが交差する場合は、忠実に表現できません。
OpenGLでの透過オブジェクトの処理方法として、このような手順が代案として
示されていますが、空間が多くの透明オブジェクトで構成されている場合には
この方法では、ちょっと苦しくなってしまいますよね。
そこで、代案として ........
Java3Dを透明オブジェクトを考慮してOpenGLで実装する場合には、現時点の
視点位置から、例えばShape3Dノードなどの単位でソートして、レンダリング
キューで順番に処理するのが、レンダリング破綻を回避する簡便な方法の
一つだと思います。
#もっともOpenGLのようなステートマシンでJava3Dのシーングラフを処理するには、
#現在の実装のようにシーングラフを順番に走査して処理するのが、速度的には
#最善なんですけどね ......
>View view = universe.getViewer().getView();
>view.setDepthBufferFreezeTransparent(false);
>
>#あー、すっきり。でもデフォルトがこれでいいのかな?
Java3Dの仕様を見ていると、以下のようなレンダリング属性の仕様追加が提案されて
いるようです。
http://java.sun.com/products/java-media/3D/1_2_api/changes/blend_modes.html
意図としては、ユーザー側で透過オブジェクトを細かく制御できるようにとの配慮なん
でしょうが、シーングラフAPIの仕様としては何ともお粗末な感じがしてしまいますね (^ ^;)
-----------------------------------------------
Satoshi Konno (今野 賢)
http://www.cyber.koganei.tokyo.jp
skonno@xxxxxxxxxx