Tweet Shoutouts
Super shoutout to iCatcher by @joeisanerd , @iOhYesPodcast , and other software-development podcasts: https://t.co/Vaj2Vp7o2h
— Josh Adams (@vermont42) January 21, 2015
@johnsextro @iOhYesPodcast Sooner or later I'll run into you, and when that time comes, our TDD planning will commence! — marksands (@marksands) January 26, 2015
The Discussion
SceneKit
For a discussion of Apple’s Metal Framework, see Episode 44
@iOhYesPodcast Hello from Romania, Europe! Very nice podcast:) If you accept topic suggestions I would like to hear about SpriteKit/SceneKit
— Ilea Cristian (@ileacristian) October 22, 2014
Here you go, Ilea, this one’s for you…
What is SceneKit?
Objective-C framework for building apps and games that use 3D graphics
High-performance rendering engine
High-level, descriptive API
Supports animation based on the Core Animation framework with defined animatable properties
Abstracts away the rendering algorithms used to display a scene, meaning you don’t need to worry about things like:
Object ordering
Culling
Shaders (though you can write your own if you like)
What is SceneKit not?
A game engine (you must provide your own logic)
An escape from linear algebra
Cross-platform (but who wants to support Android anyway?)
A fully-featured substitute for solutions like Unity3D
Why use SceneKit?
Very easy way to get your feet wet with 3D graphics
Suitable for simple games
Rapid implementation of visualization apps
Major features
Available on Mac OS X and iOS
Integrated inspection (model viewer, material editor, particle editor) and debugging in Xcode
COLLADA importing
Supports geometries, materials, lights and cameras
Animatable properties
LoD substitution (level-of-detail, allowing for variable geometry complexity)
Actions (allows for animation triggers, sound effects, etc)
Skinning and Deformations
Static/dynamic shadowing
Physics, including joints and inverse kinematics
Particles
Ray casting/hit testing
Custom OpenGL shader programs
JavaScriptCore bridging
SpriteKit overlays for performant 2D UI elements that don’t require an additional compositing pass
The basics (iOS-specific)
Assets are contained within a Scene Assets container in your Xcode project
Xcode performs optimizations at build-time (up-axis correction, vertex interleaving, PVRTC image format favoring, etc)
Scenes can be imported from COLLADA (in Xcode. The dae file is converted to a bplist [retaining the .dae extension] before it is put on the device) or un-archived from plists.
Scenes consist of a graph of nodes.
Root node: defines the world’s coordinate space
sub-Nodes: populate the world with visible content by attaching:
Cameras
Lights
Geometries
Scenes can be built-up (or modified after load) programmatically.
sub-Nodes from other scenes can be added to a scene, but a root node must not be added to another scene.
Important classes
SCNView - a view that displays SceneKit content
SCNScene - The container for all SceneKit content
SCNNode - The basic building block of a scene
SCNGeometry - A three-dimensional object that can be attached to a node. Also known as a mesh or model. SceneKit has several built-in primitives that can be used, or custom meshes can be imported or built from vertex data. Surface appearance is defined by materials attached to the geometry.
SCNMaterial - A reusable definition of surface appearance properties for an object
SCNLight - A light source that can be attached to a node, providing shading in the rendered scene
SCNCamera - A virtual camera that can be attached to a node, providing a point of view for rendering a scene.
Open-Source Project of the Week
iOS-8-SceneKit-Globe-Test - @schwa
iOS 8 Scene Kit (swift!) project showing a spinning (earth) globe with diffuse, ambient, specular and normal materials. Also cloud layer. Yum.
Picks
John Follow @johnsextro
“As I learn WatchKit” (AILW) series, by _DavidSmith
Darryl Follow @dh_thomas
SceneKit Sample Projects
Bananas: A simple SceneKit platforming game
SceneKit slides for WWDC 2014
SceneKit Vehicle Demo
Alternative show title suggestions
Shader writing
Lots of polygons
bones and joints
inverse kinematics
draw call, draw call, draw call
root node for the world
particle emitters
hold on to the root node
root node
the maths
skin is a reserved
not a geologist
camera bob
the one with the monkeys