three.js - THREE.js - 四元数偏移/校准
问题描述
我正在使用传感器来控制手模型在三中的旋转。我希望能够对手模型应用偏移量(单击按钮)以调整任何初始传感器位置差异。
我正在使用四元数,但我并不完全清楚如何做到这一点。
似乎方法应该是获取当前位置,获取当前位置与起始位置 [0,0,0,1] 之间的差异,并将此偏移量应用于实时传感器值。
到目前为止,我已经尝试过:
// on button click
quaternionOffset.copy(quaternion.multiplyQuaternions(quaternion.inverse(), startPosition))
// on update
quaternion.multiply(quaternionOffset)
初始传感器位置(示例) 初始
位置(手指指向前方)
感谢您的帮助
解决方案
我认为您的方法是正确的,只要确保您不会在输入四元数内意外应用主四元数:
var inputQuaternion = new THREE.Quaternion();
var homeQuaternion = new THREE.Quaternion();
document.addEventListener('click', function () {
// set the current rotation as home
homeQuaternion.copy(inputQuaternion).inverse();
});
function updateFromSensor(quaternion) {
inputQuaternion.copy(quaternion);
object.quaternion.multiplyQuaternions(inputQuaternion, homeQuaternion);
}
推荐阅读
- gitlab - 当管道每天安排多次时自定义管道列表,比代码更改更频繁
- android - ViewPager 的适配器
- angular - 在角度中使用 FormArray
- java - 巴拿马:填充并不能防止虚假分享
- r - 如何在数据框列表上 lapply() 公式。或如何在数据帧列表上执行 kruskal.test()
- javascript - 如何在小 div 中创建一个大的 div 列表?
- rest - 电报:没有用 answerInlineQuery 发送答案
- javascript - 古腾堡:如何在古腾堡编辑器(java 脚本文件)中获取帖子视图计数
- magento2 - Magento-2.4.2 购物车视图抛出错误
- python - 工作簿保存失败,不知道为什么