Я последовал вместе с этим превосходным учебником от Юмы и у меня что-то работает.Ниже приведен код, который я использую в моем viewcontroller
import UIKit
import SceneKit
import ARKit
import AVFoundation
import SpriteKit
class ViewController: UIViewController, ARSCNViewDelegate {
@IBOutlet var sceneView: ARSCNView!
override func viewDidLoad() {
super.viewDidLoad()
// Set the view's delegate
sceneView.delegate = self
// Show statistics such as fps and timing information
sceneView.showsStatistics = true
// Create a new scene
let scene = SCNScene(named: "art.scnassets/notebook.scn")!
// Set the scene to the view
sceneView.scene = scene
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Create a session configuration
let configuration = ARImageTrackingConfiguration()
guard let arImages = ARReferenceImage.referenceImages(inGroupNamed: "AR Resources", bundle: nil) else { return }
configuration.trackingImages = arImages
// Run the view's session
sceneView.session.run(configuration)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// Pause the view's session
sceneView.session.pause()
}
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
guard anchor is ARImageAnchor else { return }
// Amy Image recognition
guard let amyContainer = sceneView.scene.rootNode.childNode(withName: "amy", recursively: false) else { return }
amyContainer.removeFromParentNode()
node.addChildNode(amyContainer)
amyContainer.isHidden = false
// Video
let videoURL = Bundle.main.url(forResource: "video", withExtension: "mp4")!
let videoPlayer = AVPlayer(url: videoURL)
let videoScene = SKScene(size: CGSize(width: 900.0, height: 1400.0))
let videoNode = SKVideoNode(avPlayer: videoPlayer)
videoNode.position = CGPoint(x: videoScene.size.width / 2, y: videoScene.size.height / 2)
videoNode.size = videoScene.size
videoNode.yScale = -1
videoNode.play()
videoScene.addChild(videoNode)
guard let video = amyContainer.childNode(withName: "video", recursively: true)
else { return }
video.geometry?.firstMaterial?.diffuse.contents = videoScene
}
}
Когда я использую видео, которое было предоставлено в качестве части учебного пособия, все работает отлично, но когда я пытаюсь включить видео, которое у меня естьСоздано, я получаю только белое поле над целевым изображением, но без видео.
Я утроил, проверил имя, я попытался экспортировать видео с точно такими же размерами, но все безуспешно.Я протестировал загрузку новой версии видео, которая работает под другим именем, и изменил имена, и это работает, поэтому я должен предположить, что я создаю .mp4, и это проблема.
Существуют ли определенные правила / настройки, которые требуются для mp4 для такого подхода, есть ли настройка в Premiere Pro или Handbrake, которую я могу использовать?Или как я могу отладить любые внутренние ошибки, которые происходят через сам Xcode?