Game assets, with AI...

Say, I want to convert a nice 1920's Bowman live-steam loco into my game. How could we do this? Well, first check if someone else did it and is willing to share the model. If not, I have to find my own workflow.

According to the web there are a lot of different routes, generating amazing models, so let's find a process with the least amount of effort and the perfect results...

In short

  • Most accurate: a full CAD model of the shell, with Claude (in Blender) generating the textures and decals. Perfect results, but about 8 + 8 hours per model.
  • Quick, for less important objects: TripoAI SmartMesh with 4 photos. About 5 minutes and ~18€ a month, good enough for assets further away.
  • Photogrammetry (Meshroom, RealityScan): a shiny toy locomotive is hard. A turntable only works when the background is masked out; after that the result is average and useful as an underlay. See 2a.
  • 3D scanners: expensive and still time consuming. Not convincing yet.

The goal

Generating multiple assets, considering 3 goals:

  1. Going close to reverse-engineering. I want to have an accurate model in CAD. But I'll not add screws, rivets etc. 'Only' the outside shell should be accurate, including textures.
  2. The asset should be able to be shown, like on the SketchFab platform. Preferably with animations and exploded views, so it might be used as a demonstration model.
  3. The asset should be usable within movies & games. Basically downgrading the SketchFab model further, changing 4K textures into 1K (mobile platform) or 2K (PC-like games).

The subject is an original Bowman live-steam locomotive I own. Unfortunately it's not working, it needs some soldering etc. Well, that's something for during retirement. The nice thing about this: I can measure everything, which will help a lot. For now it should take less effort, getting a 'virtual working' locomotive.

Basically 2 sources: one nice looking loco and my own (which is very handy for measuring).

Bowman 300 locomotive, nice looking reference
My own Bowman locomotive

Preparation

For good photos, good light conditions are necessary. So while trying different methods, the method for taking photos is also improving along the way. Here the different light box versions are shown.

LBv1: Light box version 1

First I needed some bright pictures, so let's take them outside. It's cloudy but still relatively bright.

Light box version 1

LBv2: Light box version 2

For all photogrammetry & 3D scanning options we need proper light conditions. Let's start building a light box.

The current issue is creating light diffusers: the backing paper is not working great, so currently all scans have been done without.

Light box version 2

Let's start generating 3D assets...

Although the main subject is the Bowman train, other models are used during this process too.

1. Simplified CAD model (no textures)

Just do it yourself: measure every part & detail and model it in CAD. Well, I was hoping this would not be necessary.

So let's start with a simplified CAD object and use this as input for some of the methods below.

Simplified CAD model of the locomotive

2. Photogrammetry: photos → 3D model

Let's try photogrammetry: take a bunch of photos from different angles and let the PC calculate the 3D model. This is proven technology, but it does not work so well with shiny objects. That's why I also built a hobby-grade light box, to reduce reflections.

2a. Meshroom

My first photos were not bright and Meshroom had problems recognizing the model. After 5 runs the picture is clearer, and the light was not even the main problem.

What went wrong: I put the locomotive on a rotating disc and kept the camera still. The light box walls also stand still, so Meshroom sees a static background that says 'the camera did not move' while the train says 'the camera moved'. Meshroom assumes a static scene, so it only managed to place 39 of 46 photos, scattered around.

What helped, step by step (number of photos where Meshroom could calculate the camera position):

RunSetupCameras placed
1Standard pipeline, 46 photos39 of 46 (scattered, torn model)
2Turntable pipeline: background masked out21 of 46
3+ feature extraction preset 'High'37 of 46
42 photos with a bad mask removed37 of 44
583 frames from a video of the turntable67 of 83
  • Mask the background. Meshroom has a turntable pipeline (photogrammetryObjectTurntable) that cuts out the train and the marker disc first. Check the masks, a bad mask is worse than no photo.
  • Masking on the CPU. The AI masking models did not run on my RTX 5060 (the bundled PyTorch has no kernels for RTX 50 cards: 'no kernel image is available'). Setting useGpu = False for the two masking nodes solves it; the rest of the pipeline still uses the GPU.
  • Use a video. Frames from a video of the turning disc give small steps between the images, so Meshroom can link them. A path without spaces helps too (the batch launcher splits arguments at a space).
  • Clean up in Blender (script). Find the plane of the disc, level the model, cut the disc off, remove floating fragments and reduce 840,000 faces to 200,000. The GLB went from 94 MB to 9 MB. The scale is arbitrary; set it from a measurement.

