2011-08-15 2 views
0

최근에 Away3D 라이브러리를 사용하고 있는데 Away3D에서 페이스 센터를 찾는 데 문제가 있습니다. Away3D에는 face.center 기능이 없는데 왜 Away3DLite에는 face.center 기능이 있습니까? 이것에 대한 대체 솔루션은 무엇입니까? 비록에, 위의자리 비움 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)과 같은 두 개의 객체 참조를 통해 역 참조합니다.