【发布时间】:2017-11-27 16:27:15
【问题描述】:
我试图了解 ArKit 中引入的不同元素与 SceneKit 中的可能等效元素之间的区别:
SCNNode.simdTransform与SCNNode.transform。在 ARKit 中,人们似乎使用SCNNode.simdTransform而不是SCNNode.transform。它们有何不同? simdTransform 似乎使用列主要顺序,而变换(SCNMatrix4)是行主要顺序。如何将一种转换为另一种?只是转置?我的印象是,如果我使用transform而不是simdTransform,则跟踪效果不佳。这是预期的还是只是印象?如果我设置了一个属性,如果我再设置另一个属性会怎样?ARFrame.cameravsScene.pointOfView:看看他们的转换,他们似乎有点不同:
.
// 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
它们是否相同减去一圈?
【问题讨论】:
-
“我的印象是,如果我使用 transform 而不是 simdTransform,跟踪效果也不好。这是预期的还是只是印象?” ;-)只有您可以判断这只是您的印象还是您有确凿的证据,例如通过查看 Xcode 日志说明 [Technique] 世界跟踪性能受到资源限制的影响 告诉我们是否是后者,那将非常有趣。