ios - 在 ARKIT 中无法预览下载的图像
问题描述
我一直在开发一个 ARKit 应用程序,我实现了检测场景中的图片和播放场景中的视频的目标。发生的问题是当我试图从互联网上获取图像时。* 图像被检测到并开始播放(我能够听到音频),但从未在场景中显示任何视频。(我将下面的代码恢复到我开始的位置) * 我真正想要的是更新参考图像和当我的应用在 App Store 中时,随时随地播放的视频。
请告诉最好的解决方案...谢谢
下面是我的完整代码: 导入 UIKit 导入 SceneKit 导入 ARKit 导入 Alamofire 导入 AlamofireImage
类视图控制器:UIViewController,ARSCNViewDelegate {
@IBOutlet var sceneView: ARSCNView!
var imageServer = [UIImage]()
var trackedImages = Set<ARReferenceImage>()
let configuration = ARImageTrackingConfiguration()
let videoNode = SKVideoNode(url: URL(fileURLWithPath: "https://example.com/video1.mp4"))
override func viewDidLoad() {
super.viewDidLoad()
sceneView.delegate = self
sceneView.showsStatistics = true
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
fetchImage {
self.configuration.trackingImages = self.trackedImages
self.configuration.maximumNumberOfTrackedImages = 1
self.sceneView.session.run(self.configuration)
}
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
sceneView.session.pause()
}
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
let node = SCNNode()
if let imageAnchor = anchor as? ARImageAnchor {
videoNode.play()
let videoScene = SKScene(size: CGSize(width: 480, height: 360))
videoNode.position = CGPoint(x: videoScene.size.width / 2, y: videoScene.size.height / 2)
videoNode.yScale = -1.0
videoScene.addChild(videoNode)
let plane = SCNPlane(width: imageAnchor.referenceImage.physicalSize.width, height: imageAnchor.referenceImage.physicalSize.height)
plane.firstMaterial?.diffuse.contents = videoScene
let planeNode = SCNNode(geometry: plane)
planeNode.eulerAngles.x = -.pi / 2
node.addChildNode(planeNode)
}
return node
}
func fetchImage(completion: @escaping ()->()) {
Alamofire.request("https://example.com/four.png").responseImage { response in
debugPrint(response)
print(response.request as Any)
print(response.response as Any)
debugPrint(response.result)
if let image = response.result.value {
print("image downloaded: \(image)")
self.imageServer.append(image)
print("ImageServer append Successful")
print("The new number of images = \(self.imageServer.count)")
}
completion()
}
}
}
解决方案
推荐阅读
- reactjs - 在 VScode 中启动 React 服务器大约需要两分钟,并且不会自动重新渲染
- xslt-1.0 - 在 xslt 中的字符串内创建计数器
- mysql - R闪亮的mySQL仪表板
- python - Django:将外键对象添加到现有对象
- python - 如果密钥对匹配,则从 json 返回/获取值 - Python
- python - Python Twine,Certifi,将包发布到 Pypi 时请求失败
- django - 获取 Django 编程错误:对于确实存在的列,该列不存在
- excel - 当我将 excel 文件保存到其他位置/重命名文件时,运行时错误“对象 '_Connection' 的方法 'Open' 失败”
- python - 将数据框的多列转换为字典
- javascript - Selection.modify("extend", "forward", "sentence"); 正在删除当前选定的单词,只选择句子的其余部分