我是SceneKit
的新手。试图弄清楚如何将pointOfView
相机重置为其原始缩放/位置,使其覆盖场景中的所有节点?
答案 0 :(得分:1)
您可以在frameNodes(_:)
上使用SCNCameraController
方法来放置相机,以便可以看到一组节点。
答案 1 :(得分:0)
只需将默认相机位置和方向设置为所需值即可。使用以下代码:
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)
}
此外,按照 @mnuages 的建议,您可以使用defaultCameraController
实例属性来对场景中具有3D几何形状的所有节点进行构图:
func resetCameraToDefaultPosition() {
sceneView.defaultCameraController.frameNodes([coneNode, sphereNode, cubeNode])
}
但是更好的方法是创建一个新相机。 Here's what Apple documentation says:
使用已将SCNCamera实例分配给其camera属性的节点查看场景。节点提供虚拟相机的位置和方向,相机对象提供渲染参数,例如视野和焦点。
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
希望这会有所帮助。
答案 2 :(得分:0)
@IBOutlet weak var sceneKitView: SCNView! //Your SCNView
var myCamera:SCNNode! //An object to hold your scene's camera
在viewDidLoad中,使用您的相机名称加载它:
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
继续编码......:)