Papervision2.0 GreatWhite 少し覗いてみた

ドイツで学会発表→終了→ヾ(゚∀。)ノ゙
                ↑今ここ


さて,タイトルのとおり.第一印象,何か interface の使い方にかなり違和感.


RenderLine 内では ILineDrawer では無くて LineMaterial を保持してる.RenderParticle も同様.
IRenderable の getRenderListItem() が,今の所,何にも利用されて無い.
IRenderListItem と RenderableListItem が,今の所,重複してる.


ベータバージョンだし,ここら辺はいずれ利用されるのかもしれない(にしては,Renderer の実装が決め打ちすぎるのが気になるけど).interface は,多重継承の便利な点を残しつつ複雑さを軽減させた機構だと理解してる.現状GWでは,関数の実装をコンパイラレベルで強制するため程度にしか使って無い感じ.


そもそもPapervisionのクラス設計について,昔からかなり違和感を感じてた.
基本クラスのはずの MaterialObject3D が BitmapData とか LineColor とか,一部の継承クラスでしか使わないメンバを持ってるのは気持ちが悪い.DisplayObject3D では,その継承で 頂点用Vertices3D と 面用TriangleMesh3D をわざわざ定義しているのに,基本クラスでgeometryという頂点と面の情報を既に持っている.というか,継承でわざわざ頂点用と面用を二段階に分けてるのに,Geometryという頂点と平面を一括で管理するクラスが存在してるせいで,Vertices3Dでは空の平面情報を持たざる得ないという状況に陥っている.頂点と平面を一括で管理する Geometry という概念をわざわざ導入しているのに,Vertex3D の内部で Vertex3DInstance を保持しておりスクリーン変換前後の座標値が独立でないため,GeometryをDisplayObject3Dと独立で扱う事が出来ない.BitmapMaterialの内部でVertex3DをキーにuvMatricesを隠れて保管している.などなど


ていうか,interface 使ったら負けかなと思ってる.オブジェクト至高的に.
極論ですかそうですか.


ごみが残ってたり機構が増えたりで,GWの中身を弄って使うのは,今の所,前バージョンより辛い.その代わりRenderCommandの概念がかなり良い.RenderableListItemの継承クラスを自前で用意すれば,かなり無茶な事ができる感じがする.かなりすばらしい概念だと思うんだけど,GW内部的には,今の所単なるマルチな受け渡し口として位にしか使ってない感じ.第一印象.