OStack程序员社区-中国程序员成长平台

标题: ios - 如何在 Scenekit/ARKit 中使用 shadowMode=deferred 移除灯光? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 03:17
标题: ios - 如何在 Scenekit/ARKit 中使用 shadowMode=deferred 移除灯光?

我有 ARKit 场景,我在头顶放置聚光灯以转换阴影。

因为我想在透明平面上转换阴影,所以我在聚光灯上将属性 shadowMode 设置为延迟 (https://developer.apple.com/documentation/scenekit/scnshadowmode/1523758-deferred)。

这可行,但是当我再次移除聚光灯时,应用程序崩溃:

[SceneKit] 错误:影子节点未注册
[SceneKit] 错误:_willExecuteDeferredShadows - 没有光

当 shadowMode 未设置时,应用程序不会崩溃(默认为“前进”)

我怎样才能在不崩溃的情况下移除灯?



Best Answer-推荐答案


我发现我需要在删除之前在包含灯光的节点上设置 node.hidden=Yes。这证明了崩溃:

if(node.light) {
  node.hidden = YES;
  [node removeFromParentNode];
}

关于ios - 如何在 Scenekit/ARKit 中使用 shadowMode=deferred 移除灯光?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47270056/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4