首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何放大到光线投射器选择?

如何放大到光线投射器选择?
EN

Stack Overflow用户
提问于 2020-11-06 00:34:08
回答 1查看 73关注 0票数 0

我想知道如何使用ThreeJs放大鼠标选择,我正在使用raycaster选择模型区域,但当我单击区域时,有些东西不起作用-正如你在My Example中看到的(感谢Mugen87),我的目标是当我点击它们时放大它们……我添加了以下函数:

代码语言:javascript
运行
AI代码解释
复制
function onClick(event) {
 
  mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
  mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;

  raycaster.setFromCamera(mouse, camera);
  intersects = raycaster.intersectObject( mesh, false, intersects );
  if(mesh.type!= 'Mesh' ||  !intersects.length){
  return
  }

    var n = intersects[ 0 ].face.normal.clone();
    n.multiplyScalar(30);
    n.add(intersects[ 0 ].point);
    var p = intersects[ 0 ].point;
    camera.position.copy(n);
    camera.lookAt(p);
    
 
}

当我在模型外部单击时-它没有保持位置,它在旋转...

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-06 01:14:54

这是因为您使用的是OrbitControls,它几乎接管了您的摄影机,并在每帧中指定其位置和旋转一次。当您尝试手动设置其位置时,OrbitControls将覆盖您所做的任何操作。

解决方案是使您的controls变量成为全局变量。然后,当您准备接管相机位置时,在onClick()函数中设置controls.enabled = false;。然后,当您准备好返回到常规控件时,设置controls.enabled = true;

https://threejs.org/docs/#examples/en/controls/OrbitControls.enabled

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64707263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档