Próbuję zrozumieć różnicę między innym elementem wprowadzonym w ArKit i ich ekwiwalenty może w SceneKit:ARKit vs SceneKit współrzędne
SCNNode.simdTransform
vsSCNNode.transform
. W ARKit wydaje się, że ludzie używająSCNNode.simdTransform
zamiastSCNNode.transform
. Czym się różnią? Wydaje się, że simdTransform używa głównej kolejności kolumn, a transformacja (SCNMatrix4) jest wierszem głównym. Jak mogę przekonwertować jeden na drugi? Po prostu przetransponować? Mam wrażenie, że śledzenie nie działa tak dobrze, jeśli używamtransform
zamiastsimdTransform
. Czy to jest oczekiwane, czy tylko wrażenie? Jeśli ustawię jedną właściwość, co się stanie, jeśli ustawię drugą?ARFrame.camera
vsScene.pointOfView
: Patrząc na ich transformacje, wydają się być nieco inna:
.
// ARFrame.camera.transform (matrix_float4x4)
-0.01 0.99 -0.11 0.02
-0.99 0.00 0.11 0.06
0.10 0.11 0.98 0.0
0.0 0.0 0.0 1.0
// sceneView.pointOfView.transform (SCNMatrix4)
// or sceneView.pointOfView.simdTransform^T (matrix_float4x4)
0.99 0 0.11 0
0.01 0.99 -0.12 0
-0.11 0.11 0.98 0
0.03 0.6 0.0 0.99
Czy są takie same minus jeden obrót?
_ "Mam wrażenie, że śledzenie nie działa tak dobrze, jeśli używam transformacji zamiast simdTransform. Czy to jest oczekiwane, czy tylko wrażenie?" _ ;-) Tylko Ty możesz stwierdzić, czy to było tylko twoje wrażenie lub że miałeś mocne dowody, np widząc dzienniki Xcode stwierdzające _ [Technika] Na wydajność śledzenia świata wpływają ograniczenia zasobów_ Powiedz nam, czy to było ostatnie, byłoby bardzo interesujące. – PDK