今回は、プログラムはないです。
自分用の備忘録です。
分かり辛いかもしれませんが勘弁。
Planeの頂点制御を前にやったんですが、Cubeでも頂点制御できるだろうと思い、試してみました。
頂点のアクセスには、下のようにfor-each文でアクセスしていきます。
for each(var obj:Vertex3D in myCube.geometry.vertices) { } |
Cubeは6つの面を持ちますが、for-each文で回すと、
front、back、left、right、top, bottomの順にアクセスしていきます。
各面とも、前回と同様に左下からアクセスして右上まで回ります。
しかも、各面で頂点の数が違います。
たとえば、各面の分割数を4-4-4にしたとします。下の様に定義したってこと。
var cube:myCube = new Cube(matlist, 100, 100, 100, 4, 4, 4);
// matlistは自分で定義したMaterialsList |
まず、frontにアクセス。
ここは普通に5×5の25個の頂点があります。
backも同じ。
次にleftとrightにアクセス。
ここで注意。leftとrightは両端の2列がfront, backとかぶっています。
この2列はfront, backのものとして定義され、left, rightの頂点にはなりません。
よって、left, rightは真ん中の3列が頂点となり、頂点の数は5×3で15個。
最後に、topとbottom。
これは周りの辺にある頂点がすべて他の面とかぶっているんで、他の面のものとして定義されます。
よって、topとbottomの頂点は3×3の9個となります。
要は、かぶっている頂点は先にアクセスする面のものってこと。
rightとfrontでかぶっている頂点があったら、その頂点はfrontのものってことです。
で、これを使って何をするか。
・・・・・何をしましょうかね。