swift - SceneKit 和 ARKit 中的 simdTransform 是什么?

标签 swift scenekit augmented-reality arkit realitykit

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

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

我应该什么时候使用它?

最佳答案

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

这是 Apple 对 simdTransform 的评价:

simdTransform is the combination of the node’s simdRotation, simdPosition, and simdScale properties. The default transform is the identity matrix.

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

If you need more info on how 4x4 transformation matrix works, look at this SO post.

附言SIMD 代表单指令多数据。你可以阅读它HERE .

enter image description here

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

相关文章:

ios - 如何检查 UITableViewCell 标签是否被截断?

ios - 从普通 AR View 切换到耳机 AR View

ios - 从 Blender 导入的 Distorterd SCNMorpher 权重动画

c++ - 如何使用 OpenCV Viz 和 ARUCO 为增强现实应用转换 3D 模型

android - 如何在增强现实android中使用图像而不是自定义框

ios - 使用外部源的 subview 中的视频播放器不缩放

ios - 在没有 Storyboard的情况下编写 iOS 8 共享扩展

iOS - 如何在前置摄像头顶部添加 sceneKit 节点对象。不是 ArKit

ios - 如何使用平移手势识别器旋转 SCNSphere

iphone - 适用于 iPhone 的增强现实 API