← All Work
Fabrication

SplatCubes

PRAGMATIC/INDIVIDUAL 2025

How to print a 3D photo

Gaussian splattingGrasshopperRhino3D printingresinC#photogrammetryPolycamvolumetric

A novel computational pipeline converting 3D Gaussian Splat captures of reality into multi-material resin sculptures. Custom Grasshopper/C# scripts translate the probabilistic digital representation of a Gaussian Splat — position, anisotropic scale, quaternion rotation, and opacity — into a printable dual-mesh STL, fabricated on an Objet260 Connex3 resin printer. The result is a clear cube with semi-opaque splat geometry suspended inside, viewable from any angle as a tangible volumetric photograph.

SplatCubes

A splatcube, and the source splat

Photography compresses physical reality into two dimensions. Volumetric capture techniques like Gaussian Splatting show realtiy as three, by encoding scenes as probabilistic, spatially distributed semi-opaque volumes. 3D meshes were the dominant digital capture paradigm for decades, as photogrammetry allowed people to record the world from many angles, then represent it onscreen with the surfaces of thousands of triangles. Splats take a different approach – they are like brush strokes floating in the air. Rather than defining the outline of objects, like a mesh, they add up to create impressionistic blobs of "stuff" that is both more beautiful and can be a more accurate approximation of reality – one that emphasize blurriness and continuity over hard mesh edges.

A splat of me holding this splatcube – scroll in to zoom and see the tiny "brush strokes", technically 3D gaussians, that add up to paint the scene.

The core problem with all 3D capture technology is that in order to view it you have to look at a screen. And screens are (most of the time) only 2D. Meshes can be easily 3D printed – most figurines, and many of the objects you see around you right now were once meshes on a screen, and my past work on full-color 3D printing used meshes as its core geometry. But splats, because of their inherent fuzziness, remain inherently digital and screen-bound. This project developed a technique for physically manifesting splats via 3D printing, translating digital Gaussian fields into tangible artifacts viewable from any angle. Inspired by cubist multiview depictions, it asked: what does a 3D photograph feel like to hold?

Click around the 3D splat and you'll understand why these ethereal ways of displaying form are inherently unprintable.

Capture & Preprocessing

Mobile photogrammetry platforms (Polycam, Luma, Scaniverse) generate Gaussian splat datasets exported in `.ply` format. Each splat is defined by 3D position, anisotropic exponential scale, quaternion rotation, RGB color, and opacity. Polycam outputs binary-encoded data, so a Python script converts binary `.ply` files to human-readable ASCII, enabling direct parsing in Rhino/Grasshopper.

Grasshopper Pipeline

Each splat is proxied as a low-poly 14-face icosphere, balancing computational performance with visual fidelity. Blobs are instantiated at 3D positions and transformed by scale and rotation — quaternion-to-Euler conversion and transformation matrices compute within Grasshopper/C# components. The centroid of all splats is offset to origin; global scale factors fit printable volumes.

Statistical filtering removes large background splats and undersized noise via percentile-based thresholds. Splat opacity maps to physical material density — thin splats thicken proportionally to opacity, preserving relative transparency cues while ensuring printability.

Fabrication

In Rhino I shrinkwrap to remove overlapping splats, decimate the mesh (yes, this pipeline turns splats into meshes!), then subtract the mesh from a bounding cube defining clear and opaque regions. When printed with a semi-opaque resin, the effect is similar to an onscreen gaussian – the edges of each blob are lighter than the thicker, darker center. Artifacts print on DLP at 50 µm resolution on an Objet260 Connex3 multi-material resin printer. Post-processing includes sanding, polishing, and resin reflow for clarity.

SplatCubes

4D Extension

A novel experiment explored long-exposure splats encoding motion over time. A 9-camera linear array captured 30-second exposures of moving subjects under dynamic lighting, producing spatially extended splats resembling volumetric motion trails — hinting at temporally layered splatcubes that physicalize time itself.

SplatCubes

Final Result

Fifteen 10cm³ test cubes succeeded at replicating splats in single color with sub-millimeter fidelity. The project received coverage on Lidar News, Hackaday and 12,000 YouTube views.

SplatCubes
Wyatt Roy Designer, Engineer
← Previous
HandMove
HandMove
Next →
Unfolding
Unfolding