Просто понятие, использующее кватернион:

я проблема:

У меня есть массив 3D очков. Как нарисовать 2D, плоский объект, заданный вершинами в 3D пространстве? Я хочу провести линию от Точек [0] до Точек [1], от Точек [1] ​​до Точек [2] и т. Д. Теперь у меня есть следующее решение:

var geometry = new THREE.BufferGeometry();

var vertices = faceToTriangles( VerticesArray );  // my function

var uvs = new Float32Array([
    0.0, 0.0,
    1.0, 0.0,
    1.0, 1.0,

    0.0, 0.0,
    1.0, 1.0,
    0.0, 1.0
]);


geometry.addAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );
geometry.addAttribute( 'uv', new THREE.BufferAttribute( uvs, 2 ) );
var material = new THREE.MeshLambertMaterial( {color: 'red' } );
material.side = THREE.DoubleSide;
var mesh = new THREE.Mesh( geometry, material );

faceToTriangles ():

function faceToTriangles( VerticesArray )
{
    var Triangles = new Float32Array( (VerticesArray.length-2)*9 );

    var i = 0;
    for($v=1; $v < Face.Vertices3D.length-1; $v++)
    {
        Triangles[i++] = parseFloat(Face.Vertices3D[0].x);
        Triangles[i++] = parseFloat(Face.Vertices3D[0].y);
        Triangles[i++] = parseFloat(Face.Vertices3D[0].z);

        Triangles[i++] = parseFloat(Face.Vertices3D[$v].x);
        Triangles[i++] = parseFloat(Face.Vertices3D[$v].y);
        Triangles[i++] = parseFloat(Face.Vertices3D[$v].z);


        Triangles[i++] = parseFloat(Face.Vertices3D[$v+1].x);
        Triangles[i++] = parseFloat(Face.Vertices3D[$v+1].y);
        Triangles[i++] = parseFloat(Face.Vertices3D[$v+1].z);
    }

    return Triangles;
}

Я написал это некоторое время назад, и это работает в большинстве случаев. Это делает треугольники из объектов. Но в некоторых случаях функция faceToTriangles () работает некорректно. Он генерирует треугольники, выходящие за пределы Объекта.

Как сделать это правильно? Как отобразить двухмерный плоский объект (заданный массивом вершин) в трехмерном пространстве? Может быть, без преобразования в треугольники?

(Извините за мой английский)

Ответы на вопрос(1)

Ваш ответ на вопрос