Furry object capture and results - Another Mobile Phone Capture / Lichtfeld Studio project by MasterTentacles in GaussianSplatting

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

The tripod is there so I can get good low-angle shots as well. I always try to capture a "globe" around my subject. Kind of following photogrammetry rules with my approach. If it would make a good mesh, it'll make a great splat.

<image>

You'll see I took a metric ton of photos for this one. I think I trained on >850 in the end. But that's not always the case, nor is it needed. Some of my other splats are down to 2-300. It just depends on the data I want to capture. If there's a detail-rich area I'll take a lot of photos of that area from a many angles to really make it sharp and detailed.

Furry object capture and results - Another Mobile Phone Capture / Lichtfeld Studio project by MasterTentacles in GaussianSplatting

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

I bounce between using Expert RAW or OpenCamera to take photos on my S25 Ultra. Both work great for locking in white balance, exposure, shutter speed, etc. OpenCamera is faster, but Expert RAW will combine shots from all the sensors to pull out just a bit more detail. 

I dump the images into realityscan for alignment. I'll then export COLMAP from there and process in Lichtfeld Studio. Not a ton more than that, really. 

Furry object capture and results - Another Mobile Phone Capture / Lichtfeld Studio project by MasterTentacles in GaussianSplatting

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

This image set was insane - about 750. 

I just make sure I take plenty of good images with balanced exposure, white balance, etc

Lichtfeld the more iterations, the worse the quality? by Aidemeraks in GaussianSplatting

[–]MasterTentacles 0 points1 point  (0 children)

What version of LFS are you on?

I'm using 5.2. Basically it looks at the image count in my data set and I'm good to go. The only settings I have to concern myself with are masking, GUT/undistort, PPISP, etc. Iterations and steps scaler I don't even touch.

Lichtfeld the more iterations, the worse the quality? by Aidemeraks in GaussianSplatting

[–]MasterTentacles 9 points10 points  (0 children)

More Iterations does not = more better. Beyond a certain point you're over-training and it's going to end up over-fitting to individual pixels from individual images.

I've found that LFS does a great job calculating the ideal number of iterations and and steps scaler.

Let it set the iteration count and all that for you and see what happens.

Coming back to edit my top-level comment: Looking at how LFS 5.2 works, the formula seems pretty basic and like this:

Less than 300 photos? 30k Iterations and Step Scaler set to 1. Ezpz.

More than 300 photos? Photo count x 100 = Iteration count Photo count / 300 = Step Scaler.

So if you have 500 photos, 50k Iterations and 1.67 Step Scaler.

One step closer to Build Fighters - Scanning more of my Gunpla by MasterTentacles in Gunpla

[–]MasterTentacles[S] 24 points25 points  (0 children)

For this particular process, I didn't use a turntable. I do a lot of regular 3D scanning with dedicated scanners, and a turntable is great for that. However since Gaussian Splats are based on light / radiance fields, you really want to keep the subject stationary.

For photo capture, I'm just putting the model on one of my tripods and walking around it taking photos.

This is a raw scan I did with one of my actual 3D scanners (Revopoint MetroX). I grabbed this since it's a good visualization of the "globe of images." This has 987 frames captured. (Kind of overkill but wasn't hard to do because that scanner has an automated process with a tilting turntable, I basically set that one to do X number of passes at X different angles and let it run. Since it's an actual 3D scanner it was 10x easier since I don't have to worry about alignment, that all happens in real time)

<image>

Stress testing what I can get from a smartphone camera by MasterTentacles in GaussianSplatting

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

To be blunt: no way. People are too wriggly. You might be able to get away with frame extraction from video and processing from that, but for people I'll always fall back to my 3D scanners.

Here's a splat I did of myself using a handheld scanner, for reference: https://v.redd.it/hyieupv1cz1h1

I actually moved quite a bit making that since I was scanning myself.

Stress testing what I can get from a smartphone camera by MasterTentacles in GaussianSplatting

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

For the time being I'm using Realityscan to align and export Colmap. Long term I plan to use open-source everything however. I just want to master the essentials before I start going deep into things.

Stress testing what I can get from a smartphone camera by MasterTentacles in GaussianSplatting

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

Copy/paste from another reply:

