2013-05-02 3 views
0

Возможно ли иметь каркасный рисунок для THREE.BufferGeometry? Я не думаю, что trjs поддерживает это, вы можете изменить _gl.TRIANGLES на _gl.LINES (или LINES_STRIP) в трехjs-источнике, и результат будет довольно нечетным.трехмерная буферная геометрия и каркас

http://oi40.tinypic.com/15tsux.jpg (геометрия буфера на дне)

Существует также старый вопрос о GitHub, где не предусмотрено никакого решения https://github.com/mrdoob/three.js/issues/1275

Что нужно сделать для того, чтобы обеспечить поддержку каркасами с THREE.BufferGeometry? Я хотел бы дать возможность реализовать его, но я не уверен, что нужно сделать.

+0

К сожалению, у меня недостаточно очков, чтобы добавить тег «threejs», поэтому извините за это. – Pantelis

ответ

0

Я провожу некоторое время на нем (в настоящее время для неиндексированных списков треугольников), и это довольно легко.

var wireframe_pos = new Float32Array(positionArray.length * 2); 
for(var ii = 0; ii < positionArray.length; ii += 9) { 
    wireframe_pos[ ii * 2 ] = positionArray[ ii ]; 
    wireframe_pos[ ii * 2 + 1 ] = positionArray[ ii + 1 ]; 
    wireframe_pos[ ii * 2 + 2 ] = positionArray[ ii + 2 ]; 

    wireframe_pos[ ii * 2 + 3 ] = positionArray[ ii + 3 ]; 
    wireframe_pos[ ii * 2 + 4 ] = positionArray[ ii + 4 ]; 
    wireframe_pos[ ii * 2 + 5 ] = positionArray[ ii + 5 ]; 

    wireframe_pos[ ii * 2 + 6 ] = positionArray[ ii + 3 ]; 
    wireframe_pos[ ii * 2 + 7 ] = positionArray[ ii + 4 ]; 
    wireframe_pos[ ii * 2 + 8 ] = positionArray[ ii + 5 ]; 

    wireframe_pos[ ii * 2 + 9 ] = positionArray[ ii + 6 ]; 
    wireframe_pos[ ii * 2 + 10 ] = positionArray[ ii + 7 ]; 
    wireframe_pos[ ii * 2 + 11 ] = positionArray[ ii + 8 ]; 

    wireframe_pos[ ii * 2 + 12 ] = positionArray[ ii + 6 ]; 
    wireframe_pos[ ii * 2 + 13 ] = positionArray[ ii + 7 ]; 
    wireframe_pos[ ii * 2 + 14 ] = positionArray[ ii + 8 ]; 

    wireframe_pos[ ii * 2 + 15 ] = positionArray[ ii ]; 
    wireframe_pos[ ii * 2 + 16 ] = positionArray[ ii + 1 ]; 
    wireframe_pos[ ii * 2 + 17 ] = positionArray[ ii + 2 ]; 
} 

attributes[ "position" ] = { itemSize: 3, array: wireframe_pos, numItems: wireframe_pos.length }; 

Хотя, если честно, я не совсем доволен этим решением, так как массив позиций в два раза превышает размер оригинала. Он чувствует себя слишком тяжелым. Любые предложения для лучшего подхода?

0

В принципе, это полезная утилита для преобразования буферных мезометров в форме сетки в буферную геометрию в виде строки.

+0

Планирование выполнения своего рода «WireframeGeometyHelper». – mrdoob

Смежные вопросы