3
我想從場景的左側投射一個短陰影。我的燈光設置如下:在所有節點上投射陰影SCNLight
func setupLights() {
// Create shadow
let spotLight = SCNLight()
spotLight.type = SCNLightTypeSpot
spotLight.spotInnerAngle = 30.0
spotLight.spotOuterAngle = 80.0
spotLight.castsShadow = true
let spotLightNode = SCNNode()
spotLightNode.light = spotLight
spotLightNode.position = SCNVector3(1.5, 1.5, 1.5)
rootNode.addChildNode(spotLightNode)
// Create ambient light
let ambientLight = SCNLight()
ambientLight.type = SCNLightTypeAmbient
ambientLight.color = UIColor.whiteColor()
let ambientLightNode = SCNNode()
ambientLightNode.name = "AmbientLight"
ambientLightNode.light = ambientLight
ambientLightNode.castsShadow = true
rootNode.addChildNode(ambientLightNode)
// Create an omni-directional light
let omniLight = SCNLight()
omniLight.type = SCNLightTypeOmni
omniLight.color = UIColor.whiteColor()
let omniLightNode = SCNNode()
omniLightNode.name = "OmniLight"
omniLightNode.light = omniLight
omniLightNode.position = SCNVector3(x: -10.0, y: 20, z: 10.0)
omniLightNode.castsShadow = true
rootNode.addChildNode(omniLightNode)
}
有了這個代碼,我有一個光明的場面與一些很輕,長長的影子不是來自左側。我試圖改變目前SCNVector3(1.5,1.5,1.5)的位置,但無論我放置哪個位置,陰影都會消失。有任何想法嗎?
值得注意的是['zFar']的默認值(https://developer.apple.com/library/prerelease/ios/documentation/SceneKit/Reference/SCNLight_Class/index.html#//apple_ref/occ/ instp/SCNLight/zFar),光線和產生陰影的物體之間的最大距離爲1.0。移動聚光燈的位置可能意味着你超過了這個距離,結果是沒有陰影。 全景,環境光和聚光燈對於現場來說可能有點多。對於一個「黑影」,我會嘗試使用灰色的環境光,以及只有聚光燈(不是全向)。 – lock