With the help of several helpful videos and articles (which I’ll be linking as they become relevant to the process), I recently figured out a decent pipeline to get Blender models into Tabletop Simulator (TTS) for online gaming. Let’s face it, if I’m painting digital minis I can keep putting off painting my physical ones.
You will need:
- Blender (it’s free)
- Tabletop Simulator (it’s also free)
- A lot of time
- A lot of patience
You might want:
- Unity 2019.1.14f1 (specifically this version, because it exports .unity3d files TTS can read)
- A pre-built model from Heroforge or Thingiverse or similar
Get Your Model
I do a fair bit of 3d printing, so I have some Heroforge .STLs lying around. Tabletop Simulator won’t take those as-is, and besides, they’re “unpainted”. That might be realistic, but why bring the shame of our miniatures backlog into an online space? If you don’t have a figure at hand, sculpt, model, or import something into Blender.
“Painting” Your Mini
You can follow one of many youtube tutorials on how to texture meshes in Blender. Blender will let you texture paint right onto the mesh, set various materials, and so on, but the important thing to remember is that Tabletop Simulator will take one model and one image texture. You’ll have to “bake” your Blender shaders into a single image and tell TTS where that is when you import. The following video is long, but it completely covers this whole process plus has an interesting method of coloring your mesh that feels similar to the traditional base/shadow/highlight technique used by physical miniature painters:
If you’d like to start with Texture Paint mode, this video has you covered, although you’ll still need to save the image for TTS:
There are a lot of nuances to texturing a mesh, but the main TTS-related takeaways are:
- Use the Cycles renderer so you can bake textures.
- Remember to use HDR/environment maps or set up your lighting.
- Baking an Ambient Occlusion texture off a high resolution mesh and incorporating that into your shaders can help accentuate details on your mesh when it’s been decimated down to its low-poly export version.
Exporting the .OBJ
Keep the following requirements in mind for when your model is ready to be imported into TTS, but above all the final model must:
- It must be exported to .OBJ format using triangles (no quads or ngons allowed!)
- It must have a polycount less than 20,000. The official documentation says 25K, but I’ve had failures with 21K. The import will just fail in TTS with an unhelpful error.
Luckily, Blender makes meeting these requirements easy. When you’re ready to export, use a Decimate modifier to adjust your model’s polycount. You can see your current polycount by enabling Statistics under one of the dropdowns, like so:
Tabletop Simulator Import
Open TTS and load up a table. Select Objects -> Components -> Custom -> Custom Model and select your .obj and .jpg/png in the dialog provided. In the Material tab, either select something less shiny like “Cardboard” or play with the sliders so TTS doesn’t overlay its own shaders on what you’ve already done. Refer to the official documentation for additional requirements.
When you buy a VTT file from Heroforge, it comes as a .unity3d file and you import it using TTS’s AssetBundle importer rather than choosing a custom model. If you’re feeling saucy, or if your model looks right in Blender but fails to import as a Custom Model, you could try downloading a very specific version of Unity, importing your Blender file into that, and then exporting an AssetBundle from there. You can also script animations and effects in Unity that should come through into TTS, although I’m not up to that level yet.