热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ARKitvsSceneKit坐标

如何解决《ARKitvsSceneKit坐标》经验,为你挑选了1个好方法。

我试图理解在ArKit中引入的不同元素与它们在SceneKit中的等价物之间的区别:

SCNNode.simdTransformVS SCNNode.transform.在ARKit中,似乎人们使用SCNNode.simdTransform而不是SCNNode.transform.他们有什么不同?simdTransform似乎使用列主要顺序,而transform(SCNMatrix4)是行主要.如何将一个转换为另一个?只需转置?我的印象是,如果我使用transform而不是跟踪,那么跟踪也不会有效simdTransform.这是预期的还是仅仅是一种印象?如果我设置了一个属性,如果我再设置另一个属性会怎样?

ARFrame.cameravs Scene.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

它们是相同的减一轮吗?



1> Erik Foss..:

SceneKit和ARKit都包含定义为SIMD类型的符号.由于ARKit导入SceneKit,因此两者都可以访问SceneKit中定义的SIMD符号.SIMD类型支持并行计算,因此使用它们可以提高应用程序更新逻辑的性能.正如您所发现的那样,在SIMD类型与其旧的SceneKit或Core Graphics等效类型之间进行转换并不总是一种方便的方法,因此您通常可以在可能的情况下始终使用SIMD来获得更清晰的代码.

更新影响节点转换的任何属性也会更新其他转换属性.这也适用于本地和世界坐标.

描述设备硬件相机的camera属性ARFrame,而不是用于渲染场景的虚拟相机.虽然我希望有一个密切的对应关系,但我猜你是在渲染循环期间更新ARCamera实例之前轮询实例SCNCamera.如果可以,我建议从相应的委托方法中推送这些更新,因为您将知道相关数据是最新的.


推荐阅读
author-avatar
浪之音_544
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有