2017-11-13 4 views
1

저는 ARKit 장면을 사용하여 그림자를 투영하는 스포트라이트 오버 헤드를 배치했습니다.Scenekit/ARKit에서 shadowMode = deferred로 빛을 제거하는 방법?

투명한 평면에 그림자를 드리려고 했으므로 shadowMode 속성을 스포트라이트에 지연 (https://developer.apple.com/documentation/scenekit/scnshadowmode/1523758-deferred)으로 설정했습니다. ("앞으로"기본값)을 shadowMode이 설정되지 않은 경우

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

이 응용 프로그램은, 충돌하지 않습니다

이 작동하지만, 내가 다시 스포트라이트를 제거 할 때와 응용 프로그램 충돌

어떻게 충돌없이 빛을 제거 할 수 있습니까?

+0

코드의이 부분이 없으면 도움이 되기는 어렵지만, 선언하기 전에 그림자 속성을 설정 한 것처럼 보입니다. – Zydnar

답변

1

나는 그것을 제거하기 전에 빛이 들어있는 노드에 node.hidden = Yes를 설정해야한다는 것을 알았다. 이것은 충돌을 방지합니다 :

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