Skip to main content

3 posts tagged with "gaussian-splats"

View All Tags

Create 3D Gaussian Splat Apps with the PlayCanvas Editor

Β· 3 min read

CLICK HERE to open in a new tab. Credits: Splats scanned at the V&A Museum. HDRI from Poly Haven.

We have big news for the 3D Gaussian Splat community - the PlayCanvas Editor now has fully integrated support for splats! Learn how to quickly build stunning, interactive 3DGS applications today.

What you need

🀳 A smartphone
πŸ’» A computer with a web browser
⏱️ A small amount of time

The application above shows several splats assembled in a single application, with animation and post effects spicing up the visuals. Let's check out how it was built.

Step 1: Clean in SuperSplat πŸ§Ήβ€‹

After capturing the statues to PLY format, our first stop is SuperSplat, the open source tool for editing and optimizing 3D Gaussian Splats. Here, in a little over a minute, we can isolate the statue from the background and align it with the origin:


Once we are done, we can download the splat using our compressed PLY format. In this case, our downloaded PLY is only 1.56MB!

Step 2: Import into the Editor πŸš§β€‹

Now that we have a clean, compressed PLY, we simply need to drop it into the Editor's Asset Panel. And from there, drag it into the viewport to add it to the scene. Let's do that (along with a cube map for a photographic backdrop):


The PlayCanvas Editor is a powerful visual environment for building and publishing 3D scenes. You can:

  • Grab useful scripts (and other assets) from the Asset Store. Here, we import an Orbit Camera script.
  • Create beautiful user interfaces, using either HTML or PlayCanvas' built-in UI system.
  • Add sound, physics, VR/AR support and much, much more.

Step 3: Add Animation and Post Effects βœ¨β€‹

What really makes the demo pop is the transitions that fade the statues in and out.


With the Editor, you can customize the shader code that renders your splats to apply stunning animation effects. For the transition between statues, individual splats are transformed and recolored over time, while a full-screen bloom effect is ramped up and down.

Resources​

Today's release makes working with 3D Gaussian Splats both easy and fun! We've shown you how to build a virtual gallery or museum but the possibilities are endless. With 3D Gaussian Splats in the PlayCanvas Editor, you can target many verticals: product visualization (furniture, clothing, consumer electronics), automotive, education, travel and so much more.

To get started, here is an useful list of resources:

Go Forth and Create​

We hope you love today's update as much as we do! ❀️

But let us know what you think by heading over to the forum or ping us on X!

A Faster SuperSplat with PWA Support

Β· 2 min read

Today, we are announcing the latest release of SuperSplat, the open source tool for editing and optimizing 3D Gaussian Splats. If you don't have a PLY file to hand, here's an example!

SuperSplat PWA

Version 0.17.1 focuses on two key areas: performance and PWA support.

Performance Improvements​

SuperSplat is now over 2x faster on the GPU! πŸƒ

Compare before and after (notice GPU time dropping from 32ms to 13.5ms for the bike scene):

SuperSplat PWA

This is thanks to the v1.71.0 release of the PlayCanvas Engine, which includes a dramatic overhaul of how splats are processed by the GPU. For the technical details, take a look at this pull request.

The result is that SuperSplat can now throw around millions of splats and still maintain a silky smooth frame rate. Try it for yourself!

PWA Support​

A Progressive Web App (PWA) is a web application that provides a native app-like experience, including the ability to install it on a user's home screen or desktop.

From today, SuperSplat is shipping with PWA support! πŸŽ‰


To install SuperSplat as a PWA:

  1. Visit https://playcanvas.com/supersplat/editor.
  2. Hit the Install SuperSplat button in the address bar.
tip

For your convenience, pin SuperSplat to the Taskbar (Windows) or add it do the Dock (macOS).

PLY File Association​

With SuperSplat installed as a PWA, your operating system can now open launch PLY files directly into the tool. Simply right-click on a PLY file and select SuperSplat to open it.


You can also set SuperSplat as the default tool to open your PLYs. Then, you can simply double-click a PLY file to open it instantly in SuperSplat!

Your Feedback Matters​

We hope you love today's update! ❀️

The SuperSplat community has grown a lot in recent weeks and we want to get your feedback. What other features would you like the PWA to get? Are you still experiencing any performance problems? What is still missing from SuperSplat? Let us know by heading over to the forum or ping us on X!

Compressing Gaussian Splats

Β· 4 min read
Donovan Hutchence
Staff Software Engineer

Introduction​

3D Gaussian Splatting is a new method for digitizing and rendering real world objects. With gaussian splatting, you can digitize a scene from a few photos using services like Luma Labs or Polycam. These services take the set of photos and generate a 3d Gaussian Splat scene in PLY format.

For example, this is a Gaussian Splat scene rendered in PlayCanvas.

What is a Splat?​

Gaussian Splat Scenes are not made up of polygons and textures. Instead, they are made up of many (up to millions) of individual, unconnected blobs called splats. A splat is just a particle in space with size, orientation, color and opacity.

Below you can see a single brown splat selected. The splat bounding box shows its orientation and size:

Splat Example

The gaussian part of the name comes from the shape of splat itself: the splat opacity has a gaussian falloff from its center to its edge.

Engine Support​

The PlayCanvas team has been adding support to the engine for loading and rendering Gaussian Splat PLY files:

Engine Example

Since the resulting files are often messy and require cleaning, we released SuperSplat, a tool for cleaning and processing gaussian splat PLY files:

SuperSplat Example

PLY Format​

However, the default gaussian splat PLY format as exported by training tools is large.

This is because the uncompressed format stores a large amount of data per splat:

NameData FormatBytes
Position3 x float12
Orientation4 x float16
Scale3 x float12
Spherical harmonics / color48 x float192
Total232

For example, the original guitar.ply scene file takes 132.8 MB (32 MB excluding spherical harmonic data).

Compressed PLY Format​

So we introduced a compressed PLY format for use in runtime applications. The compressed PLY file format ignores the unused spherical harmonic data and stores the rest of the elements in quantized integers.

The format can be summarized as follows:

  • Split the scene into chunks of 256 splats
  • For each chunk, store the min and max (x, y, z) for position and scale in floating point
  • For each splat in the chunk, store a normalized and quantized value for position and scale (relative to chunk extents) and orientation and color

This data layout results in the following data per chunk:

NameData FormatBytes
Position bound6 x float24
Scale bound6 x float24
Total48

And the following data per splat:

NameData FormatBytes
Positionuint32 (11, 10, 11)4
Orientationuint32 (2, 10, 10, 10)4
Scaleuint32 (11, 10, 11)4
Coloruint32 (8, 8, 8, 8)4
Total16

As a result, the compressed version of guitar.ply takes only 8.7 MB.

Do It Yourself​

The easiest way to generate a compressed PLY file yourself is using the SuperSplat tool. Load the PLY file into SuperSplat and export it again using the 'Compressed Ply File' option:

SuperSplat Export

If you are interested in the file format specifics, see this code which demonstrates how to decompress the file data.

See this editor project for an example of loading and rendering a compressed gaussian splat PLY file. Or you can run it here.

Summary and Future​

We have introduced a new compressed PLY format for gaussian splatting which is roughly 4x smaller than uncompressed data and can be used in realtime applications.

In future we hope to:

  • store splats hierarchically for optimized rendering and culling
  • implement realtime splat LOD
  • test skinning and animation of gaussian splats
  • further compress gaussian splat data
  • optimize WebGPU rendering

References​

The compressed format is largely based on the fine work of Aras Pranckevičius and his blog posts.