Result: the whole locomotive is there, the boiler bands, wheels, rods and the LMS lettering are recognizable. The cab roof is thin and ragged, the cab rear and the underside have holes, and the texture is soft. Average: good as an underlay or for a distant asset, not as the final model.

Meshroom result after clean-up in Blender
Three Meshroom runs side by side
Run 2, 3 and 5: more cameras placed gives a more complete model.
Meshroom masks: green is removed background
Masks: only the locomotive and the disc are kept. A few spots of the light box wall remain.
Photos taken on the turntable
Some of the photos taken on the turntable.

2b. RealityScan

The same photos are also used for RealityScan, which also has problems recognizing the model.

I took 5 iterations and will quit for now. Since Meshroom had the same problem, the same cause (a still background around a turning object) probably applies here too. First I need a better light box.

RealityScan result

3. 3D scanning

3a. Xbox Kinect

I used this scanner in the past (around 2016) for scanning people's heads and 3D printing them. That was working.

I already knew it's quite difficult to use these kind of scanners on shiny surfaces, because of the reflections. Installing this thing was possible on Windows 11 too, but took a lot of effort and scanning the locomotive was impossible. This is definitely a no-go.

Xbox Kinect scanner

3b. Revopoint POP 4 (LBv2)

Let's try the new Revopoint POP 4 scanner. According to the supplier, the blue laser should be able to scan metal parts too. It scans quite fast and is able to measure colors too. Let's try...

