DDDKit
An open source library to support 360 videos and pictures. It's designed as a generic 3D library that you can use for much more!
Example of use cases
- 360 video player
- 360 image display
- generic 3D scene
- photo / video filters within a 3D scene
Installation
See the wiki! or:
pod 'DDDKit'
Quickstart
import DDDKit
import AVFoundation
class ViewController: DDD360VideoViewController {
override func viewDidLoad() {
super.viewDidLoad()
show(from: myVideoURL)
}
}
Example
Image filter (easy to be creative!)
// 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
}
cubic projection
360node.geometry = DDDGeometry.Cube()
let videoTexture = DDDVideoTexture(player: player) // AVPlayer with 360 cubic video
node.material.set(
property: videoTexture,
for: "SamplerY",
and: "SamplerUV"
)
Screenshots from the demo app:
Documentation
See the wiki!
Features
- easy to use syntax and logic
- support of image and video textures
- direct and easy access to shader's code, shaders modifiers -> easy to make image filters
- focus on reliability on video support.
- equirectangular and cubic 360 support
- elements that can have any shape / position
Why not SceneKit?
- SceneKit has bugs, such as memory leaks, failing video support (see SO)
- no support of AVPlayerLayer / AVPlayer as video input
- indirect video support (through SpriteKit)
- openGL backed rendering failing on iOS 10
- poor documentation
- unresponsiveness from Apple on issues, and no timeline/transparency on fixes
- no access to code to fix things yourself, since it's not open source.
Author
Guillaume Sabran, [email protected], CTO @Pie
License
DDDKit is available under the MIT license. See the LICENSE file for more info.