我在我的SceneKit应用程序中有一个立方体,一面墙和两个lightNodes,我想让这个立方体在墙上投射一个阴影。
我的lightNodes在这里:
let lightNode = SCNNode()
lightNode.light = SCNLight()
lightNode.light!.type = SCNLightTypeSpot
lightNode.position = SCNVector3(x: 0, y: 0, z: 15)
lightNode.castsShadow = true
scene.rootNode.addChildNode(lightNode)
// create and add an ambient light to the scene
let ambientLightNode = SCNNode()
ambientLightNode.light = SCNLight()
ambientLightNode.light!.type = SCNLightTypeAmbient
ambientLightNode.light!.color = UIColor.darkGrayColor()
ambientLightNode.castsShadow = true
scene.rootNode.addChildNode(ambientLightNode)
这是我的墙:
var wall = SCNNode(geometry: SCNBox(width: 400, height: 100, length: 4, chamferRadius: 0))
wall.geometry?.firstMaterial!.emission.contents = UIColor.lightGrayColor()
wall.geometry?.firstMaterial!.doubleSided = false
wall.castsShadow = true
wall.position = SCNVector3Make(0, 0, -5)
wall.physicsBody = SCNPhysicsBody.staticBody()
scene.rootNode.addChildNode(wall)
正如您所看到的,所有节点(包括立方体)都有投射阴影的属性,因为它是true
。
墙上怎么会没有影子?
发布于 2015-04-23 16:00:49
和here有同样的问题?必须在灯光上设置castsShadow
(而不是在包含灯光的节点上)。
另请注意,全向灯光和环境光不能投射阴影。只有平行光和聚光灯可以。
发布于 2015-06-06 20:04:51
我不确定为什么会出现这种情况,但我遇到了类似的问题,我发现将light
的shadowMode
设置为SCNShadowModeDeferred
可以解决这个问题。
https://stackoverflow.com/questions/29827311
复制相似问题