首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Three.js OrbitControls摇摄和场景旋转

Three.js OrbitControls摇摄和场景旋转
EN

Stack Overflow用户
提问于 2020-04-30 08:34:30
回答 1查看 999关注 0票数 4

我需要改变环境。由于three.js不支持多维数据集env旋转,所以我采用最简单的方法修改scene.rotation.y,就像three.js贡献者所建议的那样。

在摄像机被平移之前,一切都很好。在这里自己试一试,https://stackblitz.com/edit/threejs-env-rotate,当场景使用滑块旋转时,观察摄像机的抖动。

我该如何补救这种晃动呢?我似乎找不到解决这个问题的算法。我试着旋转controls.target,但也许我的3D数学已经过时了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-05 02:07:05

发生这种行为的原因是controls.target不受scene.rotation的影响,因此抖动是由于摄像机试图跟踪指定的目标而发生的。这意味着您还应该对controls.target应用相同的旋转。

但这还不够。当你在变换的影响下将摄像机直接附加到场景中,相机的矩阵会发生变化,而positionrotationscale则不会改变,这使得OrbitControls的行为进一步偏离了人们的预期。

我建议的解决办法是,避免将相机附加到场景中,相反,旋转相机的位置和控制目标与场景并排。

代码语言:javascript
复制
const radians = e.target.value * Math.PI / 180
controls.target.applyAxisAngle( camera.up, radians - scene.rotation.y )
camera.position.applyAxisAngle( camera.up, radians - scene.rotation.y )
scene.rotation.y = radians

实例化- JSFiddle

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

https://stackoverflow.com/questions/61519164

复制
相关文章

相似问题

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