【问题标题】:How to remove a light with shadowMode=deferred in Scenekit/ARKit?如何在 Scenekit/ARKit 中使用 shadowMode=deferred 移除灯光?
【发布时间】:2018-04-26 11:21:33
【问题描述】:

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

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

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

[SceneKit] Error: The shadow node is not registered
[SceneKit] Error: _willExecuteDeferredShadows - no light

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

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

【问题讨论】:

  • 没有这部分代码很难提供帮助,但看起来你在声明它之前设置了 shadow 的属性。

标签: ios scenekit arkit


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 2018-10-29
    • 1970-01-01
    • 2019-04-25
    • 2018-09-26
    • 2020-09-25
    相关资源
    最近更新 更多