Papervision3D の Materials(2) ~ graphics コマンド系 ~
2007/05/20 17:21 - Papervision3D
前回の概観で、graphics コマンド系マテリアルとして分類した二つのマテリアルについて、今回は見ていきたいと思います。
ColorMaterial( color : Number = 0xFF00FF, alpha : Number = 100, initObject : Object = null )
WireframeMaterial( color : Number = 0xFF00FF, alpha : Number = 100, initObject : Object = null )
上記のように、この二つのマテリアルのコンストラクタは、共に、その面なり線なりの色とアルファ値を引数としています。
以下はそれぞれ引数に何も指定しなかった場合のサンプルです(以後、サンプルは全て objests として 100×100 の Plane を使います)。
ColorMaterial
生成時引数なし |
WireframeMaterial
生成時引数なし |
ところで、この二つのマテリアルのコンストラクタが行う処理は、引数として指定した色とアルファ値を、Materials のスーパークラスである MaterialObject3D の、以下のプロパティに直接代入するだけです。
- fillColor(ColorMaterial)
- fillAlpha(ColorMaterial)
- lineColor(WireframeMaterial)
- lineAlpha(WireframeMaterial)
そしてこれらのプロパティは第3引数である initObject でも指定することができます。
ということは……
- ColorMaterial において、initObject で line 系プロパティを、あるいは、WireframeMaterial において、initObject で fill 系プロパティを、というようにクロス指定するとどうなるのか。
- 二つのマテリアルにおいて、それぞれ第1第2引数で指定した色とアルファ値が、第3引数とバッティングしたらどうなるのか。
それを試したのが以下のサンプルです。
1. クロス指定
ColorMaterial(
0xffffff , 1 , { lineColor:0x0000ff , lineAlpha:1 } ); |
WireframeMaterial(
0x0000ff , 1 , { fillColor:0xffffff , fillAlpha:1 } ); |
二つのサンプルは見た目は全く同じです。
つまり、引数の指定の仕方によっては、 ColorMaterial と WireframeMaterial は、他のマテリアルと混在的な表現をさせることが可能ということです。
2. バッティング
ColorMaterial
ColorMaterial(
0xff00ff , 1 , { fillColor:0xffffff , fillAlpha:1 , lineColor:0x0000ff , lineAlpha:1 } ); |
ColorMaterial(
0xff00ff , 0 , { fillColor:0xffffff , fillAlpha:1 , lineColor:0x0000ff , lineAlpha:1 } ); |
このサンプルは第1引数で 0xff00ff、第3引数で fillColor に 0xffffff を指定しています。
また、右側のサンプルでは第2引数に 0 を指定しています。
実行結果は、左側では面の色がピンク色に、右側では面が無くなっています。 線については、第3引数の内容が反映されています。
WireframeMaterial
WireframeMaterial(
0xff00ff , 1 , { fillColor:0xffffff, fillAlpha:1, lineColor:0x0000ff, lineAlpha:1 } ); |
WireframeMaterial(
0xff00ff , 0 , { fillColor:0xffffff, fillAlpha:1, lineColor:0x0000ff, lineAlpha:1 } ); |
このサンプルは第1引数で 0xff00ff、第3引数で lineColor に 0x0000ff を指定しています。
また、右側のサンプルでは第2引数に 0 を指定しています。
実行結果は、左側では線の色がピンク色に、右側では線が無くなっています。 面については、第3引数の内容が反映されています。
以上4つのサンプルから、面や線の色がバッティングした場合には、第1第2引数が優先されるということが分かります。