Как перезагрузить камеру SceneKit pointOfView

Я новичок SceneKit, Пытаясь выяснить, как я могу сбросить pointOfView Камера для него оригинальное масштабирование / положение, чтобы оно охватывало все узлы в сцене?

2 ответа

@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

Продолжайте кодировать.........:)

Просто установите положение камеры по умолчанию и ориентацию на нужные значения. Используйте следующий код:

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 Свойство instance для кадрирования всех узлов с трехмерной геометрией в вашей сцене:

func resetCameraToDefaultPosition() {

    sceneView.defaultCameraController.frameNodes([coneNode, sphereNode, cubeNode])
}

Но лучший способ - создать новую камеру. Вот что говорится в документации Apple:

Используйте узел с экземпляром 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

Надеюсь это поможет.

Вы можете использовать frameNodes(_:) метод на SCNCameraController разместить камеру так, чтобы набор узлов стал видимым.

Другие вопросы по тегам