[Papervision3D]triangle3D

久々にPapervision3Dでtriangle3Dです。
三角形ポリゴンにバラバラになって別の形にトランスフォーム!

スクリーンショット1

triangle3D

追記:すこし自分のためにコードのおさらい

Papervision3Dの三角形ポリゴンひとつだけつかうにはTriangleMesh3Dを使う。
毎回使い方わすれるのでメモ。

import org.papervision3d.core.geom.TriangleMesh3D;
import org.papervision3d.core.geom.renderables.Triangle3D;
import org.papervision3d.core.geom.renderables.Vertex3D;
import org.papervision3d.core.math.NumberUV;
var mesh:TriangleMesh3D = new TriangleMesh3D(mat, new Array(), new Array(), null );
var v0:Vertex3D= new Vertex3D( -10, -10, 0 );
var v1:Vertex3D= new Vertex3D( 10, -10, 0 );
var v2:Vertex3D= new Vertex3D( 0, 10, 0 );
mesh.geometry.vertices.push( v0 );
mesh.geometry.vertices.push( v1 );
mesh.geometry.vertices.push( v2 );
var uvA:NumberUV= new NumberUV( 0, 0 );
var uvC:NumberUV= new NumberUV( 1, 0 );
var uvB:NumberUV= new NumberUV( 0, 1 );
mesh.geometry.faces.push( new Triangle3D( mesh, new Array(v0,v1,v2), null, new Array(uvA,uvC,uvB) ));
mesh.geometry.ready = true;
scene.addChild(mesh);

DisplayObject3Dの面はgeometry.facesに格納されている。
アクセスするときはこんな感じ。

var meshface:Triangle3D=item.geometry.faces[0];

そしてこのDisplayObject3Dの面であるTriangle3Dには頂点が定義されている。
その頂点の情報はverticesに格納されておりx,y,zプロパティがある。
アクセスするときはこんな感じ。

var meshface:Triangle3D=item.geometry.faces[0];
var vx:Number=meshface.vertices[0].x;
var vy:Number=meshface.vertices[0].y;
var vz:Number=meshface.vertices[0].z;
//三角形ポリゴンなのでお察しの通りverticesはvertices[2]まである。

DisplayObject3Dの面Triangle3D(以下モデルMesh)に
外部のTriangleMesh3D(以下外部Mesh)及び外部Meshの面Triangle3Dをぴったし合わせるには
・モデルMeshの頂点定義から三角形の中心点の座標を計算して出す。
・その座標に外部Meshを移動させる。
・モデルMeshの頂点座標から外部Meshの座標を引く。
・出てきた値を外部Meshの面の各頂点座標に適応する。
という処理が必要です。
別にむずかしいことではないですね。
足し算して割り算して代入して引き算して代入って感じです。
ただこれだとモデルMeshが座標(0,0,0)にありrotationXYZが0の状態しか
形作ることができないので今後の課題にしておこう。