在不同的arkit和scenekit项目中,我看到人们使用simdtransform。
但我不明白他们为什么要用它?
我应该什么时候用?

最佳答案

在三维图形世界中,simdTransform4x4矩阵是处理三维模型、相机和灯光的平移、旋转、缩放、剪切和投影的常规方法。
以下是苹果对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
P.S.SIMD代表单指令、多数据。你可以阅读它HERE
swift - 什么是SceneKit和ARKit中的simdTransform?-LMLPHP

关于swift - 什么是SceneKit和ARKit中的simdTransform?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56695624/

10-13 05:52