Showing:

0

326

2yrs ago

1

0

MIT

# ARKit-SCNPath

Functions and classes for creating path geometries in a SceneKit application on iOS. Main use-case being for ARKit. I'm hoping to add RealityKit support once it is possible to generate meshes. (If anyone knows a way how, please let me know!)

## Introduction

Navigation seems to be a strong point for people making AR apps. So here's a class to easily create a path in AR along a set of centre points. This class can also be used to draw out a racetrack, road for an animated character to follow, or even draw a pentagram on the floor!

Check out the full tutorial on Medium on how I made the examples in the below gifs using this Pod and about 30 lines of non boilerplate code.

Please feel free to use and contribute this library however you like. I only ask that you let me know when you're doing so, so I can see some cool uses of it!

If you're having issues with Swift Package dependencies there's some great resources online: https://developer.apple.com/documentation/xcode/adding_package_dependencies_to_your_app

• Swift 5.0
• iOS 11.0

• SceneKit
• RealityKit

## Example

It's as easy as this to make a node with this path as a geometry:

``````let pathNode = SCNPathNode(path: [
SCNVector3(0, -1, 0),
SCNVector3(0, -1, -1),
SCNVector3(1, -1, -1)
])
``````

Alternatively, you can grab the geometry directly:

``````let pathGeometry = SCNGeometry.path(path: [
SCNVector3(0, -1, 0),
SCNVector3(0, -1, -1),
SCNVector3(1, -1, -1)
])
``````

The y value is set to -1 just as an example that assumes the origin of your scene graph is 1m above the ground. Use plane detection to actually hit the ground correctly.

Other parameters that can be passed into both the SCNPathNode class and the SCNGeometry.path functions:

namedescriptiondefaultexample
pathArray of SCNVector3 points to make up the pathno default[SCNVector3(0,-1,0), SCNVector3(0,-1,-1), SCNVector3(1,-1,-1)]
widthwidth of the path in meters0.50.1
curvePointsnumber of points to make up the curved look when the path is turning to a new direction.816
materialsmaterials to be applied to the geometry.a blue SCNMaterial[SCNMaterial()]
curveDistancedistance from the centre of the curve as a multiple of half the width to set the corner radius. Minimum value is 1.1.52

Here's some basic examples of what you can do with this Package:

## Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100