Blog
Binding Metal textures to a shader using SCNProgram bug in ios 9.3
I’ve been moving an iOS app from OpenGL to Metal recently and ran into some undocumented issues with SceneKit, Metal and iOS 9. A common way to bind Metal textures is to use SCNMaterialProperty objects referencing UIImages as in this…
Bypassing long file verification in OSX
Handy way to tell Gatekeeper a large file is from a trusted source when it’s taking forever to verify xattr -d com.apple.quarantine “Big File” SO link
Video Sculpture Timelapse
Here’s a timelapse I made while setting up a projection mapped sculpture installation for a party. The sculpture is made of modular blocks which allows for a modular mapping technique where the blocks can be assembled in arbitrary configurations. Since…
Kinect powered LED Portal
I put up the files for a TouchDesigner driven fadecandy LED portal I made for a halloween party. A kinect is being used to alter the speed and mixing of the effects. The app is a Spout Cinder app which…
Camera tracking with Pixy and Dynamixel Servos
I hooked up my Pixy Cam to an Arbotix running two dynamixel servos in a pan/tilt configuration. They Dynamixels are very advanced actuators with dedicated onboard MCUs for adjustable torque, speed, and response. They also have position, load, voltage, and…
Chromebook Pixel Video Wall
Obscura hosted the launch event for Google’s Chromebook Pixel laptop. A video wall was constructed consisting of 25 Pixel laptops running a very high res video across all the screens. I was responsible for creating the playback system to synchronize…
Giant Android Phone
I recently completed a project that required and Android OS application to run on a large blowup of an Android phone using an lcd monitor and a touch foil overlay. There were a number of different proposed methods for getting…
3D finger tracking experiment
Last week I setup a Three Gear tracking system to test out it’s abilities. The system does fairly precise tracking of individual fingers and also detects some gestures. It seems similar to what the leap controller advertises but is available…
Cinder Kinect Proof of Concept
An experiment in using a person’s reflected silhouette to move back and forth through a filmstrip. This was a quick demo to showcase a hardware configuration consisting of a monitor integrated with a small form factor pc and a 3d…
3D to 2D correspondence Mapping Technique
I’ve been testing out a technique using a modified version of Kyle McDonald’s opensource Mapamok code to quickly calibrate a virtual 3d model to a projector and I’m finding it’s a good technique for mapping models. I’ve developed a workflow…
Interactive Dance Floor
This was a quick project using the same setup as the Facebook project : Four overhead Christie LW1400 projectors blended together, two synchronized rendering machines with two DVI outputs each, four 3D Tyzx cameras and a linux box running Tyzx…
Projection mapped wall
To test out a new projection mapping tool I did a quick mapping of the wall created by the architecture firm IwamotoScott who shares a space in the Obscura office. You can read more about the wall here. The mapping…
Nokia Horizon Line
This was a permanent installation for the lobby of a new Nokia R+D building. The concept was a collection of real-time data visualizations of various Nokia statistics like phone sales or text messages sent along with displays of various phone…
real time hair prototype
A test to create real-time realistic looking hair on the gpu. I used instanced quads to render out the strands using two end points as inputs for each strand encoded in a pixel buffer. the pixel buffer was run through…
GPU based Kinect point cloud visualizer
I created a plugin for TouchDesigner to visualize Kinect point clouds on the GPU. I used the OpenNI SDK to get the pointcloud image in real world coordinates inside of TouchDesigner. Then I ran it through a GLSL shader to…
Interactive Sphere
This was a fun project calling for a custom interactive sphere video controller as part of a large permanent installation. The installation involved a large number of spheres with synchronized video projections. The “earth” sphere served as a controller for…
Generic Adaptive Mesh Refinement
My implementation of the technique involved rendering the geometry using hardware instancing of a single quad whose positions are calculated in a vertex shader. By changing the the subdivisions of the quad you can easily add or remove detail to…