【发布时间】:2016-01-03 08:23:54
【问题描述】:
我在场景中创建了一个地板,并将一个 collada 文件 (.dae) 加载到我的场景中,并尝试在该模型下方创建一个平面。但我有如下问题。
仅在使用自定义相机时才会出现此问题。使用系统摄像头时场景渲染正确,即如果没有添加自定义摄像头 我的代码如下:
import UIKit import SceneKit class TestVC: UIViewController, SCNSceneRendererDelegate { var cameraNode: SCNNode! var modelNode: SCNNode! var scnView: SCNView! var camNode: SCNNode! var cameraPosition: SCNVector3! override func viewDidLoad() { super.viewDidLoad() scnView = SCNView(frame: self.view.frame) scnView.delegate = self view.addSubview(scnView) scnView.delegate = self let scene = SCNScene() scnView.scene = scene //camera let camera = SCNCamera() cameraNode = SCNNode() cameraNode.camera = camera camera.zFar = 1000 cameraPosition = SCNVector3(0, 100, 150) cameraNode.position = cameraPosition scene.rootNode.addChildNode(cameraNode) //floor let floor = SCNFloor() floor.reflectivity = 0 let floorNode = SCNNode(geometry: floor) let firstmaterial = SCNMaterial() firstmaterial.diffuse.contents = UIImage(named: "art.scnassets/grass.jpg") firstmaterial.diffuse.wrapS = SCNWrapMode.Repeat firstmaterial.diffuse.wrapT = SCNWrapMode.Repeat floor.materials = [firstmaterial] scene.rootNode.addChildNode(floorNode) let light = SCNLight() let lightNode = SCNNode() lightNode.light = light light.type = SCNLightTypeAmbient light.color = UIColor.darkGrayColor() scene.rootNode.addChildNode(lightNode) let light1 = SCNLight() let light1Node = SCNNode() light1Node.light = light1 light1Node.position = SCNVector3(0, 200, -100) light1.type = SCNLightTypeOmni scene.rootNode.addChildNode(light1Node) let modelScene = SCNScene(named: "Barcelona Chair.dae") let solNode = modelScene?.rootNode solNode?.eulerAngles = SCNVector3(GLKMathDegreesToRadians(-90), 0, 0) scene.rootNode.addChildNode(solNode!) scnView.allowsCameraControl = true let plane = SCNPlane(width: 100, height: 100) let planeNode = SCNNode(geometry: plane) planeNode.pivot = SCNMatrix4MakeRotation(Float(M_PI_2), 1, 0, 0)//(CGFloat(M_PI_2), 1, 0, 0) planeNode.position = SCNVector3(0, 1, 0) plane.firstMaterial?.diffuse.contents = UIColor.redColor() scene.rootNode.addChildNode(planeNode) }
【问题讨论】:
-
这可能是这个 dae 特有的问题。你试过其他型号吗?您运行的是 iOS 8 还是 9?使用 Metal 渲染器还是 GL 渲染器?
-
是的,我也尝试过其他型号,但结果是一样的。 iOS 8 和 iOS 9 都会出现问题。