大佬教程收集整理的这篇文章主要介绍了swift – SceneKit SCNSceneRendererDelegate – 未调用渲染器函数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
import Cocoa import SceneKit class ViewController: NSViewController,SCNSceneRendererDelegate { @IBOutlet weak var sceneView: SCNView! let cubeNode = SCNNode() override func viewDidLoad() { super.viewDidLoad() let scene = SCNScene() let sphere = SCNSphere(radius: 0.1) sphere.firstMaterial!.diffuse.contents = NSColor.yellowColor() let sphereNode = SCNNode(geometry: spherE) scene.rootNode.addChildNode(sphereNodE) let cube = SCNBox(width: 0.2,height: 0.2,length: 0.2,chamferRadius: 0) cube.firstMaterial!.diffuse.contents = NSColor.greenColor() cubeNode.geometry = cube cubeNode.position = SCNVector3(1,0) scene.rootNode.addChildNode(cubeNodE) let cameraNode = SCNNode() cameraNode.camera = SCNCamera() cameraNode.position = SCNVector3(2,1,2) let consTraint = SCNLookAtConsTraint(target: cubeNodE) cameraNode.consTraints = [constraint] scene.rootNode.addChildNode(cameraNodE) sceneView.scene = scene sceneView.BACkgroundColor = NSColor(red: 0.5,green: 0,blue: 0.3,alpha: 1) sceneView.allowsCameraControl = true sceneView.delegate = self sceneView.playing = true } func renderer(renderer: SCNSceneRenderer,updateAtTime time: NSTimeInterval) { cubeNode.position.x += 0.1 } }
我想要的只是基本上每帧移动立方体.但没有任何反应.奇怪的是,当我将sceneView.allowsCameraControl设置为true时,每当我在屏幕上单击或拖动时都会调用渲染器函数(这是有意义的,因为它需要根据摄像机角度更新视图).但我希望每一帧都能调用它.@H_450_18@
是否有错误我没看到或者这是我的Xcode中的错误?@H_450_18@
编辑:
我已经尝试按照下面的答案中的说明,现在有ViewController的以下代码:@H_450_18@
import Cocoa import SceneKit class ViewController: NSViewController { @IBOutlet weak var sceneView: SCNView! let scene = MyScene(create: truE) override func viewDidLoad() { super.viewDidLoad() sceneView.scene = scene sceneView.BACkgroundColor = NSColor(red: 0.5,alpha: 1) sceneView.allowsCameraControl = true sceneView.delegate = scene sceneView.playing = true } }
import Foundation import SceneKit final class MyScene: SCNScene,SCNSceneRendererDelegate { let cubeNode = SCNNode() convenience init(create: Bool) { self.init() let sphere = SCNSphere(radius: 0.1) sphere.firstMaterial!.diffuse.contents = NSColor.yellowColor() let sphereNode = SCNNode(geometry: spherE) rootNode.addChildNode(sphereNodE) let cube = SCNBox(width: 0.2,0) rootNode.addChildNode(cubeNodE) let cameraNode = SCNNode() cameraNode.camera = SCNCamera() cameraNode.position = SCNVector3(2,2) let consTraint = SCNLookAtConsTraint(target: cubeNodE) cameraNode.consTraints = [constraint] rootNode.addChildNode(cameraNodE) } @objc func renderer(aRenderer: SCNSceneRenderer,updateAtTime time: NSTimeInterval) { cubeNode.position.x += 0.01 } }
但是,它仍然无法正常工作.我究竟做错了什么?@H_450_18@
编辑:设置sceneView.loops = true修复了描述的问题@H_450_18@
以上是大佬教程为你收集整理的swift – SceneKit SCNSceneRendererDelegate – 未调用渲染器函数全部内容,希望文章能够帮你解决swift – SceneKit SCNSceneRendererDelegate – 未调用渲染器函数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。