测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017年9月 |
SwiftSwift 版本 | 3.1 |
SPM支持 SPM | ✗ |
由 Jun Tanaka 维护。
基于 Metal 的 iOS 360° 全景视图。
特点 | |
---|---|
基于 SceneKit + Metal 构建 | |
支持 Cardboard 的扭曲立体视图 | |
支持单声道/立体等角图像/视频 | |
直接访问 AVPlayer 实现视频控制 | |
平滑触摸旋转和重新居中 | |
自定义 SCNScene 呈现 | |
使用 Swift 3 编写 |
使用 PanoramaView
显示等角图像或视频。
import MetalScope
import Metal
import AVFoundation
guard let device = MTLCreateSystemDefaultDevice() else {
fatalError("MetalScope requires Metal 🤘")
}
let panoramaView = PanoramaView(frame: ..., device: device)
// load monoscopic panorama image
let panoramaImage = UIImage(...)
panoramaView.load(panoramaImage, format: .mono)
// load stereoscopic panorama video
let videoURL = URL(...)
let player = AVPlayer(url: videoURL)
panoramaView.load(player, format: .stereoOverUnder)
player.play()
// load any SCNScene
panoramaView.scene = ...
PanoramaView
通过设备运动和用户的滑动手势旋转视角。要重置旋转,只需调用 setNeedsResetRotation()
let panoramaView: PanoramaView = ...
// double tap to re-center the scene
let recognizer = UITapGestureRecognizer(
target: panoramaView,
action: #selector(PanoramaView.setNeedsResetRotation(_:)))
recognizer.numberOfTapsRequired = 2
panoramaView.addGestureRecognizer(recognizer)
// if you want to disable pan gesture:
panoramaView.panGestureRecognizer.isEnabled = false
YouTube 上的 60 FPS 演示
对于 Google Cardboard 的立体显示,请使用 StereoView
或 StereoViewController
。
let stereoViewController = StereoViewController(device: ...)
// load media
stereoViewController.load(image, format: .stereoOverUnder)
// or any SCNScene
stereoViewController.scene = panoramaView.scene
// customize stereo parameters if needed
stereoViewController.stereoParameters = StereoParameters(
screenModel: .default,
viewerModel: .cardboardMay2015)
present(stereoViewController, animated: true, completion: nil)
查看示例应用程序以获取更多示例。
PanoramaView
、StereoView
和 StereoViewController
也可以通过使用替代的初始化器在 iOS 模拟器上使用。
#if arch(arm) || arch(arm64)
let panoramaView = PanoramaView(frame: view.bounds, device: device)
#else
let panoramaView = PanoramaView(frame: view.bounds) // simulator
#endif
请注意,这些类在模拟器中的功能会受到很大限制。例如,PanoramaView
可以显示图片,但不能显示视频。对于 StereoView
和 StereoViewController
,它只是一个占位符,不会显示任何内容。
备注:Metal 不受 iOS 模拟器支持。
您也可以通过将 MetalScope.xcodeproj
拖放到您的项目或工作区来手动安装框架。
MetalScope 在 MIT 许可证下发布。详细信息请参阅 LICENSE。