# Triangle Splatting Support

**URL:** <https://forum.babylonjs.com/t/triangle-splatting-support/59154>\
**Category:** Feature requests\
**Created:** [June 26, 2025, 2:51pm UTC](https://forum.babylonjs.com/t/triangle-splatting-support/59154 "2025-06-26T14:51:12Z")\
**Posts on this page:** 10\
**Page:** 2

<div class="post-metadata">

**Author:** ![jamessimo](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/jamessimo/32/26847_2.png) [@jamessimo](https://forum.babylonjs.com/u/jamessimo)\
**Post date:** [October 7, 2025, 9:38am UTC](https://forum.babylonjs.com/t/triangle-splatting-support/59154/21 "2025-10-07T09:38:49Z")

</div>

I see the PR was merged but didn’t notice this in the release notes? Is SoG now in Babylon?

---

<div class="post-metadata">

**Author:** ![Cedric](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/cedric/32/2742_2.png) [@Cedric](https://forum.babylonjs.com/u/Cedric)\
**Post date:** [October 7, 2025, 9:43am UTC](https://forum.babylonjs.com/t/triangle-splatting-support/59154/22 "2025-10-07T09:43:00Z")

</div>

It’s part of 8.30.4 release : [Release 8.30.4 · BabylonJS/Babylon.js · GitHub](https://github.com/BabylonJS/Babylon.js/releases/tag/8.30.4)

---

<div class="post-metadata">

**Author:** ![Cedric](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/cedric/32/2742_2.png) [@Cedric](https://forum.babylonjs.com/u/Cedric)\
**Post date:** [October 9, 2025, 3:07pm UTC](https://forum.babylonjs.com/t/triangle-splatting-support/59154/23 "2025-10-09T15:07:02Z")

</div>

Triangle splatting needs a differentiable renderer. I’ve read some papers to help me understand what it is. I don’t think I fully understood it 🙂

> <https://github.com/BabylonJS/Babylon.js/issues/16671#issue-3091268468>
>
> \- \[\] Shadows
> \- \[\] Evaluate/test https://blog.playcanvas.com/playcanvas-adopts-…sogs-for-20x-3dgs-compression
> ~~\* ply python converter : https://gist.github.com/vincentwoo/4bf1998c114861ec63505bd0b76980d0~~
> \* Triangle Splatting for Real-Time Radiance Field Rendering https://trianglesplatting.github.io/
> This needs a differential renderer. Current available implementations depend on Cuda. I guess it's possible to port to ComputeShader but my knowledge is limited here. If I understand correctly, triangles are 'seeds' that help flooding the 2D surface. Some kind of SDF is generated and rendering can then be done as a 2D pass. I may have missed a few things along the way. I'm open to discussion.
> \* splat conversion tool : https://github.com/playcanvas/splat-transform 
> \- \[\] GS LOD https://forum.babylonjs.com/t/new-feature-niantic-spz-gaussian-splatting-and-spherical-harmonics/55124/24?u=cedric

---

<div class="post-metadata">

**Author:** ![Cedric](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/cedric/32/2742_2.png) [@Cedric](https://forum.babylonjs.com/u/Cedric)\
**Post date:** [October 9, 2025, 3:07pm UTC](https://forum.babylonjs.com/t/triangle-splatting-support/59154/24 "2025-10-09T15:07:10Z")

</div>



---

<div class="post-metadata">

**Author:** ![CrashMaster](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/crashmaster/32/23662_2.png) [@CrashMaster](https://forum.babylonjs.com/u/CrashMaster)\
**Post date:** [October 9, 2025, 3:52pm UTC](https://forum.babylonjs.com/t/triangle-splatting-support/59154/25 "2025-10-09T15:52:22Z")

</div>

Triangle splatting outputs a .ply file that can already be loaded inside BabylonJS (see [Triangle splatting v2 ply rendering mismatch - #2 by CrashMaster](https://forum.babylonjs.com/t/triangle-splatting-v2-ply-rendering-mismatch/60869/2)) so I don’t think anything needs to be added (even though backface culling must be disabled and disable lighting)

---

<div class="post-metadata">

**Author:** ![Cedric](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/cedric/32/2742_2.png) [@Cedric](https://forum.babylonjs.com/u/Cedric)\
**Post date:** [October 9, 2025, 4:08pm UTC](https://forum.babylonjs.com/t/triangle-splatting-support/59154/26 "2025-10-09T16:08:47Z")

</div>

I tried to tweak parameters but I don’t get the quality you achieve. I guess differential rendering might be more needed when density of triangle is low and it will help filling gaps.

EDIT: Fixed with specular at (0,0,0)

EDIT2: Nope, I’m missing something. I guess I need to change some more parameters.

EDIT3: Works with

```auto
const mat = new BABYLON.StandardMaterial("unlitVertexColorMat", scene);
mat.disableLighting = true;              
mat.emissiveColor = new BABYLON.Color3(1, 1, 1);
mat.diffuseColor = new BABYLON.Color3(1, 1, 1);
mat.backFaceCulling = false;
plyTriangularSplatmesh.material = mat;

```

---

<div class="post-metadata">

**Author:** ![CrashMaster](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/crashmaster/32/23662_2.png) [@CrashMaster](https://forum.babylonjs.com/u/CrashMaster)\
**Post date:** [October 10, 2025, 7:18am UTC](https://forum.babylonjs.com/t/triangle-splatting-support/59154/27 "2025-10-10T07:18:09Z")

</div>

Yeah I pushed a lot of buttons in the sandbox inspector, but what you wrote is in line with what I remember ^^

From what I understood from the paper, the output only contains semi-connected opaque triangles, so differentiable rendering would be needed only for displaying the triangle soup while in-training with the same sorting logic as regular GS 🤔

---

<div class="post-metadata">

**Author:** ![Cedric](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/cedric/32/2742_2.png) [@Cedric](https://forum.babylonjs.com/u/Cedric)\
**Post date:** [October 10, 2025, 7:22am UTC](https://forum.babylonjs.com/t/triangle-splatting-support/59154/28 "2025-10-10T07:22:19Z")

</div>

yes, that’s what I understood too. This made me curious about differentiable rendering. It’s being used in many areas from object reconstruction to lod computation.

---

<div class="post-metadata">

**Author:** ![yamaciller](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/yamaciller/32/21810_2.png) [@yamaciller](https://forum.babylonjs.com/u/yamaciller)\
**Post date:** [October 10, 2025, 8:56pm UTC](https://forum.babylonjs.com/t/triangle-splatting-support/59154/29 "2025-10-10T20:56:39Z")

</div>

Which tool are u using for training?

best. Werner

---

<div class="post-metadata">

**Author:** ![Cedric](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/cedric/32/2742_2.png) [@Cedric](https://forum.babylonjs.com/u/Cedric)\
**Post date:** [October 13, 2025, 8:01am UTC](https://forum.babylonjs.com/t/triangle-splatting-support/59154/30 "2025-10-13T08:01:53Z")

</div>

I think everything you need is here : [GitHub - trianglesplatting2/triangle-splatting2](https://github.com/trianglesplatting2/triangle-splatting2/tree/main)

[Previous page](https://forum.babylonjs.com/t/triangle-splatting-support/59154.md?page=1)
