Papervision3D の Objects(2) ~ Cylinder ~
2007/04/07 22:45 - Papervision3D
PV3D のプリミティブオブジェクト。今回は Cylinder を試してみます。
Cylinder
Cylinder( material : MaterialObject3D = null, radius : Number = 100, // 半径 height : Number = 100, // 高さ segmentsW : int = 8, // 水平セグメント数 segmentsH : int = 6, // 垂直セグメント数 topRadius : Number = 0, initObject : Object = null )
底面の定義は第2引数 radius と第4引数 segmentsW でおこない、柱体高は第3引数 height で決定、そしてその高さ部分の長方形のセグメント数を第5引数で定義するんですね。
デフォルトでは半径 100、高さ 100 の正八角形柱を生成。
そして segmentsW の最小値は 3 で、segmentsH の最小値は 2 である、と。
つまり Cylinder は正三角形柱をミニマムとする正多角形柱を生成することができるわけですね。
あと、第2引数 radius と第6引数 topRadius の値を変えることで、横から見ると台形状になる図形も作ることができるようになっている、と。
なお、前々回書いたとおり、Cone クラスで不正が発生するので、私は Cylinder.as の 135 行目をコメントアウトし、 topRadius の既定値は 100 に書き換えています。
それにしても segmentsW の最小値 3 っていうのは当然だけど、何でsegmentsH の最小値は 1 でなくて 2 なんでしょうね。
まぁそれはともかく。以下、第2~第6引数をいろいろ弄るとどんな形状になるのか試してみたサンプル。
原型
( ColorMaterial , 100 , 100 , 8 , 6 , 100 )
|
( BitmapMaterial , 100 , 100 , 8 , 6 , 100 )
|
topRadius 変動
( ColorMaterial , 100 , 100 , 8 , 6 , 50 )
|
( BitmapMaterial , 100 , 100 , 8 , 6 , 50 )
|
segmentsW 変動
( ColorMaterial , 100 , 100 , 3 , 2 , 100 )
|
( ColorMaterial , 100 , 100 , 4 , 2 , 100 )
|
( ColorMaterial , 100 , 100 , 6 , 2 , 100 )
|
( ColorMaterial , 100 , 100 , 24 , 2 , 100 )
|
radius、height、segmentH 変動
( ColorMaterial , 50 , 200 , 8 , 12 , 50 )
|
( ColorMaterial , 10 , 200 , 8 , 12 , 10 )
|
- ソース( CylinderTest.zip 4.10 KB 注:イメージファイルは同梱していません)