Что такое simdTransform в SceneKit и ARKit? - PullRequest
1 голос
/ 21 июня 2019

В разных проектах ARKit и SceneKit я вижу людей, работающих с simdTransform .

Но я не могу понять, почему они это используют?

А когда мне его использовать?

1 Ответ

2 голосов
/ 22 июня 2019

В мире 3D-графики матрицы simdTransform 4x4 - это обычный способ работы с перемещением, вращением, масштабированием, сдвигом и проекцией 3D-моделей, камер и источников света.

Вот что говорит Apple simdTransform :

simdTransform представляет собой комбинацию узла 'simdRotation, simdPosition и simdScale свойства.Преобразованием по умолчанию является матрица тождеств .

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, посмотрите на это сообщение SO .

PS SIMD означает Отдельная инструкция , Несколько данных .Вы можете прочитать об этом ЗДЕСЬ .

enter image description here

...