Искажение / искажение видео при добавлении 360-градусного видео в SCNSphere

Я создаю простой видеопроигрыватель 360 с использованием SpriteKit, SceneKit и CoreMotion. На видео я вижу искажение / деформацию. Смотрите: изображение деформации видео в Scenekit

Размер видео 3840 x 1920. Я знаю, что видео хорошее, потому что, когда я загружаю его на YouTube, искажений нет. Смотрите: изображение видео на проигрывателе youtube без деформации

Кто-нибудь испытывал подобное раньше? Может я что-то упускаю? Видео воспроизводится, звук в порядке, отслеживание камеры хорошее, проблема только в искажении видео.

Вот основа моего плеера:


        self.player = AVPlayer(url: url)
        let videoNode = SKVideoNode(avPlayer: player)

        // set size to 3840 x 1920 resolution
        let size = CGSize(width: videoWidth, height: videoHeight)

        videoNode.size = size
        videoNode.position = CGPoint(x: size.width/2.0, y: size.height/2.0)

        let spriteScene = SKScene(size: size)

        spriteScene.addChild(videoNode)

        let sphere = SCNSphere(radius: 30)
        sphere.firstMaterial?.isDoubleSided = true
        sphere.firstMaterial?.diffuse.contents = material

        let sphereNode = SCNNode(geometry: sphere)
        sphereNode.position = SCNVector3Make(0,0,0)
        sphereNode.rotation = SCNVector4Make(1, 0, 0, Float.pi)

        // Set the sceneView
        let scene = SCNScene()

        sceneView.scene = scene
        sceneView.showsStatistics = false
        sceneView.addGestureRecognizer(tap)

        // Camera
        cameraNode.camera = SCNCamera()
        cameraNode.camera?.automaticallyAdjustsZRange = true
        cameraNode.position = SCNVector3Make(0, 0, 0)

        // Add nodes to scene
        scene.rootNode.addChildNode(sphereNode)
        scene.rootNode.addChildNode(cameraNode)

        sceneView.play(self)

0 ответов

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