PV3Dのテクニカル担当のポジションを揺るぎないものにしつつある、Andy Zupko 氏により、PV3Dにも Z-Sort の問題を克服する新機能が実装されたみたい。何をするものかというと、Away3Dのコレと全く同じ。
詳しい話は、御本人のエントリーを参照していただくとして、
zupko.info | Using QuadTrees In Papervision3D
久々に備忘録としてメモっとく。
新たに加わったのは、QuadrantRenderEngine というレンダラ。
レンダー定義の際に org.papervision3d.render.QuadrantRenderEngine をインポートしたうえで
renderer = new QuadrantRenderEngine(QuadrantRenderEngine.ALL_FILTERS);
とか指定する。引数に指定できるのは
- QuadrantRenderEngine.CORRECT_Z_FILTER
- QuadrantRenderEngine.QUAD_SPLIT_FILTER
- QuadrantRenderEngine.ALL_FILTERS
の3つ。ザックリ言うなら
CORRECT_Z_FILTER が、ポリゴンの前後関係を細かく計算して処理するフィルタ。QUAD_SPLIT_FILTER が、必要に応じて、ポリゴンをリアルタイムに分割するフィルタ。ALL_FILTERS は、CORRECT_Z_FILTER と QUAD_SPLIT_FILTER の合わせ技。
うーん。Away3D の AnotherRivalFilter と、QuadrantRiddleFilter そっくり。(余談だけど、PV3D が Away3D のノウハウを好き勝手に取り込み過ぎだということで、Away3D陣営はアンチPV3D機運が高まってるみたい。Away3Dが全クラスをオリジナルで刷新したのは、この辺の事情が大きい。)
以下、挙動を確認するデモ。
Quadrant Render Test(要:FlashPlayer9)
右下のボタンで、フィルタの切り替えができる。
単純な形状ならそれほどパフォーマンスに影響なく動く感じ。
ポリゴン増えたらどーなんのかってことで、以下も試してみた。
Quadrant Render Test02(要:FlashPlayer9)
なぜか、QUAD_SPLIT_FILTER が絡むと破綻する。バグ?仕様?データの不備?原因が解らないけど、とりあえず重い。この機能も、先日の FrustumClipping と同様に、使いどころが肝心ですな。
恐らくAway3DもPV3Dもロジックが一緒なので、あんまり性能差なさそう。やっぱ、Altanativa3D が圧倒的にレベル高し。とはいえエンジンの性能差をアイディアで埋めるのが一番勉強になるので、がんばるべ。




