如何计算哪个顶点最接近3D点?

Ici*_*cid 2 javascript 3d three.js

在此输入图像描述

目标:

我想找出哪个顶点/顶点最接近我点击的点.

建立:

  • 透视相机
  • 二十面体几何(basicmeshmaterial - > wireframe)
  • 旋转几何
  • Raycaster

代码我已经有了点击处理程序:

mouse = new THREE.Vector2();
mouse.x = (event.clientX / renderer.domElement.clientWidth) * 2 - 1;
mouse.y = - (event.clientY / renderer.domElement.clientHeight) * 2 + 1;

raycaster.setFromCamera(mouse, camera);

const intersects = raycaster.intersectObject(icosahedron);

// 3D point: intersects[0].point
// Object face: intersects[0].face
Run Code Online (Sandbox Code Playgroud)

谢谢!

std*_*b-- 5

三个步骤:

  • 将交叉面的顶点位置从局部转换为世界
  • 计算到3D点的距离
  • 按升序距离排序

-

vertices = [
  intersects[0].face.a,
  intersects[0].face.b,
  intersects[0].face.c
];

vertices.forEach( function(vId,i){
  vertices[i] = mesh.geometry.vertices[vId].clone();
  vertices[i].l2w = mesh.localToWorld(vertices[i].clone());
  vertices[i].id = vId;
  vertices[i].index = i;
  vertices[i].distance = vertices[i].l2w.distanceTo(intersects[0].point);
})

vertices.sort( function(a,b){
  return a.distance - b.distance;
})
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/fwnjoc31/