DDDKit
一个开源库,支持 360 度视频和图片。它是一个通用的 3D 库,您可以用它做更多的事情!
使用实例
- 360 度视频播放器
- 360 度图像显示
- 通用 3D 场景
- 3D 场景中的照片/视频过滤器
安装
查看 wiki!或
pod 'DDDKit'
快速入门
import DDDKit
import AVFoundation
class ViewController: DDD360VideoViewController {
override func viewDidLoad() {
super.viewDidLoad()
show(from: myVideoURL)
}
}
示例
图像过滤器(易于创新!)
// B&W filter:
@IBAction func didPressBW(_ sender: Any) {
let program = try! DDDShaderProgram(fragment: defaultShader, shaderModifiers: [
.fragment: "gl_FragColor = vec4(vec3(gl_FragColor.x + gl_FragColor.y + gl_FragColor.z) / 3.0, 1.0);",
])
videoNode.material.shaderProgram = program
}
立方投影
360node.geometry = DDDGeometry.Cube()
let videoTexture = DDDVideoTexture(player: player) // AVPlayer with 360 cubic video
node.material.set(
property: videoTexture,
for: "SamplerY",
and: "SamplerUV"
)
演示应用程序截图
文档
查看维基!
功能
- 易用的语法和逻辑
- 支持图像和视频纹理
- 直接且易于访问着色器代码、着色器修饰符 -> 易于制作图像过滤器
- 关注视频支持的可靠性。
- 支持等角和立方360度
- 可以具有任何形状/位置的元素
为什么不使用SceneKit?
- SceneKit存在一些问题,如内存泄漏,视频支持失败(参见SO)
- 不支持AVPlayerLayer / AVPlayer作为视频输入
- 间接的视频支持(通过SpriteKit)
- iOS 10下OpenGL支持的渲染失败
- 文档质量较差
- 对苹果问题不响应,并且没有修复时间表/透明度。
- 无法访问代码自行修复,因为这不是开源的。
作者
Guillaume Sabran,[email protected],Pie公司首席技术官
许可证
DDDKit 在 MIT 许可证下提供。有关更多信息,请参阅 LICENSE 文件。