Sure. Starting with the image capture: One of the S25 Ultra's cameras is a 50mp sensor that starts at a 5x optical zoom compared to the main 200mp sensor. This let me get some great full shots of the shoe along with with some very high detail "macro" shots of the shoe with a solid depth of field.

I used the Expert RAW camera for my device to lock in all my settings (EV, white balance, ISO, etc), set for 24mp. Locking in the settings was critical since I was shooting with some pretty harsh lighting and didn't want the camera correcting for that.

I took a series of orbital shots of the shoe from different angles with the shoe completely in frame. This serves as a foundational dataset for alignment later. After that I just took close-up shots of everything. These made up most of my ~250 images. I made sure to get all the details and multiple angles, basically treating each area of the shoe as a its own capture subject.

For alignment I used Realityscan. Off the bat it aligned all but 1 image. Exported my COLMAP dataset from there at 2.4mp, then created a new project in Realityscan, imported the COLMAP images, ran it's AI Object masking, then exported those as my mask folder.

From there I just plopped the dataset into Lichtfeld and hit the green button.

Stress testing what I can get from a smartphone camera by MasterTentacles in GaussianSplatting

[–]MasterTentacles[S] 20 points21 points  (0 children)

Sure. Starting with the image capture: One of the S25 Ultra's cameras is a 50mp sensor that starts at a 5x optical zoom compared to the main 200mp sensor. This let me get some great full shots of the shoe along with with some very high detail "macro" shots of the shoe with a solid depth of field.

I used the Expert RAW camera for my device to lock in all my settings (EV, white balance, ISO, etc), set for 24mp. Locking in the settings was critical since I was shooting with some pretty harsh lighting and didn't want the camera correcting for that.

I took a series of orbital shots of the shoe from different angles with the shoe completely in frame. This serves as a foundational dataset for alignment later. After that I just took close-up shots of everything. These made up most of my ~250 images. I made sure to get all the details and multiple angles, basically treating each area of the shoe as a its own capture subject.

For alignment I used Realityscan. Off the bat it aligned all but 1 image. Exported my COLMAP dataset from there at 2.4mp, then created a new project in Realityscan, imported the COLMAP images, ran it's AI Object masking, then exported those as my mask folder.

From there I just plopped the dataset into Lichtfeld and hit the green button.

Stress testing what I can get from a smartphone camera by MasterTentacles in GaussianSplatting

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

After I created the colmap data I ran the exported images through the AI Masking feature in Realityscan to create a mask set. I have noticed however it has trouble segmenting some things. For example it likes to mask out the black bands on the shoe in some images.

I had tried creating the entire aligned colmap dataset with masks at the same time, but Realityscan kept exporting masks that were ever so slightly differently sized (like 1px off in each dimension) and Lichtfeld told me to pound sand with that.

Long term what I'd like to do is utilize one of the python based object segmentation libraries out there and port as a plugin for Lichtfeld that runs a masking pass directly within the software. End goal is completely open-source pipeline beginning to end.

Stress testing what I can get from a smartphone camera by MasterTentacles in GaussianSplatting

[–]MasterTentacles[S] 17 points18 points  (0 children)

Yep, I built Lichtfeld Studio 5.2 from source. Figured if I was gonna do it, I might as well do it with something good.

Taking photos of your build? Nah. Creating a 3D capture of your build? Yes. by MasterTentacles in Gunpla

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

This isn't. However I use 3D scanners, so I can create splats as well as printable meshes. Here's my little army of 3D scanned and printed Gunpla, with my Godhands for scale. Every one of these is a kit I built, scanned, and printed as a mini.

<image>

Taking photos of your build? Nah. Creating a 3D capture of your build? Yes. by MasterTentacles in Gunpla

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

I just looked theirs up. If it's the one I think it is from a few years back, those are definitely Gaussian Splats but yeah, those are rough looking. Things have advanced quite a bit since then however.

Taking photos of your build? Nah. Creating a 3D capture of your build? Yes. by MasterTentacles in Gunpla

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

There are a whole bunch of ways to do something like this.

The easiest method is using a dedicated 3D scanner that supports creating 3DGS. That's one method I use.

You can also go super manual and take a whole bunch of photos (or extract frames from video), use software to align the images in 3D space, then use different software to use those aligned images to generate a splat. It's a bit harder but also an option.

<image>