gpt4 book ai didi

ios - SceneKit - 围绕 X 和 Z 轴旋转对象

转载 作者:搜寻专家 更新时间:2023-11-01 06:02:20 24 4
gpt4 key购买 nike

我正在使用 ARKit 和 SceneKit。当用户按下按钮时,我创建一个 anchor ,并向与之对应的 SCNNode 添加一个 3D 对象(从项目中的 .scn 文件加载)。

3D 对象面向相机放置,方向与相机相同。我想让它看起来像物体躺在一个平面上,而不是倾斜的。所以,如果我做对了,我需要应用旋转变换,使其围绕 X 和 Z 轴的旋转变为 0。

我的尝试是:获取节点的 x 和 z eulerAngles,反转它们,然后围绕每个轴旋转该量

let rotationZ = rotationMatrixAroundZ(radians: -node.eulerAngles.z)
let rotationX = rotationMatrixAroundX(radians: -node.eulerAngles.x)

let rotationTransform = simd_mul(rotationTransformX, rotationTransformZ)
node.transform = SCNMatrix4(simd_mul(simd_float4x4(node.transform), rotationTransform))

这在大多数情况下都可以正常工作,但在某些情况下,对象会以完全奇怪的方式旋转。我应该设置除了当前欧拉角的倒数之外,还有其他任何旋转角度吗?直接将角度设置为 0 根本不起作用。

最佳答案

我遇到过这个并发现我遇到了 gimbal lock .解决方案是围绕一个轴旋转节点,将其作为另一个 SCNNode() 的父节点,然后围绕另一个轴旋转父节点。希望对您有所帮助。

关于ios - SceneKit - 围绕 X 和 Z 轴旋转对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45929532/

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