Back @fatamorganafestival 2025!
I was able to present for the first time, on a large cliff, a contemplative art installation that I have been working on for several months.
My work focuses on laser lenses that generate infinite diffractions thanks to patterns and colors that evolve in a progressive and random manner.
I will soon have the opportunity to give you more details about this project, for which I am currently unable to choose a name ⚡
🎥 @h.nouneyes
#mapping #lasershow #lightart #vjing
How to Create a Video Game with Gaussian Splatting
I recently bought an Insta360 camera and decided to recreate the Père Lachaise Cemetery in 3D. Here's the workflow I used:
-Export the 360 footage frames at 5fps.
-Use a script to convert the footage into planar images (panorama to planar projection _ GitHub Maxviper) -Align the cameras in Reality Capture to save time. -Import everything into Postshot to generate the Gaussians (pay attention to the splat count!). -Import the Gaussian data into Unreal Engine (I’m using XD3VGS). -Add visual effects and lighting. -Refine your design
#GameDevelopment #GaussianSplatting #RealityCapture #Photogrammetry #360Camera @insta360
Port-Blanc, Penvénan, the Rocher du Voleur.
A coastal cliff reconstructed with Gaussian Splatting.
The algorithm keeps what the camera walked close to: rock, path, grass. The sea dissolves. Too much movement, too much distance.
Looking toward the water from the edge of the scene, the sea becomes particles.
Walking through the reconstruction reveals its limits.
1 — Traveling through the reconstructed scene
2 — Gaussian Splatting training | PostShot
3 — 360° capture extract | Insta360 X4
4 — Scene capture — coastal rocks, Rocher du Voleur
5 — Scene capture — rocks & sea
6 — Radiance field frontier — lateral view
7 — Radiance field — top view, abstract
9 — Abstract capture — sea surface
10 — Radiance field — low angle, rock & horizon
11 — Abstract capture — from “underwater”
Training
Method: Gaussian Splatting (PostShot)
Images: 1,020
Aligned: 785 (RealityCapture)
Splats: 1.6M
Capture duration: 4:47 min
360 POV frames: 277
Location: Port-Blanc, Penvénan, Côtes-d’Armor, Bretagne
Interaction
#gaussiansplatting #3dgs #unrealengine #touchdesigner #gamedev @unrealengine@touchdesigner@epicgames
Finally spring! Walking the coastal path above Port-Blanc, Insta360 X4 in hand, a 360° capture reconstructed into a navigable 3D scene using Gaussian Splatting, rendered in real time inside a game engine.
As the avatar moves through the scene, it reveals the structure of the reconstruction, splats as space pixels: the raw material of the archive.
The horizon cannot be captured. Too far, the distance becomes noise. Gaussian Splatting keeps what the camera walked close to: rock, path, grass. The sea dissolves.
Training method: Gaussian Splatting (PostShot)
Images: 1,020
Aligned: 785 (RealityCapture)
Splats: 1.6M
Capture duration: 4:47 min
360 POV frames: 277
Location: Port-Blanc, Penvénan, Côtes-d'Armor, Bretagne
Interaction
Player: Unreal Engine
Particle forces: TouchDesigner: MIDI > OSC
#gamedev #unrealengine #gaussiansplatting #3dgs #touchdesigner @unrealengine@touchdesigner@epicgames
Two ways of inhabiting this mountain reconstructed space. Switching between third-person and first-person inside another Gaussian Splatting reproduction.
Part of an ongoing research on how navigation transforms our relationship to reconstructed spaces and memory.
Interaction
Player interaction: Unreal Engine — XV3DGS plugin
Particle system forces configurable via TouchDesigner — MIDI to OSC
Training
Method: Gaussian Splatting (PostShot)
Images: 745
Splats: 1.7M
Iterations: 148k
Camera: Insta360 X4
Projection: equirectangular
Capture duration: 1:33 min
Location: Orcières Merlette, Hautes-Alpes, French Alps
Music: Amon Tobin — Yasawas
#gaussiansplatting #3dgs #unrealengine #touchdesigner #gamedev @unrealengine@epicgames@touchdesigner
Ghost-like traces in the reconstructed scene. Skiers moving ahead on the trail create artifacts that reveal the limits of what the algorithm can reconstruct from a moving elements in the dataset.
Single-path capture on skis, camera swung left to right on a pole, a gesture to broaden the viewpoint. This pendular motion introduces lateral variation into the dataset, but also instability inherent to the device: motion blur, rapid angle changes, partial reconstruction of the surroundings.
1 — Training timelapse × 20 | Gaussian Splatting (PostShot) — 48k iterations
2 — Traveling through the reconstructed scene | SuperSplat Render
3 — Ghost artifacts — skiers ahead on the trail | viewpoint-dependent reconstruction
4 — Raw 360° capture extract | Insta360 X4, equirectangular, swing motion
5 — Distant valley — reconstruction instability | out of focus
6 — Radiance field frontier — lateral view
7 — Radiance field — top view, abstract capture
Training
Method: Gaussian Splatting (PostShot)
Images: 962
Splats: 1.6M
Iterations: 48k
Alignment: RealityCapture — 898 aligned images
Processing
Post-clean: none
Capture
Camera: Insta360 X4
Projection: equirectangular
Capture duration: 2:00 min
Location: Orcières Merlette, Hautes-Alpes, French Alps
#gaussiansplatting #3dgs #unrealengine #radiancefield #skiing #frenchalps #touchdesigner #volumetriccapture
As the avatar moves through the scene, it reveals the very structure of the archive: splats scatter at its passage, exposing the unstable and constructed nature of volumetric reconstruction, like a memory we struggle to hold onto.
Skiing through an open mountain landscape, camera swung left to right on a pole, the reconstruction captures only what a single moving path can see.
Training
Method: Gaussian Splatting (PostShot)
Images: 962
Splats: 1.6M
Iterations: 48k
Alignment: RealityCapture (898 aligned images)
Processing
Post-clean: none
Capture
Camera: Insta360 X4
Projection: equirectangular
Capture duration: 2:00 min
Location: Orcières Merlette, Hautes-Alpes, French Alps
Interaction
Player interaction: Unreal Engine
Particle system forces controlled via TouchDesigner: MIDI > OSC
Music: John Lemke — Vessel
#gamedev #unrealengine #gaussiansplatting #3dgs #touchdesigner @unrealengine@touchdesigner@epicgames
A real place reconstructed with particles using Gaussian Splatting.
Running destabilizes the landscape, while walking allows it to recombine.
A small interactive experiment to reflect on our relationship with environments.
The setup explores a simple idea: our gestures transform the environments we inhabit. Through interaction, it invites reflection on how we co-inhabit the world.
-
Interaction
Unreal Engine 5.3 TouchDesigner
Training
Method: Gaussian Splatting (PostShot)
Images: 483
Splats: 1.9M
Iterations: 35.1k
Alignment: RealityCapture (373 aligned images)
Processing
Post-clean: none
Capture
Camera: Insta360 X4
Projection: equirectangular
Capture duration: 1 min
Frame extraction: 1 fps
Location: M'Hamid El Ghizlane, Morocco — Gateway to the Sahara
#gamedev #unrealengine #gaussiansplatting #3dgs #touchdesigner @unrealengine@touchdesigner@epicgames
Out of frame.
Gaussian Splatting reconstructs a place from a calculated viewpoint. Outside the intended zone, another structure appears: a field of particles arranged to simulate depth and parallax.
What the algorithm fails to represent reveals how it works.
music: Ryuichi Sakamoto - "disintegration" (from "async")
#gaussiansplatting #3DGS #gamedev #unrealengine #touchdesigner @epicgames@unrealengine@touchdesigner
Drifting through a reconstructed Kasbah alley.
As the camera moves, the space deforms and begins to reveal its underlying structure.
Part of an ongoing research on navigable real-world reconstructions.
Music: Morning – Alva Noto & Ryuichi Sakamoto
#3dgs #gaussiansplatting
Kasbah Oulad Othmane — Drâa Valley | Morocco
For this render, the capture was limited to a single back-and-forth path within a narrow Kasbah alley.
This highlights reconstruction instabilities, revealing viewpoint-dependent artifacts, including an unintended self-reconstruction, where my head becomes embedded in the scene geometry depending on camera position.
1 — Traveling environment (Unreal Engine)
2 — Gaussian Splatting training (PostShot)
Images: 597 | Splats: 2.0M | Iterations: 60k | Images aligned: 572 (RealityCapture)
3 — PostShot capture
Post-clean: none
4 — Radiance field frontier
5 — Accidental autoportrait
(Raw dataset image)
6 — Abstract capture
Top view | Out of field of interest
7 — Capture
Insta360 X4 | Projection: equirectangular | Capture duration: 1:06 min | Outdoor / desert
8 — Abstract capture
Bottom view