【问题标题】:iOS – ARKit node disappear after 100miOS – ARKit 节点在 100m 后消失
【发布时间】:2019-03-18 04:50:36
【问题描述】:

我目前正在开发 ARKit (SpriteKit) 应用程序。我注意到如果我在100m 放置一个节点,该节点会显示得很好,但如果我将它设置为101m 或更远,它就不会显示。

这是距离限制吗?

var translation = matrix_identity_float4x4
translation.columns.3.x = 1
translation.columns.3.y = 1
translation.columns.3.z = -100
let transform = simd_mul(currentFrame.camera.transform, translation)
let anchor = ARAnchor(name: "test", transform: transform)
sceneView.session.add(anchor: anchor)

有没有办法增加这个范围?

【问题讨论】:

    标签: swift sprite-kit augmented-reality arkit scncamera


    【解决方案1】:

    要增加相机的范围,请在属性检查器的Z Clipping 区域中使用Far 属性。

    默认值为100 米。

    var zFar: Double { get set }
    

    摘自Developer Documentationfar 值决定了相机与可见表面之间的最大距离。如果某个曲面与相机的距离超过此距离,则该曲面将被剪裁并且不会出现。默认的远值是100.0

    let camera = SCNCamera()
    camera.zFar = 10000
    

    【讨论】:

    • 非常感谢您非常详细的回答。这就解释了 100m 的限制。我的问题是我使用的是 SpriteKit 而不是 SceneKit。没有 SCNCamera。我发现的唯一接近它的是 SKCameraNode 但它没有 zFar 属性。
    • 也许您拥有SCNScene() 和/或SK3DNode()?您是同时使用 SpriteKit 和 SceneKit 模块,还是只使用 SpriteKit 本身(根本没有 SceneKit)?您的项目中的场景类型是什么:Scene.sksScene.scn
    • 我只想展示一些非常简单的 2D 元素,所以我通过 Xcode 创建了一个 SpriteKit 项目。它自动创建了 Scene.sks 文件。我在 SpriteKit 上找不到方法,这有点令人惊讶。
    • 没关系。 SpriteKit 是一个 2D 框架。但!你的SKS 场景中有SCN 组件吗?任何。
    • 没有,因为我使用了 ARSKView,它使用了 SKNode 和 Scene.sks 场景文件。 ARSKView 甚至不允许我使用 Scene.scn 文件。
    【解决方案2】:

    看起来没有办法更新 SpriteKit 的 Z 最大范围。只有 SceneKit 允许您通过从相机更新 zfar 属性来修改它。感谢 Gigantic 的帮助!

    【讨论】:

      猜你喜欢
      • 2018-08-01
      • 1970-01-01
      • 2018-12-01
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 2016-02-19
      • 1970-01-01
      相关资源
      最近更新 更多