Gaussian splats in Blender: PlayCanvas open-sourced a SuperSplat extension.
Paste a SuperSplat scene link to import it into Blender 5.3, or publish your own splat back. MIT, out today.
playcanvas/supersplat-blender-extension
More daily finds: studios.greatcreations.art
2 likes · 37 views
Gaussian Splat Viewers on Desktop: PLY, SOG and SPZ
> Originally published by Alicia Lu on 5 November 2026 at Digital Garden. Alicia is a 3D technical artist, TA and independent developer. Codex assisted with this study.
I used one 4,096-splat synthetic garden to check three ways to view Gaussian splats locally in Chrome. SuperSplat's generated HTML and antimatter15/splat both rendered the garden. A pinned PlayCanvas Model Viewer debug build rendered original PLY, compressed PLY and bundled SOG. The same viewer did not load SPZ v3 or v4 through its local file input. Its release build hit a worker error before displaying the three supported files.
Three desktop paths
| Viewer path | Local input actually tried | Desktop result |
| --- | --- | --- |
| SuperSplat Viewer standalone | SOG embedded by splat-transform 3.10.3 | Visible garden in a 960 × 720 canvas |
| antimatter15/splat at ba182b51b7c2 | Original PLY by absolute same-origin URL | Visible garden and a WebGL instanced draw with 4,096 instances |
| PlayCanvas Model Viewer 5.10.0, debug WebGL2 | PLY, compressed PLY and bundled SOG | All three rendered and each decoded resource held 4,096 splats |
| PlayCanvas Model Viewer 5.10.0, debug WebGL2 | SPZ v3 and SPZ v4 | Both left the load screen visible with no decoded splat resource |
!SuperSplat Viewer displaying the garden from the generated HTML with an embedded SOG payload
!PlayCanvas Model Viewer debug build rendering the bundled SOG with its scene panel visible
The screenshots use the viewers' own camera and UI. I checked file loading and actual drawing. The format comparison uses one renderer and matched cameras for its separate image-error and startup measurements.
Replaying local files
For SuperSplat Viewer, this command generates a standalone HTML page that embeds the SOG data. My generated file was 3,892,390 bytes including the viewer.
npx splat-transform -g cpu garden.ply garden.html
For antimatter15/splat, serve the upstream HTML and JavaScript from a static server and set the url query parameter to an absolute same-origin PLY URL. A relative value resolves against the viewer's default asset host. My initial relative-URL probe attempted to reach that host, which the harness blocked. The final replay issued only local GET requests.
The PlayCanvas test used the open-source Model Viewer at commit 34df5967df32 with PlayCanvas Engine 2.19.7. I built the release and debug targets from the same source and lockfile. The release build hit a ReferenceError in its blob worker on WebGL2 and WebGPU. The error also appeared after the panel reported 4,096 primitives for PLY. The rendered garden was absent, so those runs did not pass. The upstream debug build ran the three supported formats on WebGL2. Its compressed PLY and SOG scene panels showed zero primitives even when the garden was visibly rendered. I checked the decoded resource count for those rows. This describes the pinned local builds. The hosted viewer and the engine's separate SPZ parser have their own paths. Model Viewer source, Model Viewer formats, PlayCanvas Engine SPZ parser.
What the desktop check covers
The successful local replays required no login and made only local GET requests in the isolated test. The network evidence covers these specific self-hosted paths, with any nonlocal traffic blocked by the harness. It says nothing about upload and account behavior on third-party hosted services. The rendered screenshots and source file receipts are included. Physical iPhone and Quest 3 operation, immersive modes and hosted service policies remain separate tests. SuperSplat Viewer, antimatter15/splat.
Alicia is a 3D technical artist, TA and independent developer. Codex assisted with the test harness, evidence checks and editing.
Related studies
- Five encodings of one splat garden
- Five Three.js splat renderer paths
Data and reproduction
- viewers.json
- playcanvas-viewer-debug-resource.json
- splat-viewers-desktop-reproduction.zip
Major SuperSplat release: follow creators, new home page and search, and enhanced XR
Hi r/GaussianSplatting! We've just shipped a massive SuperSplat update, and this one is mostly about superspl.at itself rather than the editor.
Follow creators
You can now follow creators from their profile, from one of their scenes or from the profile card that pops up when you hover over a name in the comments. Their new splats show up in a Following tab on the home page, and your follower count shows on your profile.
Notifications
There's a notification bell in the top bar for comments, likes and new followers on your splats. The old emails were noisy, so comments are now bundled into one email, and likes and followers go into a daily summary. You can choose what you get in your notification settings.
New home page and search
The home page now has a Spotlight row (walkable worlds, free downloads, best of the week, all-time greats) above Trending, Latest and Following tabs. There's also a dedicated search page with Walkable and Downloadable filters, a time period from the past day to all time, and sorting by views, likes, date or size.
XR
- Two-handed manipulation: squeeze both grips (or make fists with hand tracking) to drag, rotate and scale the whole scene, anywhere from 0.25x to 4x.
- Much faster on Quest: up to 1M splats, fixed foveation and a 72 Hz target. A large streamed scene on a Quest 3 went from 9.7 fps to 30.7 fps, or 40.3 fps with Quality set to Performance.
- AR hides the skybox, so the scene sits in your passthrough view.
- Sessions start facing the same way as the camera.
- Post effects and tone mapping now carry into XR.
- In XR, detail level is picked by distance only, so looking over your shoulder doesn't reveal low-detail splats.
- Apple Vision Pro runs XR on WebGPU in Safari.
Heads-up for Quest users: SuperSplat renders with WebGPU by default, but XR on Quest currently needs WebGL. The first time you tap VR, the viewer offers to reload with WebGL. Press OK, then tap VR again.
Other bits
- Splat counts on every scene page
- A timeline in SuperSplat Studio (press T)
- Uploads that take longer than 20 minutes no longer fail, .spz and XGRIDS LCC2 uploads are supported, and scenes over 40M splats get LODs automatically
- SplatTransform has a new --camera-track option that renders a camera animation from a SuperSplat project to image frames, with depth of field and motion blur (guide)
Everything is open source under MIT: SuperSplat Editor, SuperSplat Viewer, SplatTransform and the PlayCanvas Engine.
Full write-up: blog.playcanvas.com
Join the SuperSplat community today on Discord: discord.com
We'd love feedback, especially from anyone trying the XR mode on a headset. And who should everyone be following? Drop your favorite profile below. 👇
42 points · 15 comments
I had no idea SOG was being used this way, so cool! I'm busy working on V3 if there's anything you think we should include.
splat-transform#362
SOG v3 spec in progress: 4 bands of SH, decimation alpha compensation, and glTF-style extras
Hey everyone,
I’m busy putting together the proposal for SOG v3 (PlayCanvas' compressed format for 3D Gaussian Splatting), and I'd like to get community feedback and catch any potential edge cases.
The current proposal includes:
- Tighter Data Packing: Further reducing file sizes and streaming overhead for web runtime delivery.
- Support for up to 4 Bands of SH: Catering to high-fidelity captures requiring richer view-dependent lighting and specular detail.
- Support for Alpha > 1: Primarily targeted at post-decimation compensation—allowing fewer splats to accurately represent dense volumes without visual thinning.
- Per-Gaussian Custom / Blind Data: Adding support for arbitrary user attributes (semantic segmentation masks, custom IDs, interaction tags, etc.).
- meta.json Extras Field: Adopting a glTF-style extras object to allow standard and custom metadata extensions without breaking parser compatibility.
Please check the full proposal on GitHub: splat-transform#362
Thanks!
9 points · 2 comments
PlayCanvas brings WebMCP to 3D editing.
SuperSplat 3.7 introduces 24 WebMCP tools, allowing AI agents to inspect, edit, and export 3D scenes directly in the browser. Changes share the editor’s undo history.
Learn more from @playcanvas:
github.com/playcanvas/supersplat/releases/tag/v3.…
5 likes · 2 reposts · 198 views
SteadySplat works so well that it should be the new standard...
If you want quick integration of SteadySplat rendering, you can try this draft playcanvas PR.
engine#9819
If you just need a quick web demo, try our slop viewer (change the renderer under settings):
splatview.github.io
35 likes · 3 reposts · 1,203 views
Editor 2.35: the projects page is now a standalone home, and an agent can manage your projects over MCP
Editor 2.35 is out, and most of it is the projects page. playcanvas.com is now the Project Dashboard, a standalone page instead of an overlay on top of the editor. It doesn't load the engine or the editor any more (the page script went from 3.5 MB to 0.55 MB).
Most of what you used to do on the playcanvas.com projects page has been ported into it:
- Search with filters (name:, owner:, desc:, is:starred, is:private and friends), tabs for All, Mine, Shared with me, Private and Starred, card and list views, and / to jump to search.
- A ⋮ menu on every project: Open editor, Play, Project settings, Copy link, Watch, Fork, Export, Transfer ownership, Delete project.
- Project settings, Dev log and Team panels, including writing, editing and deleting dev log posts in Markdown.
- Creating and deleting organizations.
New project also offers Empty Project (nothing in it) next to Blank Project (skybox, cube and plane).
The other half is MCP. There's an MCP server button on the dashboard, so an agent can connect before any project is open. The MCP server gains project tools (list, get, create, update and open), and the connection survives the tab moving into a project. In the video that's a real Claude Code session listing projects, creating and renaming one, opening it and building a ring of cubes in it.
A few things worth knowing:
- The project tools need a release of the Editor MCP server that includes them.
- The old in-editor projects overlay is gone, so the viewport Home button now opens the dashboard tab.
- Dev log comments aren't in this release.
Write-up: blog.playcanvas.com
Docs: developer.playcanvas.com
MCP server: playcanvas/editor-mcp-server
Release notes: github.com/playcanvas/editor/releases/tag/v2.35.0
The demos at the start of the video are After the Flood, SWOOOP and Seemore (made with Arm), all by PlayCanvas.
Happy to answer questions here, and if something on the new page doesn't behave the way the post says, I'd like to hear about it.
12 points · 2 comments
PlayCanvas now has a dynamic sky: day/night cycle, volumetric clouds and lighting that follows the sky (WebGPU + WebGL2)
We just added DynamicSkyEffect to the PlayCanvas engine - a camera frame effect that takes over the sky of a camera and renders a full day and night cycle. The video is the new example: a small tropical island, with the time of day animated.
What it does
- Atmosphere - an analytic daylight model, balanced against the sun light, so the sky and the sunlit ground end up at a similar brightness and a single exposure works for both. One sunIntensity sets the brightness of the whole day.
- Night - a twilight glow, stars and the moon, with the moonlight taking over from the sun.
- Clouds - either a cheap flat layer, or volumetric clouds ray marched through 3D noise and drifting with the wind. The volumetric ones render to their own buffer (at reduced resolution by default) and use blue noise jitter with a small blur, so they stay clean without TAA.
- Lighting - the effect generates the environment lighting of the scene from its own sky, and regenerates it as the sun moves, the settings change, or the clouds drift. For an animated time of day it can blend between updates, so reflections on glossy surfaces (like the water) change smoothly instead of stepping.
- Sun light - it keeps a directional light in sync with the sun: direction, color and intensity, dimmed by the clouds.
Usage is a few lines:
const sky = new DynamicSkyEffect(device);
sky.light = sun.light;
sky.clouds = true;
sky.cloudTechnique = CLOUDTECHNIQUE_VOLUMETRIC;
cameraFrame.addEffect(sky);
// set the sun as your time of day changes
sky.elevation = 35;
sky.azimuth = 120;
It runs on both WebGPU and WebGL2, and it's open source like the rest of the engine.
- PR with the details: engine#9765
- Example: engine-9bay4vgd4-playcanvas.vercel.app
Happy to answer questions about how it works, and feedback is very welcome.
12 points
New in PlayCanvas: a dynamic sky ☀️☁️🌙
Day & night cycle, volumetric clouds drifting with the wind, stars, moon, and scene lighting that follows the sky, all in one CameraFrame effect.
Runs on WebGPU and WebGL2.
engine#9765 t.co
22 likes · 4 reposts · 973 views
Mentions
Gaussian splats in Blender: PlayCanvas open-sourced a SuperSplat extension. Paste a SuperSplat scene link to import it into Blender 5.3, or publish your own splat back. MIT, out today. playcanvas/supersplat-blender-extension More daily finds: studios.greatcreations.art
Gaussian Splat Viewers on Desktop: PLY, SOG and SPZ > Originally published by Alicia Lu on 5 November 2026 at Digital Garden. Alicia is a 3D technical artist, TA and independent developer. Codex assisted with this study. I used one 4,096-splat synthetic garden to check three ways to view Gaussian splats locally in Chrome. SuperSplat's generated HTML and antimatter15/splat both rendered the garden. A pinned PlayCanvas Model Viewer debug build rendered original PLY, compressed PLY and bundled SOG. The same viewer did not load SPZ v3 or v4 through its local file input. Its release build hit a worker error before displaying the three supported files. Three desktop paths | Viewer path | Local input actually tried | Desktop result | | --- | --- | --- | | SuperSplat Viewer standalone | SOG embedded by splat-transform 3.10.3 | Visible garden in a 960 × 720 canvas | | antimatter15/splat at ba182b51b7c2 | Original PLY by absolute same-origin URL | Visible garden and a WebGL instanced draw with 4,096 instances | | PlayCanvas Model Viewer 5.10.0, debug WebGL2 | PLY, compressed PLY and bundled SOG | All three rendered and each decoded resource held 4,096 splats | | PlayCanvas Model Viewer 5.10.0, debug WebGL2 | SPZ v3 and SPZ v4 | Both left the load screen visible with no decoded splat resource | !SuperSplat Viewer displaying the garden from the generated HTML with an embedded SOG payload !PlayCanvas Model Viewer debug build rendering the bundled SOG with its scene panel visible The screenshots use the viewers' own camera and UI. I checked file loading and actual drawing. The format comparison uses one renderer and matched cameras for its separate image-error and startup measurements. Replaying local files For SuperSplat Viewer, this command generates a standalone HTML page that embeds the SOG data. My generated file was 3,892,390 bytes including the viewer. npx splat-transform -g cpu garden.ply garden.html For antimatter15/splat, serve the upstream HTML and JavaScript from a static server and set the url query parameter to an absolute same-origin PLY URL. A relative value resolves against the viewer's default asset host. My initial relative-URL probe attempted to reach that host, which the harness blocked. The final replay issued only local GET requests. The PlayCanvas test used the open-source Model Viewer at commit 34df5967df32 with PlayCanvas Engine 2.19.7. I built the release and debug targets from the same source and lockfile. The release build hit a ReferenceError in its blob worker on WebGL2 and WebGPU. The error also appeared after the panel reported 4,096 primitives for PLY. The rendered garden was absent, so those runs did not pass. The upstream debug build ran the three supported formats on WebGL2. Its compressed PLY and SOG scene panels showed zero primitives even when the garden was visibly rendered. I checked the decoded resource count for those rows. This describes the pinned local builds. The hosted viewer and the engine's separate SPZ parser have their own paths. Model Viewer source, Model Viewer formats, PlayCanvas Engine SPZ parser. What the desktop check covers The successful local replays required no login and made only local GET requests in the isolated test. The network evidence covers these specific self-hosted paths, with any nonlocal traffic blocked by the harness. It says nothing about upload and account behavior on third-party hosted services. The rendered screenshots and source file receipts are included. Physical iPhone and Quest 3 operation, immersive modes and hosted service policies remain separate tests. SuperSplat Viewer, antimatter15/splat. Alicia is a 3D technical artist, TA and independent developer. Codex assisted with the test harness, evidence checks and editing. Related studies - Five encodings of one splat garden - Five Three.js splat renderer paths Data and reproduction - viewers.json - playcanvas-viewer-debug-resource.json - splat-viewers-desktop-reproduction.zip
Major SuperSplat release: follow creators, new home page and search, and enhanced XR Hi r/GaussianSplatting! We've just shipped a massive SuperSplat update, and this one is mostly about superspl.at itself rather than the editor. Follow creators You can now follow creators from their profile, from one of their scenes or from the profile card that pops up when you hover over a name in the comments. Their new splats show up in a Following tab on the home page, and your follower count shows on your profile. Notifications There's a notification bell in the top bar for comments, likes and new followers on your splats. The old emails were noisy, so comments are now bundled into one email, and likes and followers go into a daily summary. You can choose what you get in your notification settings. New home page and search The home page now has a Spotlight row (walkable worlds, free downloads, best of the week, all-time greats) above Trending, Latest and Following tabs. There's also a dedicated search page with Walkable and Downloadable filters, a time period from the past day to all time, and sorting by views, likes, date or size. XR - Two-handed manipulation: squeeze both grips (or make fists with hand tracking) to drag, rotate and scale the whole scene, anywhere from 0.25x to 4x. - Much faster on Quest: up to 1M splats, fixed foveation and a 72 Hz target. A large streamed scene on a Quest 3 went from 9.7 fps to 30.7 fps, or 40.3 fps with Quality set to Performance. - AR hides the skybox, so the scene sits in your passthrough view. - Sessions start facing the same way as the camera. - Post effects and tone mapping now carry into XR. - In XR, detail level is picked by distance only, so looking over your shoulder doesn't reveal low-detail splats. - Apple Vision Pro runs XR on WebGPU in Safari. Heads-up for Quest users: SuperSplat renders with WebGPU by default, but XR on Quest currently needs WebGL. The first time you tap VR, the viewer offers to reload with WebGL. Press OK, then tap VR again. Other bits - Splat counts on every scene page - A timeline in SuperSplat Studio (press T) - Uploads that take longer than 20 minutes no longer fail, .spz and XGRIDS LCC2 uploads are supported, and scenes over 40M splats get LODs automatically - SplatTransform has a new --camera-track option that renders a camera animation from a SuperSplat project to image frames, with depth of field and motion blur (guide) Everything is open source under MIT: SuperSplat Editor, SuperSplat Viewer, SplatTransform and the PlayCanvas Engine. Full write-up: blog.playcanvas.com Join the SuperSplat community today on Discord: discord.com We'd love feedback, especially from anyone trying the XR mode on a headset. And who should everyone be following? Drop your favorite profile below. 👇
I had no idea SOG was being used this way, so cool! I'm busy working on V3 if there's anything you think we should include. splat-transform#362
SOG v3 spec in progress: 4 bands of SH, decimation alpha compensation, and glTF-style extras Hey everyone, I’m busy putting together the proposal for SOG v3 (PlayCanvas' compressed format for 3D Gaussian Splatting), and I'd like to get community feedback and catch any potential edge cases. The current proposal includes: - Tighter Data Packing: Further reducing file sizes and streaming overhead for web runtime delivery. - Support for up to 4 Bands of SH: Catering to high-fidelity captures requiring richer view-dependent lighting and specular detail. - Support for Alpha > 1: Primarily targeted at post-decimation compensation—allowing fewer splats to accurately represent dense volumes without visual thinning. - Per-Gaussian Custom / Blind Data: Adding support for arbitrary user attributes (semantic segmentation masks, custom IDs, interaction tags, etc.). - meta.json Extras Field: Adopting a glTF-style extras object to allow standard and custom metadata extensions without breaking parser compatibility. Please check the full proposal on GitHub: splat-transform#362 Thanks!
PlayCanvas brings WebMCP to 3D editing. SuperSplat 3.7 introduces 24 WebMCP tools, allowing AI agents to inspect, edit, and export 3D scenes directly in the browser. Changes share the editor’s undo history. Learn more from @playcanvas: github.com/playcanvas/supersplat/releases/tag/v3.…
SteadySplat works so well that it should be the new standard... If you want quick integration of SteadySplat rendering, you can try this draft playcanvas PR. engine#9819 If you just need a quick web demo, try our slop viewer (change the renderer under settings): splatview.github.io
Editor 2.35: the projects page is now a standalone home, and an agent can manage your projects over MCP Editor 2.35 is out, and most of it is the projects page. playcanvas.com is now the Project Dashboard, a standalone page instead of an overlay on top of the editor. It doesn't load the engine or the editor any more (the page script went from 3.5 MB to 0.55 MB). Most of what you used to do on the playcanvas.com projects page has been ported into it: - Search with filters (name:, owner:, desc:, is:starred, is:private and friends), tabs for All, Mine, Shared with me, Private and Starred, card and list views, and / to jump to search. - A ⋮ menu on every project: Open editor, Play, Project settings, Copy link, Watch, Fork, Export, Transfer ownership, Delete project. - Project settings, Dev log and Team panels, including writing, editing and deleting dev log posts in Markdown. - Creating and deleting organizations. New project also offers Empty Project (nothing in it) next to Blank Project (skybox, cube and plane). The other half is MCP. There's an MCP server button on the dashboard, so an agent can connect before any project is open. The MCP server gains project tools (list, get, create, update and open), and the connection survives the tab moving into a project. In the video that's a real Claude Code session listing projects, creating and renaming one, opening it and building a ring of cubes in it. A few things worth knowing: - The project tools need a release of the Editor MCP server that includes them. - The old in-editor projects overlay is gone, so the viewport Home button now opens the dashboard tab. - Dev log comments aren't in this release. Write-up: blog.playcanvas.com Docs: developer.playcanvas.com MCP server: playcanvas/editor-mcp-server Release notes: github.com/playcanvas/editor/releases/tag/v2.35.0 The demos at the start of the video are After the Flood, SWOOOP and Seemore (made with Arm), all by PlayCanvas. Happy to answer questions here, and if something on the new page doesn't behave the way the post says, I'd like to hear about it.
PlayCanvas now has a dynamic sky: day/night cycle, volumetric clouds and lighting that follows the sky (WebGPU + WebGL2) We just added DynamicSkyEffect to the PlayCanvas engine - a camera frame effect that takes over the sky of a camera and renders a full day and night cycle. The video is the new example: a small tropical island, with the time of day animated. What it does - Atmosphere - an analytic daylight model, balanced against the sun light, so the sky and the sunlit ground end up at a similar brightness and a single exposure works for both. One sunIntensity sets the brightness of the whole day. - Night - a twilight glow, stars and the moon, with the moonlight taking over from the sun. - Clouds - either a cheap flat layer, or volumetric clouds ray marched through 3D noise and drifting with the wind. The volumetric ones render to their own buffer (at reduced resolution by default) and use blue noise jitter with a small blur, so they stay clean without TAA. - Lighting - the effect generates the environment lighting of the scene from its own sky, and regenerates it as the sun moves, the settings change, or the clouds drift. For an animated time of day it can blend between updates, so reflections on glossy surfaces (like the water) change smoothly instead of stepping. - Sun light - it keeps a directional light in sync with the sun: direction, color and intensity, dimmed by the clouds. Usage is a few lines: const sky = new DynamicSkyEffect(device); sky.light = sun.light; sky.clouds = true; sky.cloudTechnique = CLOUDTECHNIQUE_VOLUMETRIC; cameraFrame.addEffect(sky); // set the sun as your time of day changes sky.elevation = 35; sky.azimuth = 120; It runs on both WebGPU and WebGL2, and it's open source like the rest of the engine. - PR with the details: engine#9765 - Example: engine-9bay4vgd4-playcanvas.vercel.app Happy to answer questions about how it works, and feedback is very welcome.
New in PlayCanvas: a dynamic sky ☀️☁️🌙 Day & night cycle, volumetric clouds drifting with the wind, stars, moon, and scene lighting that follows the sky, all in one CameraFrame effect. Runs on WebGPU and WebGL2. engine#9765 t.co