SceneKit камера заставляет объекты не показываться - PullRequest
0 голосов
/ 13 февраля 2020

Я хочу иметь возможность создать собственный узел камеры в SceneKit и просматривать мою сцену с него (вместо камеры по умолчанию).

Однако я столкнулся с очень странной проблемой со SceneKit:

  • Если я использую SCNCamera, в моей сцене ничего не появляется.
  • Если я не использую SCNCamera, объекты в моей сцене отображаются правильно.

Это код, который я использую (очень простой код из учебника):

import UIKit
import SceneKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        let sceneView = SCNView()
        sceneView.frame = self.view.frame
        self.view.addSubview(sceneView)

        let scene = SCNScene()

        sceneView.autoenablesDefaultLighting = true
        sceneView.allowsCameraControl = true

        let cameraNode = SCNNode()
        // If the below line of code is commented out (so no SCNCamera is added), everything shows up
        cameraNode.camera = SCNCamera()
        scene.rootNode.addChildNode(cameraNode)

        let sphere = SCNSphere(radius: 5)
        sphere.firstMaterial?.diffuse.contents = UIColor.red

        let sphereNode = SCNNode(geometry: sphere)
        cameraNode.addChildNode(sphereNode)

        sceneView.backgroundColor = UIColor.green
        sceneView.scene = scene

    }
}

Это кажется довольно простым, но я не могу найти причину, почему это происходит на SO, et c.

Странно, я также замечаю, что если я пытаюсь получить доступ к узлу камеры через sceneView.pointOfView, я получаю nil, даже если sceneView.allowsCameraControl установлен на true

Любая помощь приветствуется!

1 Ответ

1 голос
/ 13 февраля 2020

Сфера является дочерним узлом камеры, без какого-либо смещения (ее position равно (0, 0, 0)), и поэтому камера находится внутри сферы. И если материал сферы не doubleSided, то вы ничего не увидите.

...