Popularity
2.1
Growing
Activity
0.0
Stable
76
5
9

Programming language: Swift
License: MIT License
Tags: Augmented Reality    

ARVoxelKit alternatives and similar libraries

Based on the "Augmented Reality" category.
Alternatively, view ARVoxelKit alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of ARVoxelKit or a related project?

Add another 'Augmented Reality' Library

README

ARVoxelKit

Lightweight Framework for Voxel graphic using AR + SceneKit

Build Status

[](preview.gif)

Requirements

ARVoxelKit requires iOS 11 and devices, which support ARKit

Usage

  1. Import libraries as follows:
import ARVoxelKit
import ARKit
import SceneKit
  1. Setup your ARSCNView with VKSceneManager manager in you ViewContoller:
var sceneManager: VKSceneManager?

@IBOutlet open var sceneView: ARSCNView! {
    didSet { sceneManager = VKSceneManager(with: sceneView) }
}

override open func viewDidLoad() {
    super.viewDidLoad()
    sceneManager.delegate = self
}

override open func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    sceneManager?.launchSession()
}

override open func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    sceneManager?.pauseSession()
}
  1. Conform your delegate instance to VKSceneManagerDelegate:
public protocol VKSceneManagerDelegate: class {
    var voxelSize: CGFloat { get }

    func vkSceneManager(_ manager: VKSceneManager, shouldResetSessionFor state: VKARSessionState) -> Bool
    func vkSceneManager(_ manager: VKSceneManager, didUpdateState state: VKARSessionState)
    func vkSceneManager(_ manager: VKSceneManager, didFocus node: VKDisplayable, face: VKVoxelFace)
    func vkSceneManager(_ manager: VKSceneManager, didDefocus node: VKDisplayable?)
    func vkSceneManager(_ manager: VKSceneManager, countOfVoxelsIn scene: ARSCNView) -> Int
    func vkSceneManager(_ manager: VKSceneManager, voxelFor index: Int) -> VKVoxelNode
}
  1. You can add/remove voxels by calling manager methods:

    public func add(new voxel: VKVoxelNode)
    public func add(new voxel: VKVoxelNode, to otherVoxel: VKVoxelNode, face: VKVoxelFace)
    public func add(new voxel: VKVoxelNode, to tile: VKTileNode)
    public func remove(_ voxel: VKVoxelNode)
    
  2. Edit surfaces, tiles, voxels using paint command:

    public enum VKPaintCommand {
    
    case color(content: UIColor)
    case faceColor(content: UIColor, face: VKVoxelFace)
    case colors(contents: [UIColor])
    
    case image(content: UIImage)
    case faceImage(content: UIImage, face: VKVoxelFace)
    case images(contents: [UIImage])
    
    case gradient(contents: [UIColor], start: CGPoint, end: CGPoint)
    case faceGradient(contents: [UIColor], start: CGPoint, end: CGPoint, face: VKVoxelFace)
    
    case transparency(value: CGFloat)
    case faceTransparency(value: CGFloat, face: VKVoxelFace)
    }
    

    for example:

    voxel.apply([.color(content: VKConstants.defaultFaceColor),
             .transparency(value: 1)], animated: true)
    
  3. Change default setup by changing VKConstants values

Example

Check our example by running ARVoxelKitExample target