作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在不同的 ARKit 和 SceneKit 项目中,我看到人们使用 simdTransform。
但我不明白他们为什么要使用它?
我应该什么时候使用它?
最佳答案
在 3D 图形世界中,simdTransform
4x4 矩阵是处理 3D 模型、相机和灯光的平移、旋转、缩放、剪切和投影的常规方法。
这是 Apple 对 simdTransform 的评价:
simdTransform
is the combination of the node’ssimdRotation
,simdPosition
, andsimdScale
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 .
关于swift - SceneKit 和 ARKit 中的 simdTransform 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56695624/
在不同的 ARKit 和 SceneKit 项目中,我看到人们使用 simdTransform。 但我不明白他们为什么要使用它? 我应该什么时候使用它? 最佳答案 在 3D 图形世界中,simdTra
我是一名优秀的程序员,十分优秀!