2015-03-30 2 views
1

Я создаю визуализацию поверхности для 3D-точек данных. Я могу рисовать точки данных в пространстве со сферами. Теперь я хочу создать покрытие поверхности. Вот jsfiddle для него:Покрытие поверхности для вершин в three.js

https://jsfiddle.net/dnprock/b9xyfno5/10/

Я попытался триангуляции, но это не создает поверхность, я хочу:

треугольники = THREE.Shape.Utils.triangulateShape (вершины, отверстия);

for(var i = 0; i < triangles.length; i++){ 
    geometry.faces.push(new THREE.Face3(triangles[i][0], triangles[i][1], triangles[i][2])); 
} 

Каков способ создания поверхности для покрытия точек?

ответ

0

Лицо3 принимает индекс трех вершин, которые уже находятся в геометрии. Конверты и делает лицо. Здесь, кажется, вы пытаетесь сделать лицо с оригинальными координатами вершин, не включив их в геометрию вашей сетки. предполагая, что треугольники [я] представляет собой массив из трех объектов VEctor3:

for(var i = 0; i < triangles.length; i++){ 
    var first_vertex_index= geometry.vertices.push(triangles[i][0]) 
    var second_vertex_index= geometry.vertices.push(triangles[i][1]) 
    var third_vertex_index= geometry.vertices.push(triangles[i][2]) 
    geometry.faces.push(new THREE.Face3(first_vertex_index, second_vertex_index, third_vertex_index)); 
} 

, как вы знаете, метод толчка возвращает индекс толкаемого объекта в массиве, мы помещаем индексы в Face3 не координаты.

+0

triangulate возвращает массив индексов. Вот код с триангуляцией. https://jsfiddle.net/dnprock/b9xyfno5/10/ –