Значения преобразования SceneKit, как они реализованы? - PullRequest
0 голосов
/ 02 мая 2018

Документация Apple SceneKit предполагает, что матрица преобразования объекта состоит из информации о повороте, положении и масштабе. Однако матрица преобразования является матрицей 4х4, последний столбец - 0,0,0,1. Каковы именно эти значения и есть ли более подробное объяснение этой матрице? Например, какие столбцы / строки представляют что, почему там 4 строки и для чего последний столбец?

Пример кода:

for t in 0...3 {
    print("\t")
    for n in frame.camera.transform[t] {
        print(String(format: "%10.1f", n),terminator: "");
    }
}

Выход:

   0.1      -0.7       0.7       0.0    
   1.0       0.2      -0.1       0.0    
  -0.1       0.7       0.7       0.0    
   0.3      -0.1       0.0       1.0

1 Ответ

0 голосов
/ 02 мая 2018

Я почти уверен, что это CATransform3D:

https://developer.apple.com/documentation/quartzcore/catransform3d

Что является одной из самых глупых "документов" в истории печально известной документации Apple.

Попробуйте, с машины обратного хода, когда они, по крайней мере, говорили о вещах немного глубже ... немного: https://web.archive.org/web/20111010140734/http://developer.apple.com/library/mac/#/web/20111012014313/https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/Layers.html

m34 - самая интересная из всей матрицы, так как обычно ее называют ответственной за перспективу .

И вот одна из лучших статей, когда-либо написанных о Core Animation, которая объясняет некоторые аспекты этого преобразования: http://www.thinkandbuild.it/introduction-to-3d-drawing-in-core-animation-part-1/

...