The Lab

Creativity is like a muscle: if it isn't exercised regularly, it becomes harder to think outside the box and to explore and express ideas.

I believe that engineering, like any form of art, can be a creative outlet.
Creative solutions don't come easily unless you are prepared to let things get messy, unpredictable and, last but not least, practice practice practice.

The Lab is my collection of experiments and explorations into technology, software and engineering which sometimes work, and often don't, but are always opportunities to learn and grow.

interaction in the lab

1/1/21: Making Anything Interactive

The Goal: make any display/wall/table/sculpture/etc. react to people with as little technology as possible.
Watch the video here

The Good Stuff

It's Flexible. It's Scalable.
Using this method of user input, the number and size of interactive regions can be flexible: small - medium range displays: could use just one camera, while large format displays could use 2 to 4 cameras to capture a wider area. The system doesn't require the display to be conventional or flat: now curved or irregular shaped displays can be made to react to visitors. It doesn't even need to be a display!

It's Fast
Reacting to people is tricky - if you are late or laggy, you'll lose them. Because this system only uses raw point cloud data (from any depth sensor) without the need for gesture recognition or skeletal data, it is super fast. This also cuts down on the expense of computing power needed to interpret user input. 

The Not-So-Good Stuff

Still Uses Local Network, Custom Events
Perhaps instead of sending custom UDP events for a front end application to listen to, future versions of this application could generate native mouse events, making it easier to integrate with a broad range of applications and web sites.

Lab Data Viz

12/8/20: 3D Data Viz- Making Human Spaceflight Data Beautiful

The Goal: Visualize a data set in Unity 3D with dynamic graphics and interactivity (click to view)

The Good Stuff

Unity + MVC, FTW
Since I'm expanding my knowledge base of Unity programming, this project represented an opportunity to establish a model-view-control structure to organize functions, assets and code. Really makes things easier in the long run.

Building Custom UI Elements
Sure, Unity has some built-in UI buttons and such, but I wanted to push the aesthetics and reactivity of the buttons and slider so they could be fully customized. So, yeah.

The Not-So-Good Stuff

Unity WebGL: Still Doesn's Play Well With Mobile Browsers
Unity can export to a number of platforms - maybe I'll try a mobile friendly version of this same application later!


7/20/20: The Shrink Ray

The Goal: capture 3D data in real time, transmit this data and reproduce it in a holographic imaging device.
Watch the behind the scenes video here

The Good Stuff

Holograms Are Cool
Working in 3D is already fun, but having a display where you can address pixels in 3D space is even more fun. The Looking Glass display prototype provides stereoscopic view of a 3D object or scene with novel vantage points - although it doesn't capture well on camera (i.e. from single vantage point) - trust me, it's cool!

Designing a System to Transmit 3D Data Over the Web
Several folks have already connected depth sensing cameras to holographic displays - but in today's climate of remote work, remote meetings, etc. I wanted to create a system where you could capture in one place and reproduce it in another.

For this reason, the compression and transmission of 3D data became a large focus of this experiment. The unique broadcast protocol over UDP was then easily picked up and interpretted by a custom Unity application to be reproduced as a hologram

The Not-So-Good Stuff

We're Going To Need a Bigger Computer
A bottle neck was encountered which prevented higher resolution (and color!) transmission of 3D data. This was both on the transmit side (old PC) and the receiving side (Unity application needs to be optimized and multithreaded!).

As a result - if I return to this experiment - I think my focus would be on improving the fidelity of the holographic image while maintaining a smooth transmission rate.


6/9/20: Unity and WebGL

The Goal: create a cool animated and interactive 3D element for the web site in Unity. (located here

The Good Stuff

Epic Lighting. Without The Effort!
First off: Unity allows you to bring some pretty awesome visual effects that would otherwise be difficult to program such as lighting, shadows and material effects.
Yes, I remember the days of having to generate and draw polygonal geometry that looked like a "shadow" in openGL. and flash. ouch, just dated myself.

The Animation Engine Experiment
I created an animation engine which provides all real time motion.

the cool parts:
- it is based upon Penner's equations and associated math to allow for a wide range of motion profiles
- it adjusts animation timing and frame duration in real time based upon local performance (frames per second). i.e. If you've got a super grahpics workstation, you see the same stuff, just smoother and spread over more frames.

The Not-So-Good Stuff

Compatibility Issues
I was surprised to find that the application quickly crashed my mobile device (Pixel 2). My hope was that content generated in Unity and published for web would inherently be compatible with any/all devices :(

okay warning label posted.


Mr. Resistor (the lab mascot)