2011-08-15 7 views
0

最近Away3Dライブラリで遊んでいて、Away3Dでフェイスセンターを見つける際に問題があります。 Away3Dにはface.center機能がありますが、なぜAway3DLiteにはその機能がありませんか?これに代わる解決策は何ですか?ただし上、上記アウェイ3Dフェイスリンク

function getFaceCenter(f : Face) : Vector3D 
{ 
    var vert : Vertex; 
    var ret : Vector3D = new Vector3D; 

    for each (vert in f.vertices) { 
     ret.x += vert.x; 
     ret.y += vert.y; 
     ret.z += vert.z; 
    } 

    ret.x /= f.vertices.length; 
    ret.y /= f.vertices.length; 
    ret.z /= f.vertices.length; 

    return ret; 
} 

平均値を計算するための非常にシンプルな機能は次のとおりです。

+0

Away3d Liteにもセンターが表示されません。どのバージョンのライブラリを使用していますか? - 私はaway3D lite 1.0.2を見ている http://away3d.com/livedocs/lite_1.0.2_lib/ –

答えて

1

あなたは顔の中心を見つけたい場合には、それは単にその顔を構成する全ての頂点の平均位置です単純なスカラー数ではなく3Dベクトルです。その平均値は顔のすべての頂点の中心です。

これをたくさん行う必要がある場合、(戻り値を書き込むベクトルを渡すことによって)ベクトルを割り当てることを避けてメソッドを最適化し、頂点リストの長さの代わりに一時変数を作成します不必要に重いmin(fvertices)のような2つのオブジェクト参照を介して逆参照します。