2017-03-21 28 views
1

我正在嘗試生成一個3d體素樣式的島,並且正在生成磚並將它們放置在場景中。但是,當我將攝像機節點上的z軸設置爲超過150時,對象會消失在白色背景之後。SCNNodes在Scene Kit中縮小後消失?

import Cocoa 
import SceneKit 
import PlaygroundSupport 

let view = SCNView() 
let scene = SCNScene() 
view.scene = scene 
view.frame = CGRect(x: 0, y: 0, width: 650, height: 650) 

public func buildIsland(size: Int, image: NSImage, scene: SCNScene){ 

//Start building the island 
var blocks = 0 
for x in 0...size { 
    for y in 0...size { 

     //Create Block 
     var block = SCNBox(width: 10, height: 10, length: 10, chamferRadius: 0) 
     var color = SCNMaterial() 
     color.diffuse.contents = CGColor.init(red: 0, green: 1, blue: 0, alpha: 1) 
     block.materials[0] = color 
     var node = SCNNode(geometry: block) 
     node.position = SCNVector3(x/2, y/2, 0) 
     scene.rootNode.addChildNode(node) 
     blocks = blocks + 1 

    } 
} 

} 




view.autoenablesDefaultLighting = true 
var cameraNode = SCNNode() 
cameraNode.camera = SCNCamera() 
cameraNode.position = SCNVector3(x: 0, y: 0, z: 200) 
scene.rootNode.addChildNode(cameraNode) 

buildIsland(size: 4, image: NSImage(), scene: scene) 

view.allowsCameraControl = true 

PlaygroundPage.current.liveView = view 

回答

1

配置相機的zFar屬性,以避免當相機進一步遠離削波。 (默認值是100)

例如: cameraNode.camera?.zFar = 500

你可以利用這個特性發揮,同時努力保持良好的性能得到一切可見。