Как получить пересечение между двумя разными гранями двух разных неиндексированных буферных геометрий? - PullRequest
0 голосов
/ 09 июня 2019

Как пересекать неиндексированную геометрию буфера?Я хочу обнаружить пересечение между двумя разными сторонами двух разных неиндексированных буферных геометрий.Я установил луч от середины каждой грани, но Raycaster не работает с неиндексированной геометрией.

Я хочу видеть такой результат: enter image description here

Большое спасибо!

мой код


var box = new THREE.Mesh(geometry.toNonIndexed(), material);

var raycaster = new THREE.Raycaster();
var intersects = [];

var pos = box.geometry.attributes.position;
var ori = new THREE.Vector3();
var dir = new THREE.Vector3();

var a = new THREE.Vector3(),
  b = new THREE.Vector3(),
  c = new THREE.Vector3(),
  tri = new THREE.Triangle();



var faces = pos.count / 3;
for (let i = 0; i < faces; i++) {
  a.fromBufferAttribute(pos, i * 3 + 0);
  b.fromBufferAttribute(pos, i * 3 + 1);
  c.fromBufferAttribute(pos, i * 3 + 2);
  tri.set(a, b, c);
  tri.getMidpoint(ori);
  tri.getNormal(dir)
  // scene.add(new THREE.ArrowHelper(raycaster.ray.direction, raycaster.ray.origin, 30, 0xff0000));
  raycaster.set(ori, dir);
  intersects = raycaster.intersectObject(box, true);

  if (intersects.length > 0) {

    console.log(intersects[0]);

  }
}
...