【发布时间】:2020-10-20 10:47:12
【问题描述】:
我设置了一个虚拟游览并添加了一些动画摄像机运动(我知道在 VR 中不建议这样做,但这只是一个桌面项目,没有 VR,只需用鼠标光标指向并单击即可)。
大多数情况下,相机会沿着最短的路径从当前位置旋转到目的地。但其他时候,它只需要最长的路径,这根本不需要。
为什么会这样?有什么我可以做的吗?
这是我的代码: JSFiddle
以下是重现该行为的方法:
从起始位置,按回车键旋转相机(它将走最长的路径)。从那里,按空格键再次旋转它,将其指向另一个位置(同样,它将采用最长的路径)。
var myCam = document.querySelector("a-camera");
document.addEventListener("keydown", event => {
if (event.keyCode == 13) {
myCam.setAttribute("animation", "property: rotation; to: -4.68 -210.55 0; loop: false; dur: 2000; startEvents: lookAtSomething");
myCam.emit('lookAtSomething');
myCam.components["look-controls"].pitchObject.rotation.x = -0.08168140899333462;
myCam.components["look-controls"].yawObject.rotation.y = -3.674790740074061;
} else if (event.keyCode == 32) {
myCam.setAttribute("animation", "property: rotation; to: -2.30 59.36 0; loop: false; dur: 2000; startEvents: lookAtSomething");
myCam.emit('lookAtSomething');
myCam.components["look-controls"].pitchObject.rotation.x = -0.04014257279586958;
myCam.components["look-controls"].yawObject.rotation.y = 1.051735407251783;
}
});
<script src="https://aframe.io/releases/1.0.4/aframe.min.js"></script>
<a-scene background="color: #FAFAFA">
<a-camera id="myCam" cursor="rayOrigin:mouse" look-controls="reverseMouseDrag:true">
<a-cursor material="color: yellow; shader: flat"></a-cursor>
</a-camera>
<a-sky src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Equirectangular_projection_SW.jpg/1920px-Equirectangular_projection_SW.jpg"></a-sky>
</a-scene>
【问题讨论】:
标签: javascript animation rotation aframe