Away 3D Face Link - PullRequest
       34

Away 3D Face Link

0 голосов
/ 15 августа 2011

Я недавно играю с библиотекой Away3D и у меня возникла проблема с поиском Face center в Away3D.Почему у Away3DLite есть функция face.center, а у Away3D ее нет?и какое альтернативное решение для этого?

1 Ответ

1 голос
/ 27 августа 2011

Если вы хотите найти центр лица, это просто среднее положение всех вершин, составляющих это лицо:

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

Выше приведена очень простая функция для вычисления среднего, хотя для трехмерного вектора вместо простого скалярного числа. Это среднее значение является центром всех вершин на лице.

Если вам нужно сделать это много, оптимизируйте метод, запретив ему выделять вектор (передавая вектор, в который должны быть записаны возвращаемые значения), и создайте временную переменную для длины списка вершин вместо разыменования это через две ссылки на объекты, такие как min (f и vertices), что излишне тяжело.

...