2011-08-15 43 views
0

我最近在玩Away3D圖書館,並在Away3D中找到臉部中心時遇到問題。爲什麼Away3DLite有一個face.center功能,而Away3D沒有呢?和這是什麼替代解決方案?離開3D臉部鏈接

+0

我在Away3d Lite中看不到中心。你使用的是哪個版本的庫? - 我正在看away3D lite 1.0.2 http://away3d.com/livedocs/lite_1.0.2_lib/ –

回答

1

如果你想找到一個面的中心,它只是所有頂點構成該側面的平均位置:

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; 
} 

以上是一個非常簡單的函數來計算平均,雖然一個3D矢量,而不是一個簡單的標量數字。該平均值是臉部中所有頂點的中心。

如果你需要做這個有很多,可以通過防止分配向量(通過傳遞到返回值應寫入向量)優化方法,並創建頂點列表的長度,而不是一個臨時變量通過像min(fvertices)這樣的兩個對象引用來解引用它,這是不必要的沉重。