Papervision3D 1.5 のマテリアル
2007/07/23 22:29 - Papervision3D
今回は、Papervision3D 1.5 の変更点その3と4について着目しました。
PV3D 1.5 ではマテリアルに対してけっこうな異動が発生しています。
以下はざっと見たところによるものなので、もしかしたら事実誤認があるかも知れません。その際はご指摘いただけると幸いです。
変更点その3
各マテリアルのレンダリング処理が、それぞれのマテリアルクラスにオーバーライドされた drawFace3D 関数に記述されるようになりました。
たしか今までは、マテリアルのスーパークラスは Face3D クラスで、継承がずいぶん分かりづらいものだったと記憶しているんですが(旧版のパッケージは全て廃棄してしまったため確認できません)、1.5 からは MaterialObject3D クラスがスーパークラスになっています。
インターフェイスの導入もあり、ずいぶんスッキリと分かりやすくなった印象を受けます。
変更点その4
以下の 3つのマテリアルの増加。
- BitmapColorMaterial
- BitmapWireframeMaterial
- CompositeMaterial
しかし、前二者については、なぜこんなマテリアルが追加されたのか、よく意味が分かりませんねぇ。
見た目に関して言えば、それぞれ Bitmap が頭につかないマテリアルと全く変わりありません。何しろ基本的な処理は同じなので。
むしろ BitmapWireframeMaterial は劣化しています。
ColorMaterial 、WireframeMaterial は Graphics.beginFill や Graphics.lineTo などの Graphics コマンドを使います。
一方、BitmapColorMaterial、BitmapWireframeMaterial は Graphics コマンドを BitmapData に draw するという手間をかけています(厳密にいうと beginFill ではなく beginBitmapFill を使用していますが)。
beginBitmapFill を使って BitmapData に draw した方が、Graphics コマンドを使うよりも速いんですかねぇ?
そして CompositeMaterial。
何をするマテリアルなのかはコードを見れば何となく分かります。
複数のマテリアルを内部で生成した配列に格納していながらも、CompositeMaterial 自体が一つのマテリアルとして機能するもののようです。
しかし、どういう局面で使用するのか、今ひとつ分かりません。
Cube の6面に対して別々なマテリアルを割り当てることができたりするんですかね、コレを使うと。
CompositeMaterial を使ったソース待ちですね。
で、今回の変更で、どうやら ColorMaterial は line が使えなくなったようです。
マテリアルのスーパークラス、 MaterialObject3D に lineColor と lineAlpha というプロパティは存在していますが、これはどうも BitmapWireframeMaterial と WireframeMaterial の二つだけに関わるプロパティになってしまったらしい。
また、以下のプロパティが追加されています。
- ○lineThickness
- BitmapWireframeMaterial にのみ関わるプロパティ。線の太さを定義。
- ○smooth
- BitmapColorMaterial と BitmapWireframeMaterial にのみ関わるプロパティ。beginBitmapFill の第4引数として使用。
で、以下は BitmapColorMaterial と BitmapWireframeMaterial のサンプル。
それぞれのマテリアルを引数なしで生成しています。
BitmapColorMaterial
- BitmapColorMain.as( 2.08 KB )
BitmapWireframeMaterial
smooth = false(default)
|
smooth = true
|
- BitmapWireMain.as( 2.08 KB )