gpt4 book ai didi

scenekit - ARKit 与 SceneKit 坐标

转载 作者:行者123 更新时间:2023-12-04 04:15:21 30 4
gpt4 key购买 nike

我试图了解 ArKit 中引入的不同元素与 SceneKit 中可能的等价物之间的区别:

  • SCNNode.simdTransform对比 SCNNode.transform .在 ARKit 中,似乎人们使用 SCNNode.simdTransform而不是 SCNNode.transform .它们有何不同? simdTransform 似乎使用列主要顺序,而变换(SCNMatrix4)是行主要顺序。如何将一种转换为另一种?只是转置?我的印象是,如果我使用 transform,跟踪将无法正常工作。而不是 simdTransform .这是预期的还是只是印象?如果我设置了一个属性,如果我再设置另一个属性会怎样?
  • ARFrame.camera对比 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

    它们是相同的减去一圈吗?

    最佳答案

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

    更新影响节点变换的任何属性也会更新其其他变换属性。这也适用于本地和世界坐标。
    camera ARFrame 的属性(property)描述设备的硬件摄像头,而不是用于渲染场景的虚拟摄像头。虽然我希望有密切的通信,但我猜你正在轮询 ARCamera SCNCamera 之前的实例实例已在渲染循环期间更新。如果可以,我建议从适当的委托(delegate)方法驱动这些更新,因为您会知道相关数据是最新的。

    关于scenekit - ARKit 与 SceneKit 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44732476/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com