.scn模型从.dae转换后旋转90度

时间:2018-01-25 14:00:59

标签: swift xcode 3d ios11 scenekit

我在Xcode中打开了.dae以在SceneKit中显示它。一切都很好。

要添加一些节点,我使用Xcode自动将其转换为.scn格式。

然而,当我现在运行应用程序时,模型旋转了90度,可能是因为y轴的方向不同。

是否有选项可以解决这个问题,而无需手动将所有东西旋转90度?

当然,我可以将Euler angle设为XZY 270度。但是,这不是一个干净的解决方案,因为我还必须调整我对模型所做的任何操作的参数。有没有办法,将这个270度设置为新的默认值= 0度?

1 个答案:

答案 0 :(得分:1)

rotationeulerAnglesorientation属性 - 都会影响节点转换属性的旋转方面。对其中一个属性的任何更改都会反映在其他属性中。

var rotation: SCNVector4 { get set }
var eulerAngles: SCNVector3 { get set }
var orientation: SCNQuaternion { get set }

尝试更改向量匹配(eulerAngles)旋转轴的组件顺序(xyz)。对于macOS,xyz字段的类型为CGFloat,而对于iOS,它们的类型为Float

此向量中的组件顺序与旋转轴匹配:

  1. 音高(X组件)是关于节点X-axis的旋转。

  2. 偏航(Y组件)是关于节点Y-axis的旋转。

  3. Roll(Z组件)是关于节点Z-axis的旋转。

  4. SceneKit相对于组件的节点的pivot属性以相反的顺序应用这些旋转:

    1. 首先滚动
    2. 然后偏航
    3. 然后 Pitch
    4. 最佳解决方案是在3D包装中使用 ZYX rotation order 准备3D模型。