gpt4 book ai didi

javascript - 为什么 A-Frame 相机动画不总是沿着最短路径旋转?

转载 作者:行者123 更新时间:2023-12-01 16:25:21 26 4
gpt4 key购买 nike

我设置了一个虚拟游览并添加了一些动画相机移动(我知道在 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>

最佳答案

我认为它做一个简单的减法,并且根据起点和终点值(例如负值)它可以追踪很长的路径。避免这种情况的一种方法是在设置动画以适应您的值之前进行计算。例如 -210.55 与 149.45 相同,根据您的起点,它会形成更短的路径。您应该试验一些规则,看看最适合的规则。

我遇到了同样的问题,在设置动画属性的“from”值之前遵循了这个规则。这很随意,但对我有用。

if (Math.abs(y_from) > 90) y_from -= 360 * Math.sign(y_from);

关于javascript - 为什么 A-Frame 相机动画不总是沿着最短路径旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62652240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com