- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要获取手机面向的方向和地平线之间的 Angular theta(见图)。
为此,我使用了 web-vr polyfill 库,它允许我访问 VRPose.orientation,即作为四元数的相机方向。
现在,我正在尝试将四元数转换为欧拉 Angular ,以便能够获得我需要的 theta Angular ,但通过我的尝试,该 Angular 并不独立于其他旋转 Angular (即,如果用户从其位置转身,同时将手机保持在相同方向,则 Angular theta 会发生变化)。
这是我的代码。
var orientation = frameData.pose.orientation
var a = orientation[0]
var b = orientation[1]
var c = orientation[2]
var d = orientation[3]
var yaw, pitch, roll
roll = Math.atan(2*(a*b + c*d)/(pow2(a) - pow2(b) - pow2(c) + pow2(d)))
pitch = - Math.asin(2*(b*d - a*c))
theta = Math.atan(2*(a*d + b*c)/(pow2(a) + pow2(b) - pow2(c) - pow2(d)))
知道我做错了什么或建议其他解决方案吗?
谢谢
最佳答案
您可以将四元数应用到单位向量上,然后计算 Angular :
const vec = new THREE.Vector3();
function getCameraAngle() {
// Reset the vector to a unit vector pointing into the scene
vec.set(0, 0, -1);
// Apply the camera quaternion
vec.applyQuaternion(camera.quaternion);
// Calculate the angle based on Y
return Math.asin(vec.y) * THREE.Math.RAD2DEG;
}
const angle = document.getElementById('angle');
function animate() {
angle.textContent = getCameraAngle().toFixed(2);
renderer.render(scene, camera);
};
// Boilerplate
new WebVRPolyfill();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const scene = new THREE.Scene();
const renderer = new THREE.WebGLRenderer({
antialias: true
});
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.vr.enabled = true;
document.body.appendChild(renderer.domElement);
WEBVR.createButton(renderer);
scene.add(new THREE.AmbientLight('white', 1));
let grid = new THREE.GridHelper();
scene.add(grid);
grid = new THREE.GridHelper();
grid.rotation.x = Math.PI / 2;
grid.position.set(0, 5, -5);
scene.add(grid);
grid = new THREE.GridHelper();
grid.rotation.x = Math.PI / 2;
grid.position.set(0, 5, 5);
scene.add(grid);
grid = new THREE.GridHelper();
grid.rotation.x = Math.PI / 2;
grid.rotation.z = Math.PI / 2;
grid.position.set(5, 5, 0);
scene.add(grid);
grid = new THREE.GridHelper();
grid.rotation.x = Math.PI / 2;
grid.rotation.z = Math.PI / 2;
grid.position.set(-5, 5, 0);
scene.add(grid);
grid = new THREE.GridHelper();
grid.position.set(0, 10, 0);
scene.add(grid);
renderer.setAnimationLoop(animate);
window.addEventListener("resize", () => {
renderer.setSize(window.innerWidth, window.innerHeight);
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
});
body {
margin: 0;
font-size: 0;
}
#angle {
position: absolute;
top: 10px;
left: 10px;
background: white;
font-size: 20pt;
font-family: monospace;
padding: 0.2em;
}
<script src="https://unpkg.com/webvr-polyfill@0.10.6/build/webvr-polyfill.min.js"></script>
<script src="https://unpkg.com/three@0.95.0/build/three.min.js"></script>
<script src="https://unpkg.com/three@0.95.0/examples/js/vr/WebVR.js"></script>
<span id="angle"></span>
关于javascript - 从 Pose.orientation 四元数获取欧拉 Angular ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52011128/
我正在使用react-pose使窗口内和窗口外的通知动画化。 “进入”过渡非常流畅,但是退出时 - 动画非常激进。 有人遇到过这个问题吗?我可以在任何地方上传视频屏幕截图来说明问题(除了 YouTub
我已经尝试了几天在我的游戏中创建 3D 骨骼动画。我正在将 Java 与 LWJGL 结合使用。 在尝试制作动画之前,我试图在程序中实现绑定(bind)姿势。我从 Blender 导出的 collad
我指的是 33 个 body 点和它们之间的连接线。我想更改它们的颜色,尤其是连接线的白色默认颜色。 这是我的代码,我已经为 mediapipe 创建了一个类模块,我可以在我的其他程序中导入和使用它
我指的是 33 个 body 点和它们之间的连接线。我想更改它们的颜色,尤其是连接线的白色默认颜色。 这是我的代码,我已经为 mediapipe 创建了一个类模块,我可以在我的其他程序中导入和使用它
来自文档 https://developers.google.com/ar/reference/java/arcore/reference/com/google/ar/core/Pose我看到 Pos
我正在尝试创建一个包含不同姿势的物体图像的数据集,其中每个图像都用相机姿势(或物体姿势)进行注释。 例如,如果我有一个世界坐标系,我将感兴趣的对象放在原点并将相机放在已知位置 (x,y,z) 并使其面
我关注了the documentation和 this blog post但我正在努力让任何事情发挥作用。 在本地,我收到以下错误:嘿,听着!找不到有效的 DOM 引用。如果您通过 posed(Com
我正在尝试为一个 ios 项目实现摆姿势。 场景: Defining class of controller at run time 我意识到poseAsClass或class_poseAs不适用于i
我正在尝试为一个 ios 项目实现摆姿势。 场景: Defining class of controller at run time 我意识到poseAsClass或class_poseAs不适用于i
我需要获取手机面向的方向和地平线之间的 Angular theta(见图)。 为此,我使用了 web-vr polyfill 库,它允许我访问 VRPose.orientation,即作为四元数的相机
我有一个服务器功能,可以从图像中检测和估计 aruco 标记的姿势。 使用函数 estimatePoseSingleMarkers 我找到了旋转和平移向量。我需要在带有 ARCore 的 Androi
所以我有一个小型 React 应用程序。尝试使用 React Pose 来制作页面转换动画。我遵循了与 one of the official demos with react-router-dom
我目前正在尝试从NERF模型重建网格,我注意到大多数NERF实现都提供了一个Python脚本,用于通过COLMAP从图像中提取相机姿势。我的理解是,这些脚本使用稀疏重建,或者至少使用COLMAP的特征
我在一个使用tflite Posenet在Flutter Framework的移动设备上运行的项目中。我们希望在测试中获得更高的精度得分,但是我们意识到Dart API文档https://pub.de
在 NDK 中使用此函数时: void ArPose_getMatrix( const ArSession *session, const ArPose *pose, floa
我正在尝试使用 OpenCV 来估计相机相对于另一个的一个姿势,使用 SIFT 特征跟踪、FLANN 匹配以及基本矩阵和基本矩阵的后续计算。分解基本矩阵后,我检查退化配置并获得“正确的”R 和 t。
我在使用 OpenCV 从 iPad 相机获取正确的相机姿势时遇到问题。 我正在使用定制的 2D 标记(基于 AruCo library)- 我想使用 OpenGL 在该标记上渲染 3D 立方体。 为
我想在像 Pinterest 这样的网站中实现图像/div 所使用或遵循的样式。或 Pose不管他们的个人决议是什么。我试过像这样将 div 并排放置 CSS: #mainCont
我有一个带有使用 React Pose 的动画的 React 应用程序 ( https://popmotion.io/pose/ )。 这工作正常,但是当我为组件编写集成测试(使用react-test
在谷歌上 Samples我可以获得有关从 ArAnchor 生成的 Pose 中获取 Matrix 的样本。或来自 ArPlane .但是当我试图从 ArCamera不起作用,我的结果是一个单位矩阵。
我是一名优秀的程序员,十分优秀!