(I tried another model for now, see below for the comparison. The Bowman train I'll do later, when I have a bit more scanning experience.)

It takes a lot of time - although partly automated - and result is (not yet) great.

Revopoint POP 4 scan result

4. TripoAI: image → 3D model + textures

Using TripoAI would be great, let's see how smart AI is today.

4a. TripoAI (free) 1x photo only

Using the free TripoAI with one photo. It's working, but of course a lot is missing and the text decals are mirrored and not readable. Of course this is not working well.

(No picture: the model was not usable.)

4b. TripoAI (free) Simplified CAD + 1 photo

It's also possible to upload your own 'mesh' and add 1 photo for free.

One of the problems is the text on the smoke box. This is wrongly 'written' on the other side. For simplified assets, this might be an okay direction.

TripoAI with simplified CAD and 1 photo

4c. TripoAI - HD Mesh + 4 photos

Now using a paid TripoAI account, enabling 4 side views.

I basically used the wrong approach. An 'HD Model' might generate nice results, but it's not working for this train model.

TripoAI HD mesh

4d. TripoAI - SmartMesh + 4 photos

Same as 4c, but now using the 'Smart Mesh' option. This seems to be a better model, converting meshes right!

It's an acceptable way of generating less important or further away objects/assets.

TripoAI SmartMesh

4e. TripoAI - Simplified CAD + 4 photos

Okay, let's use the simplified mesh again and let TripoAI generate the textures.

As expected, the more detail/correct geometry you add, the better the model.

TripoAI with simplified CAD and 4 photos

5. Recreate: CAD → Claude + Blender

Let's move back to the simplified CAD model and let Claude control Blender:

5a. Simplified CAD + Claude merge photos

Claude is now in control of 2 things:

  • Creating some minor missing 3D solids
  • Projecting decals from the photos (photogrammetry output)

The results are still very bad. Although small objects could be generated, it still takes time. And re-using these photos is not working at all.

Claude merging photos in Blender

5b. Simplified CAD + Claude creates solids + textures

Claude recreates the textures in Blender. These are lines of code, telling Blender what to do.

I should have created more shapes inside CAD, since (not accurate) modeling takes more time writing prompts than just drawing it. Overall Claude is quite helpful in changing many things, like changing colors and adding real small missing details.

Almost perfect model:

Textured model by Claude and Blender
Bowman model on SketchFab

5c. TripoAI 3D template as underlay

Let's improve workflow 5b:

  1. First use TripoAI, generating a first 3D model.
  2. Import the blue STL model in CAD and scale it (using this as underlay!).
  3. Now start modeling the full CAD model (except for the driver, that's no fun doing in CAD).
  4. Let Claude generate textures & decals via Blender.

(I also need a new subject for a third Revopoint trial...)

TripoAI was not generating straight surfaces. It was not bad, but just not good enough, so the CAD modeling still needed to be done. Since I'm borrowing this car model, measuring is better than guessing, so finally I did not use the underlay model at all. It's still a feasible way if you only have pictures.

TripoAI car model used as underlay

5d. Full CAD model + Claude & Blender for texture & decals

Instead of letting Claude finish the 3D model, it's easier to do this in CAD. So let's try this with a new model.

  • First I needed some bright pictures (LBv1).
  • Then I let Claude learn a skill to add textures and decals: textures are basically standard textures & line segments, where decals are bitmaps.
  • Modeling took 8 hours, textures & decals also took 8 hours.
Original car
CAD model of the car
Textured model of the car on SketchFab
Textured car model by Claude and Blender

Perfect 3D model:

Let's summarize

MethodEffortTime & costResult
1a. Simplified CAD modelMedium1hPOOR, textures missing
1b. Full CAD modelHIGH8hGOOD, textures missing
1c. Full CAD model, including texturesHIGH+8hPERFECT (not tried)
2a. Meshroom *Medium (many photos)~2hAVERAGE (shape OK, holes, no real scale)
2b. RealityScan *Medium (many photos)~2hPOOR
3a. Xbox KinectMedium (long scanning)+2h & 15€N/A
3b. Revopoint POP 4 *Medium (long scanning)+2h & 750€AVERAGE (different model)
4a. TripoAI (free) 1x photo onlyLOW5 minPOOR
4b. TripoAI (free) Simplified CAD + 1 photoMedium1h + 5 minPOOR
4c. TripoAI - HD Mesh + 4 photosLOW5 min & 18€/monthPOOR
4d. TripoAI - SmartMesh + 4 photosLOW5 min & 18€/monthAVERAGE (model not exact)
4e. TripoAI - Simplified CAD + 4 photosMedium1h + 5 min & 18€/monthAVERAGE (simplified model)
4f. TripoAI - Full CAD + 4 photosHIGH8h + 5 min & 18€/monthAVERAGE (textures still odd)
5a. Simplified CAD + Claude: merge photosMedium1 + 3h & 20€/monthPOOR
5b. Simplified CAD + Claude: solids + texturesHIGH1 + 8h & 20€/monthPERFECT (Bowman not finished)
5c. TripoAI CAD underlay + Claude: texturesMedium~4 + 8h & 38€/monthAVERAGE (model not exact)
5d. Full CAD + Claude: texturesHIGH8 + 8h & 20€/monthPERFECT (different model)

*) Effort 'medium': especially for these methods, shiny objects are difficult to cover. For the Revopoint POP 4 the supplier claims the blue laser would help with this... So a good light box is important. In general: photos can just be taken with your phone, so no extra costs.

In short, the conclusions (for these type of shiny objects):

Perfect results:

  • 5d. Full CAD model, let Claude produce textures.
  • 1c. Full CAD model, including adding textures yourself (which software to use?).
  • (5b. Simplified CAD model, let Claude create solids & produce textures.)

Simplified game assets:

  • 4d & 4e. Creating quick but less accurate models.
  • 2a. Meshroom, if you take care of the background (masks) and use a video: a usable underlay.
  • 3b. Maybe good enough, but costly and still time consuming.

Compare figures: Revopoint POP 4 versus TripoAI

Let's convert a figure into 3D:

  • 3b.: 3D scan with the Revopoint POP 4.
  • 4d.: Feeding TripoAI, using 4 photos.

(Pictures to be added.)

Of course TripoAI cannot see the complete model with 4 pictures, so it will fill holes with fantasy. But this is real quick and quite accurate, generating a decent amount of faces. The cost is only ~18€ a month. 3D scanning has the same problem: you need a lot of scanning at different heights to show the complete model, which is also the case for the Revopoint POP 4. I'm not yet seeing the 750€ value... Hopefully a good scan takes less time than methods 5b/5c. (To be continued...)

5d. Adding more

Just for the record (hours spent per model):

ModelCAD [hours]Claude + Blender [hours]Claude weekly limit [%]
Bowman 300 (5b)18 (not finished)?
Hessmobil 803688~20
Hessmobil 50036615
Hessmobil 163756.. (busy)15..
Hessmobil 16395ToDo...
Hessmobil 10226ToDo...