Stand: 2026-04-11
Three.js soll Gaussian-Splats in der Shared 3D Scene rendern.
Native Render funktioniert. Three.js laedt Daten und bekommt den Layer in die Scene, aber der Splat ist aktuell nicht korrekt bzw. teilweise komplett unsichtbar.
- Dev-Server nicht selbst neu starten.
- Der laufende Dev-Server wird ueber
C:\Users\admin\Desktop\Spalts-DevServer.batgestartet. - AI-Bridge laeuft auf
http://localhost:5173. - Fuer Debugging wurden
reloadApp,captureFrame,getStats,getTimelineStateundapi/logsbenutzt.
- Timeline/Layer kommen korrekt an.
- Der Splat-Clip ist sichtbar und
useNativeRenderer: false. - Native Splat-Rendering funktioniert weiterhin.
- Three.js-Renderpfad wird aufgerufen.
- Shared-scene Camera-Clip wird angewendet.
- Das Three.js-Ergebnis wird in den WebGPU-Compositor importiert.
- Ein gecapturter Preview-Frame war komplett leer/schwarz.
- Live-Logs zeigten trotzdem korrekt geladene Splat-Geometrie:
- Datei:
bonsai-7k.splat totalSplats: 1157141renderedSplats: 115715stride: 10
- Datei:
- Camera im Probe-Log war spaeter plausibel:
cameraPosition ~ [0, 0, 1.6417]cameraDirection ~ [0, 0, -1]
- Projektion war nicht mehr rein subpixel:
projectedSigmaStats.avgPx ~ 1.87projectedSigmaStats.maxPx ~ 13.36
- Trotzdem blieb
alphaProbeim Render-Log bei0.
C:\Users\admin\Documents\masterselects-spalts\src\engine\three\ThreeSceneRenderer.tsC:\Users\admin\Documents\masterselects-spalts\src\engine\render\RenderDispatcher.tsC:\Users\admin\Documents\masterselects-spalts\src\engine\gaussian\core\SplatCameraUtils.tsC:\Users\admin\Documents\masterselects-spalts\src\engine\gaussian\shaders\gaussianSplat.wgslC:\Users\admin\Documents\masterselects-spalts\src\engine\gaussian\loaders\SplatLoader.tsC:\Users\admin\Documents\masterselects-spalts\src\engine\gaussian\loaders\PlyLoader.ts
- Der fruehere
gaussian-splat-renderer-for-lam-Pfad war kaputt und fuer normale Splats unzuverlaessig. - Er wurde durch einen internen Three.js-Pfad ersetzt.
- Das Three.js-Canvas wurde ueber eine 2D-Bridge in den WebGPU-Compositor uebernommen.
- Damit war die Shared Scene grundsaetzlich im Preview sichtbar.
- Shared-scene Camera-Clips benutzen jetzt eine kleinere Mindestdistanz.
- Ziel war, dass der Splat nicht zu weit weg sitzt.
- Es gab einen stabilen Punktwolken-Fallback.
- Das war sichtbar, aber kein echter Splat-Look.
- Danach wurde ein eigener Three.js-Splat-Shader mit instanced quads gebaut.
- Der Shader benutzte:
instanceCenterinstanceAxisXinstanceAxisYinstanceAxisZ- Gaussian-Falloff im Fragment-Shader
- Ergebnis war noch nicht stabil bzw. teilweise leer.
- Render-Probe eingebaut:
- NDC center
- camera position/direction
- alphaProbe via
readPixels - projected sigma stats
- Das hat gezeigt:
- Daten sind da
- Camera ist da
- Geometrie wird vorbereitet
- Sichtbarkeit scheitert wahrscheinlich in der eigentlichen Rasterisierung / Conic-Mathe
THREE_SHARED_SCENE_SPLAT_SCALE_BOOST = 6- Damit wurden die projizierten Splats groesser.
- Trotzdem war der Capture weiter leer.
- Der Three.js-Shader wurde spaeter naeher an den nativen WGSL-Ansatz gebracht:
- 2D covariance
- conic inversion
- radius aus Eigenwerten
- Auch dieser Stand war noch nicht der Durchbruch.
Der Fehler sitzt sehr wahrscheinlich nicht mehr in:
- Datei-Import
- Layer-Sync
- Preview-Compositing
- Camera-Clip-Auswahl
Der Fehler sitzt wahrscheinlich in einem dieser Punkte:
- falsche Interpretation der Splat-Achsen / Quaternion-Konvention
- falsche Screen-Space-Projektion im Three-Shader
- falsches Clip/NDC-Verhalten in der Vertex-Ausgabe
- Alpha bleibt effektiv 0 oder wird komplett verworfen
- Rasterisierung passiert, aber nicht an der erwarteten Position / Groesse
- In
ThreeSceneRenderer.tsden Fragment-Shader testweise auf harte, sichtbare Ellipsen ohne Gaussian stellen. - Testweise
gl_FragColor = vec4(1,0,0,1)fuer ein paar Splats erzwingen, um Rasterisierung sicher zu beweisen. - Min/Max/Avg von
instanceOpacityund Achsenlaengen direkt nach dem Laden loggen. - Testweise
depthTest = falsefuer den Splat-Materialpfad setzen. - Testweise nur sehr wenige Splats rendern, z. B. die ersten
128, damit gezielter debuggt werden kann. - Wenn moeglich alten funktionierenden Three.js-Splat-Stand / Commit / Branch wiederfinden und gegen
ThreeSceneRenderer.tsdiffen.
Three.js splat geometry preparedwar ein guter Marker.Three.js splat render probewar ebenfalls hilfreich.- Wenn dort
projectedSigmaStatsgroesser als deutlich unter1pxist und der Capture trotzdem leer bleibt, ist der Fehler eher Shader/Raster statt Camera-Distanz.
c935db85-Fix Three.js shared scene import path
Die Baustelle ist inzwischen eng eingegrenzt: Three.js Shared Scene, Layer und Camera sind grundsaetzlich da. Das offene Problem ist das korrekte Screen-Space-Splat-Rasterizing im Three.js-Pfad.
Stand: 2026-04-12
Ein neuer Timeline-Clip splat-effector soll Three.js-Splats live zur Laufzeit beeinflussen.
Native Gaussian-Splats bleiben unberuehrt.
- Neuer Media-/Clip-Typ
splat-effector - Eigener Property-Tab
Effector - Effector-Clips sind nicht rendernd und wirken nur als Scene-Controller
- Aktive Effector-Clips werden im
RenderDispatcherdirekt aus der Timeline gesammelt - Der Three.js-Splat-Shader bekommt pro Frame bis zu
8aktive Effectors als Uniforms - Erste Modi:
repelattractswirlnoise
Keine persistente Physik-Simulation. Der Effekt ist prozedural und deterministisch aus:
- Clip-Laufzeit
- Clip-Transform
- Effector-Settings
Damit bleibt Scrubbing stabil und reproduzierbar.
C:\Users\admin\Documents\masterselects-spalts\src\types\splatEffector.tsC:\Users\admin\Documents\masterselects-spalts\src\stores\timeline\splatEffectorClipSlice.tsC:\Users\admin\Documents\masterselects-spalts\src\components\panels\properties\SplatEffectorTab.tsxC:\Users\admin\Documents\masterselects-spalts\src\engine\render\RenderDispatcher.tsC:\Users\admin\Documents\masterselects-spalts\src\engine\three\ThreeSceneRenderer.ts
- Effectors wirken aktuell global auf alle Three.js-Splats
- Noch kein Targeting auf einzelne Splat-Clips / Gruppen
- Radius ist aktuell kugelfoermig ueber
max(scale.x, scale.y, scale.z)approximiert - Sorting der Splats bleibt auf dem vorhandenen Approx-Pfad und kennt die live deformierte Position nicht exakt
npm run -s buildlaeuft grün- Bekannte Projektwarnungen (
mp4box, chunk-size) bleiben unveraendert