Простая сцена SceneKit показывает черный экран вместо SCNPlane

Я начинаю работать с iOS SceneKit, однако следующий пример кода (который выполняется внутри viewDidLoad) ведет себя не так, как ожидалось. я хочу, чтобы

  1. поместите камеру в начало координат с направлением взгляда на положительную ось z
  2. поместите красный прямоугольник параллельно плоскости xy на z = 100

Почему рендеринг показывает не красный прямоугольник, а только черный экран?

    let scene = SCNScene()

    // prepare camera

    let camera = SCNCamera()
    camera.zNear =  90
    camera.zFar  = 110

    let cameraNode = SCNNode()
    cameraNode.position = SCNVector3Make(0, 0, 0)
    cameraNode.rotation = SCNVector4Make(1, 0, 0, Float(M_PI))
    cameraNode.camera   = camera

    scene.rootNode.addChildNode(cameraNode)

    // prepare light

    let light = SCNLight()
    light.type  = SCNLightTypeOmni
    light.color = SKColor(white: 0.3, alpha: 1.0)

    let lightNode = SCNNode()
    lightNode.light = light;

    scene.rootNode.addChildNode(lightNode)

    // prepare plane

    let plane = SCNPlane(width: 400, height: 400)
    plane.firstMaterial!.doubleSided      = true
    plane.firstMaterial!.diffuse.contents = UIColor.redColor().CGColor

    let planeNode = SCNNode(geometry: plane)
    planeNode.position = SCNVector3Make(0, 0, 100)

    scene.rootNode.addChildNode(planeNode)

    // prepare view as SCNView

    let sceneView = view as SCNView

    sceneView.backgroundColor  = SKColor.blackColor()
    sceneView.scene            = scene
    sceneView.delegate         = self
    sceneView.jitteringEnabled = true // i.e. improve visual rendering
    sceneView.pointOfView      = cameraNode

person Drux    schedule 13.10.2014    source источник
comment
Вы нашли решение?   -  person Morten J    schedule 09.01.2019


Ответы (1)


похоже, что вы вращаетесь вокруг оси x вместо оси y (чтобы камера смотрела в нужном направлении)

person mnuages    schedule 13.10.2014
comment
Это не дает ответа на вопрос. Чтобы подвергнуть критике или запросить разъяснения у автора, оставьте комментарий под его публикацией. - person RobV; 13.10.2014
comment
вращение камеры вокруг неправильной оси может сделать некоторые объекты невидимыми. Что приводит к черному экрану. - person mnuages; 13.10.2014
comment
Хм... если я хочу повернуть направление взгляда с -z на +z, разве поворот на 180 градусов вокруг оси x или z не составляет одно и то же (см. здесь)? - person Drux; 13.10.2014
comment
о, это вращение на пи, а не на пи/2. Так что да, оба приводят к одному и тому же результату. Простите за это. Я протестировал ваш код на iOS и OS X, и в обоих случаях я вижу заштрихованную красную плоскость. - person mnuages; 13.10.2014
comment
+1 за тестирование моего кода. Я поступил глупо, приняв относительно темный/тусклый красный цвет за черный. Если вы отредактируете свой ответ так, чтобы в нем упоминалось тестирование (т. е. чтобы он имел смысл для последующих читателей), я буду рад принять его. - person Drux; 14.10.2014