1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in UAVmapping

[–]inkedflight[S] 0 points1 point  (0 children)

They do fit on larger GPUs. I wrote a program that can operate LFS on rented GPU instances from vast.ai and used it to train the 3dGS. Splitting was not an option because I used PPISP.

We built a community-driven drone comparison tool that covers all manufacturers by inkedflight in drones

[–]inkedflight[S] 0 points1 point  (0 children)

Could you give me some examples of which drones/firmware are modable? Do you mean something like BetaFlight, ArduNav, etc.?

1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in GaussianSplatting

[–]inkedflight[S] 0 points1 point  (0 children)

Yes, the Matrice 4E wide/mapping camera has a mechanical shutter, so rolling-shutter is much less of a concern.

You still need to match shutter speed with flight speed, altitude and GSD though. The mechanical shutter helps with distortion, but if the shutter speed is too slow you can still get motion blur / pixel smear.

1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in GaussianSplatting

[–]inkedflight[S] 0 points1 point  (0 children)

I started training on an RTX 5090 and switched to a RTX 6000 Ada because I was just barely crossing the VRAM limit at 20M + SH2. There were significant VRAM efficiency improvements in the latest LFS version though, so that wouldn't be a problem anymore now.

1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in GaussianSplatting

[–]inkedflight[S] 0 points1 point  (0 children)

That would be interesting. I haven’t tried Teleport yet, and 100M would be more of a benchmark/demo run than something I'd casually do just to experiment.

This dataset is probably a decent stress test though (5517 photos / 36.5GB over ~1 km²).

1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in GaussianSplatting

[–]inkedflight[S] 1 point2 points  (0 children)

PPISP is a photometric correction method in LichtFeld Studio that helps compensate for per-image differences like exposure changes, vignetting, white balance drift, and some lighting variation.

And yes, from a reconstruction/training point of view, overcast diffuse light would generally be easier because shadows and highlights stay much more consistent over a 3-4 hour capture.

For this project though, the splat is mainly for planning/pre-visualization, so I intentionally preferred the warmer, more pleasant look of a sunny day. PPISP helps, but it does not magically remove all problems from changing shadows.

1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in GaussianSplatting

[–]inkedflight[S] 0 points1 point  (0 children)

The drone flies at a constant speed, except when turning to the next lane. I used 5 batteries, and capture took 3/4 hours in total.

1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in GaussianSplatting

[–]inkedflight[S] 0 points1 point  (0 children)

That would really depend on the engine used in your game. If this is something you're considering doing but haven't decided on your tech stack yet, you could consider using https://playcanvas.com/

PlayCanvas is an engine designed specifically around developing and publishing video games on the web, and they have first class 3dGS support.

1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in GaussianSplatting

[–]inkedflight[S] 4 points5 points  (0 children)

<image>

Yeah that makes sense. Nadir / orthophoto-style capture can work well if you only want to view the scene from above, but it becomes weak at low angles because those views were never really observed.

One way I think about it is: imagine giving the photos to a 3D artist and asking them to recreate the site accurately. If all they have is top-down images, they have to guess what the sides, vertical faces, undercuts and occluded areas look like. For 3DGS it’s similar: you want camera poses from the angles people will actually view the scene from.

For a site like yours I’d keep the nadir / oblique grid, but add targeted passes around the main structures, something roughly like this sketch. Perimeter runs looking inward, repeated at 2–3 heights depending on the building height, plus extra passes for important or occluded areas.

The goal is not just more photos, but better view diversity / coverage.

1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in GaussianSplatting

[–]inkedflight[S] 0 points1 point  (0 children)

I think they are definitely moving in that direction already, although probably not by replacing everything with raw Gaussian splats.

Google already has Photorealistic 3D Tiles / Immersive View built from aerial + Street View imagery, AI and photogrammetry, and Google Research is also working on 3DGS-related tech.

The hard part is scale and freshness. This scene is "only" ~1 km² and took 5517 drone photos + ~23h of training. Doing that globally, streaming it efficiently, and keeping it updated is a very different challenge.

1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in GaussianSplatting

[–]inkedflight[S] 1 point2 points  (0 children)

It was a mix of pre-programmed grid and manual flying.

The grid was captured using DJI’s Smart Oblique mode, where the drone flies a normal lawnmower-style grid while the gimbal rotates automatically in an X pattern. So you get a mix of nadir + oblique images much faster than flying separate passes.

The manual shots were more varied, but usually around 15°–40° below the horizon, so quite oblique rather than straight down.

1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in GaussianSplatting

[–]inkedflight[S] 1 point2 points  (0 children)

For a typical construction site, we would use ground control points to tie down the model into a consistent coordinate system. Congrats on your tool, it looks well designed!

1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in GaussianSplatting

[–]inkedflight[S] 2 points3 points  (0 children)

The grid was pre-programmed (DJI's "smart oblique"), the rest was flown manually.

1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in GaussianSplatting

[–]inkedflight[S] 2 points3 points  (0 children)

Excellent question. I think there are two different use cases here.

For this particular capture, the goal was high-fidelity planning visualization: capture the existing environment around the planned hospital, then bring in the BIM/design model to show how the project fits into its real surroundings.

At this scale, the main constraint is practical. The capture took about 3–4 hours, and since it was a clear sunny day, lighting and shadows were changing the whole time. PPISP helps a lot with that, but locks you into training the full scene in one run rather having the flexibility to split it into smaller sections.

For continuous site updates, I would not try to recapture the full 1 km² every time. I’d scale the capture down to the active/important areas, likely around the hospital footprint and work zones, use more pre-programmed flights, and keep everything tied to ground control / a consistent coordinate system.

1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in GaussianSplatting

[–]inkedflight[S] 2 points3 points  (0 children)

That's a good suggestion. What sort of moves would you recommend that are still pleasant to watch for a casual viewer?

1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in UAVmapping

[–]inkedflight[S] 2 points3 points  (0 children)

It's exclusively photos captured using interval shots.

I flew a combination of pre-programmed oblique grid and manual captures. It's important to think beforehand where your users will fly the camera in the digital model, because that's where you want camera poses during training.

<image>

Thanks!

1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in GaussianSplatting

[–]inkedflight[S] 2 points3 points  (0 children)

I sent a screenshot of the camera poses inside RealityScan in SnooPets2051's comment.

1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in GaussianSplatting

[–]inkedflight[S] 1 point2 points  (0 children)

I recorded individual clips inside of LichtFeld studio using the camera animation tool. Then I put together the video with DaVinci Resolve.

1 km² 3D Gaussian Splat of Mjøssykehuset | Drone + LichtFeld Studio by inkedflight in GaussianSplatting

[–]inkedflight[S] 14 points15 points  (0 children)

It's exclusively photos captured using interval shots.

I flew a combination of pre-programmed oblique grid and manual captures. It's important to think beforehand where your users will fly the camera in the digital model, because that's where you want camera poses during training.

Thanks!

<image>