【问题标题】:.scn model rotated by 90 degrees after conversion from .dae.scn 模型从 .dae 转换后旋转 90 度
【发布时间】:2018-07-04 19:26:43
【问题描述】:

我在 Xcode 中打开了一个.dae 以在 SceneKit 中显示它。一切正常。

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

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

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

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

【问题讨论】:

    标签: swift xcode 3d ios11 scenekit


    【解决方案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。

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

    1. Pitch(X 分量)是围绕节点的X-axis 旋转。

    2. Yaw(Y 组件)是围绕节点的Y-axis 旋转。

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

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

    1. 第一个滚动,
    2. 然后偏航,
    3. 然后推介。

    最好的解决方案是在 3D 包中使用 ZYX rotation order 准备 3D 模型。

    【讨论】:

      猜你喜欢
      • 2018-05-16
      • 2013-08-19
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      • 2021-05-24
      • 2011-03-22
      • 1970-01-01
      相关资源
      最近更新 更多