【发布时间】:2021-05-26 22:20:16
【问题描述】:
我创建了一个three.js 元素来在屏幕上显示一些点,我的任务是单击两个并计算它们之间的距离。我在 Angular (8) 应用程序中执行此操作,并且正确设置了所有可见点和鼠标事件(指针向上/向下)。我的想法是在单击时从鼠标点进行光线追踪并突出显示一个顶点(我只有点,没有线或面)。因此,我尝试在我的场景中设置 Three.js RayTRacing,但每次我调用 setFromCamera 时,即使我始终在屏幕上显示点可见,相机也是未定义的。
public onMouseDown(event){
var mx = event.clientX;
var my = event.clientY;
this.caster.setFromCamera({x: mx, y: my}, this.camera);
const intersections = this.caster.intersectObjects(this.scene.children);
console.log("Mouse is down! " + mx + " " + my);
}
如果我删除涉及脚轮的两条线,我会得到 x 和 y 输出。这个下一个 sn-p 是通过 ngAFterInit 调用的:
public configRaycaster(){
this.caster = new THREE.Raycaster();
}
就我而言,一切都已设置好,我应该知道点击了哪个对象,但显然不是。
【问题讨论】: