【问题标题】:What is simdTransform in SceneKit and ARKit?SceneKit 和 ARKit 中的 simdTransform 是什么?
【发布时间】:2019-11-03 20:14:50
【问题描述】:

在不同的 ARKit 和 SceneKit 项目中,我看到人们使用 simdTransform

但我不明白他们为什么要使用它?

我应该什么时候使用它?

【问题讨论】:

标签: swift scenekit augmented-reality arkit realitykit


【解决方案1】:

在 3D 图形世界中,simdTransform 4x4 矩阵是处理 3D 模型、相机和灯光的平移、旋转、缩放、剪切和投影的常规方式。

以下是 Apple 对 simdTransform 的评价:

simdTransformnodesimdRotationsimdPositionsimdScale 属性的组合。默认变换是恒等矩阵

var simdTransform: simd_float4x4 { get set }

// all these properties are parts of a simdTransform
var simdPosition: simd_float3 { get set }
var simdRotation: simd_float4 { get set }
var simdEulerAngles: simd_float3 { get set }
var simdOrientation: simd_quatf { get set }
var simdScale: simd_float3 { get set }
var simdPivot: simd_float4x4 { get set }

4x4 单位矩阵如下所示:

      x  y  z
   ┌              ┐
x  |  1  0  0  0  |
y  |  0  1  0  0  |
z  |  0  0  1  0  |
   |  0  0  0  1  |
   └              ┘

...在代码中:

var transform = matrix_identity_float4x4

示例 - 使用 4x4 矩阵更改位置

      0  1  2  3      // column index
   ┌               ┐
   |  1  0  0  tx  |
   |  0  1  0  ty  |
   |  0  0  1  tz  |
   |  0  0  0  1   |
   └               ┘

...在代码中:

var translation = matrix_identity_float4x4

translation.columns.3.x = 10.25
translation.columns.3.y = 20.50
translation.columns.3.z = 30.75

如果您需要有关 4x4 转换矩阵如何工作的更多信息,请look at this SO post

附: SIMD代表Single InstructionMultiple Data。你可以阅读它HERE

【讨论】:

    猜你喜欢
    • 2021-03-15
    • 2017-11-27
    • 2021-02-19
    • 2018-12-25
    • 2018-05-18
    • 2020-05-06
    • 1970-01-01
    • 2018-01-09
    • 2017-11-27
    相关资源
    最近更新 更多