我想制作一个捕捉功能来捕捉我的网格顶点.我尝试了几种解决方案.
一种解决方案是为THREE.Sprite场景中的所有顶点添加实例,然后使用a rayCaster来确定数组中是否snap有点intersects.它工作得很好; 这是一个演示的小提琴.
我的想法是在最终的解决方案中隐藏精灵,这样它们就不会被渲染,但我的场景非常大,所以它仍然意味着在我的场景中添加大量的精灵(对于每个顶点,可能有数千个精灵)来检测用我的点击点rayCaster.
var intersects = rayCaster.intersectObject(scene, true);
var snap = null;
if (intersects.length > 0) {
var index = 0;
var intersect = intersects[index];
while (intersect && intersect.object.name === 'snap') {
snap = sprite.localToWorld(sprite.position.clone());
index++
intersect = intersects[index];
}
if (intersect) {
var face = intersect.face;
var point = intersect.point;
var object = intersect.object;
mouse3D.copy(point);
}
}
if (snap) {
renderer.domElement.style.cursor = 'pointer';
} else { …Run Code Online (Sandbox Code Playgroud)