我在Xcode中打开了.dae
以在SceneKit中显示它。一切都很好。
要添加一些节点,我使用Xcode自动将其转换为.scn
格式。
然而,当我现在运行应用程序时,模型旋转了90度,可能是因为y轴的方向不同。
是否有选项可以解决这个问题,而无需手动将所有东西旋转90度?
当然,我可以将Euler angle
设为XZY 270度。但是,这不是一个干净的解决方案,因为我还必须调整我对模型所做的任何操作的参数。有没有办法,将这个270度设置为新的默认值= 0度?
答案 0 :(得分:1)
rotation
,eulerAngles
和orientation
属性 - 都会影响节点转换属性的旋转方面。对其中一个属性的任何更改都会反映在其他属性中。
var rotation: SCNVector4 { get set }
var eulerAngles: SCNVector3 { get set }
var orientation: SCNQuaternion { get set }
尝试更改向量匹配(eulerAngles
)旋转轴的组件顺序(xyz)。对于macOS,xyz
字段的类型为CGFloat
,而对于iOS,它们的类型为Float
。
此向量中的组件顺序与旋转轴匹配:
音高(X
组件)是关于节点X-axis
的旋转。
偏航(Y
组件)是关于节点Y-axis
的旋转。
Roll(Z
组件)是关于节点Z-axis
的旋转。
SceneKit相对于组件的节点的pivot属性以相反的顺序应用这些旋转:
最佳解决方案是在3D包装中使用 ZYX rotation order
准备3D模型。