gpt4 book ai didi

swift - 先前 SceneKit 内容的闪烁

转载 作者:行者123 更新时间:2023-11-30 13:38:56 26 4
gpt4 key购买 nike

我的应用将 SceneKit 内容的“页面”与图像和文本交替。当我从图像页面前进到新的 SceneKit 页面时,前一个 SceneKit 页面中的内容会短暂显示,然后被新内容替换。时髦。

我只使用一个 SCNScene 和一个 SCNView。当我转换到图像类型页面时,我隐藏了 SCNView。要恢复新的 SceneKit 显示 I:

  1. rootNode中删除所有节点
  2. 从文件加载新的节点图
  3. 将新节点图添加到rootNode
  4. 取消隐藏SCNView

显然,取消隐藏是异步的,当新场景正在建立时,我看到了早期场景的残余。我在 AVPlayer 上也遇到了类似的问题。

在过去的应用程序中,我在 MPMoviePlayer 中遇到了同样的问题,并通过在电影 View 上显示空白 View ,然后在当前电影已加载的通知中隐藏该 View 来解决该问题。也许我可以以相同的方式处理 AVPlayer 问题,但我认为这不适用于 SceneKit。即使在 AVPlayer 的情况下,如果可能的话,我也希望有更好的方法来处理该问题。

edit_1:我尝试过 Hal 的交换 SCNScenes 的想法,但仍然得到瞬时残留图像。我尝试过使用两个 SCNViews 并交替交换它们。我还尝试在退出当前场景之前将相机移过可见元素。 prepareObjects:withCompletion 处理程序什么也没做。

看起来持久存在的不是节点,也不是 SCNScene,而是场景的渲染图像。如上所述,通过电影播放器​​见证这种效果也支持了这一点。

edit_2:我尝试了一个掩码,但像所有其他尝试一样,它失败了。我确实“成功”地使用 SCNAction 将相机移至屏幕外,并使用完成处理程序仅在之后才生效。然而,这会延长加载时间约 800%!最好有丑陋的“闪光”。

最佳答案

我有一些有效的方法,但我对此表示怀疑。我创建了一个“nullCamera”,它指向一个空的视野。在切换场景之前,我将该摄像机分配给 SCNView。当新场景加载时,主摄像机将被重新分配。但我对这种方法感到紧张。

我之前尝试过这个方法,但没有成功。它现在可以工作了,因为我将代码移到了上游(而不是它看起来所属的位置)。但中间的代码与SceneKit 无关。它仅解析字符串数据、设置颜色首选项并在标签中显示标题。所以我担心这只是时间问题,我可能会在更快的设备上再次看到这个问题。也许将标题写入 View 元素也会强制重新显示 SCNView ? (我似乎无法用代码实现这一点。)

关于swift - 先前 SceneKit 内容的闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35800929/

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