我是SceneKit
的新手。尝试弄清楚如何将pointOfView
相机重置为其原始缩放/位置,以便它可以覆盖场景中的所有节点。
我是SceneKit
的新手。尝试弄清楚如何将pointOfView
相机重置为其原始缩放/位置,以便它可以覆盖场景中的所有节点。
@IBOutlet weak var sceneKitView: SCNView! //Your SCNView
var myCamera:SCNNode! //An object to hold your scene's camera
myCamera:SCNNode = scene.rootNode.childNode(withName: "sceneCamera", recursively: true)!
// sceneCamera is my camera node's name in .scn file
sceneKitView.allowsCameraControl = true //Allow camera control
请执行以下步骤:
sceneKitView.allowsCameraControl = false
sceneKitView.pointOfView = myCamera
保持编程......:)
只需设置默认的相机位置和方向,使用以下代码:
func resetCameraToDefaultPosition() {
sceneView.pointOfView?.position = SCNVector3(x: 5, y: 0, z: 5)
sceneView.pointOfView?.orientation = SCNVector4(x: 0, y: 1, z: 0, w: .pi/4)
}
defaultCameraController
实例属性来定位场景中所有带有3D几何图形的节点:func resetCameraToDefaultPosition() {
sceneView.defaultCameraController.frameNodes([coneNode, sphereNode, cubeNode])
}
但更好的方法是创建一个新的相机。这里是苹果文档中的说明:
使用一个具有SCNCamera实例分配给其相机属性的节点来查看场景。节点提供虚拟相机的位置和方向,而相机对象提供渲染参数,如视野和焦点。
let cameraNode = SCNNode()
cameraNode.position = SCNVector3(x: CGFloat, y: CGFloat, z: CGFloat)
cameraNode.rotation = SCNVector4(x: CGFloat, y: CGFloat, z: CGFloat, w: CGFloat)
let camera = SCNCamera()
camera.focalLength = 24
cameraNode.camera = camera
self.sceneView.defaultCameraController.frameNodes(self.scene.rootNode.childNodes)
没有生效。 - Kashif