swift - 不再检测到图像时,ARKit 会重置视频播放器
问题描述
嘿,我最近开始为我想要制作的 AR 书编写代码。通过观看一些教程,我可以在检测到正确图像时播放视频。我的问题是视频只播放一次。我想找到一个解决方案,当不再检测到图像时视频停止播放并在再次检测到图像时重新启动。
我尝试用谷歌搜索问题,但无法集成这样的解决方案: 停止 AVPlayer 并再次重新启动 MP3 文件
我对编码真的很陌生,所以我真的不知道这是否是一个好的解决方案,但这就是我的代码现在的样子。
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
let node = SCNNode()
if let imageAnchor = anchor as? ARImageAnchor {
if imageAnchor.referenceImage.name == "gasstation"{
let size = imageAnchor.referenceImage.physicalSize
let videoUrl = Bundle.main.url(forResource: "video", withExtension: "mp4")!
let videoPlayer = AVPlayer(url: videoUrl)
videoPlayer.play()
let plane = SCNPlane(width: size.width, height: size.height)
plane.firstMaterial?.diffuse.contents = videoPlayer
let planeNode = SCNNode(geometry: plane)
planeNode.eulerAngles.x = -.pi / 2
node.addChildNode(planeNode)
return node
}
if imageAnchor.referenceImage.name == "teaser"{
let size = imageAnchor.referenceImage.physicalSize
let videoUrl = Bundle.main.url(forResource: "teaser_def", withExtension: "mp4")!
let videoPlayer = AVPlayer(url: videoUrl)
videoPlayer.play()
let plane = SCNPlane(width: size.width, height: size.height)
plane.firstMaterial?.diffuse.contents = videoPlayer
let planeNode = SCNNode(geometry: plane)
planeNode.eulerAngles.x = -.pi / 2
node.addChildNode(planeNode)
return node
}
}
解决方案
推荐阅读
- apache - 301 将整个域的(.htaccess)重定向到另一个域索引
- javascript - Javascript从元素中选择不同的名称
- knapsack-problem - 查找总价值大于或等于目标值的最便宜的项目组合
- java - 在控制器 Java 中成功操作后,如何在屏幕上显示成功消息?
- kotlin - 如何在 Kotlin Native 中设置协程调度程序的线程优先级
- flutter - 如何使用 Flutter Gallery 启动应用程序启动 Flutter 项目?
- php - 无法从 Drupal Commerce 2 中的当前会话购物车获取 order_id
- python - 为什么从带有 for 循环的 pandas 数据框创建数组时,我的数组的每个元素都包含在 array([]) 中?
- docker - 未找到 RabbitMQ 指标
- python - 在 Python Flask 中获取用户的位置