Как сбросить SceneKit pointOfView камеру - PullRequest
0 голосов
/ 21 октября 2018

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

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

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

0 голосов
/ 22 октября 2018

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

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

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

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

...