我尝试创建一个大型SCNPlane来覆盖整个屏幕。测试代码如下:红色框(尺寸1x1x1)位于蓝色平面的中间(尺寸200 x200)。它们都位于中心点(0,0,0),相机距离该点仅为+5。
当平面节点面向摄像机(大角度)时,它运行良好(图1),左右两侧都可以覆盖屏幕的整个左右两侧。但是,当我将平面旋转到一个小角度(使用相机)时,只显示一小部分。在图2中,平面的左侧更靠近相机。左侧应足够宽(100侧)以覆盖屏幕的所有左侧但不是。将飞机的尺寸增加到10倍(到2000)并没有帮助。
关于问题和解决方案的任何想法?感谢
override func viewDidLoad() {
super.viewDidLoad()
let scnView = self.view as! SCNView
scnView.backgroundColor = UIColor.darkGray
scnView.autoenablesDefaultLighting = true
scnView.allowsCameraControl = true
scnView.scene = SCNScene()
let cameraNode = SCNNode()
cameraNode.camera = SCNCamera()
scnView.scene?.rootNode.addChildNode(cameraNode)
cameraNode.position = SCNVector3(x: 0, y: 0, z: 5)
let theBox = SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0)
theBox.firstMaterial?.diffuse.contents = UIColor.red
let theBoxNode = SCNNode(geometry: theBox)
theBoxNode.position = SCNVector3(0, 0, 0)
scnView.scene?.rootNode.addChildNode(theBoxNode)
let plane = SCNPlane(width: 200, height: 200)
plane.firstMaterial?.diffuse.contents = UIColor.blue
let planeNode = SCNNode(geometry: plane)
scnView.scene?.rootNode.addChildNode(planeNode)
}