ZBrush to Godot Workflow for Game Assets
ZBrush is where a lot of game props and characters get their forms. Godot is where those forms have to import, shade, collide, and run. The handoff fails when the high-resolution sculpt is what you try to ship. This workflow is the boring path that works: sculpt, rebuild a game mesh, bake maps, export a glTF through a DCC that can check scale, then set up a simple material and collision in Godot. ZBrush menus and Godot’s importer change between versions. When a button name here does not match your install, use the current ZBrush export docs and Godot’s “Importing 3D scenes” page.
Decide the mesh you will actually ship
Before you sculpt, write down what the asset is in game. A hero prop in a player’s hands, a background rock, and a deforming character are not the same deliverable. Pick a triangle budget for this asset and stick to it. This article will not give you a universal count. Your camera distance and your target hardware decide it.
Keep two files in your head, even if they start as one ZBrush tool. The high-resolution sculpt holds the shapes you want to see in the normal map. The game mesh holds the silhouette, the UVs, and the skinning if it bends. Dynamesh is a practical way to block the high-resolution form without caring about topology. It is a terrible in-game mesh. Do not export it to Godot and hope the importer will cope.
Retopology and UVs
ZRemesher can give you a quad start on a hard-surface prop or a simple organic. Treat it as a start. For anything that deforms, you still need edge loops around joints, eyes, and the mouth. Clean those by hand in ZBrush or in another modeling tool. For a rigid lantern or crate, quads that follow the silhouette are enough, then triangulate on export if your exporter does not do it for you. Godot will render triangles either way.
The game mesh needs UVs before you bake. You can unwrap in ZBrush or in the DCC you trust more. UV tools get renamed. The requirement does not: the texture has to know which pixels belong to which polygons. If you use lightmaps in Godot, those need a second UV set without overlaps. Confirm the UV channel Godot’s lightmapper reads in the current docs. Overlapping UVs are fine for a mirrored normal bake only if you meant to mirror it.
Pack islands with a consistent texel size across the assets that sit next to each other. A door with huge texels beside a wall with tiny ones looks broken even when both bakes are “correct.”
Bake, then leave ZBrush
Bake a normal map from the high-resolution sculpt onto the game mesh. Ambient occlusion is worth baking too if the material is mostly matte. Do the bake in a tool whose cage and ray distance you can see. Blender is a free, ordinary choice between ZBrush and Godot. Export the high and low meshes as OBJ or FBX, whatever your ZBrush version documents, import them into Blender, and bake there. Do not invent a ZBrush menu path from memory. Open ZBrush’s current export page and use the format it actually writes.
Check the bake on the low mesh before you involve Godot. If the normal map looks wavy, fix the cage or the smoothing groups. Godot will not repair a bad bake. Flip the normal map’s green channel only if the render looks inverted, and remember which convention you baked. Godot’s StandardMaterial3D docs describe how normal maps are sampled. Read that page if the surface lighting runs backwards.
Export scale and orientation
Godot’s importer is built around glTF as the main interchange format. Confirm that in the current importing docs, because a future version could add a better path. A reliable route today is: clean the low mesh in Blender, apply transforms, set the origin where the object should sit in game, and export glTF.
Do not apply a magic scale factor from a tutorial. Drop the file into an empty Godot scene and look at it next to a mesh you already trust, such as a 2-meter character or a 1-meter cube you made in Godot. If the lantern arrives the size of a building, fix the export scale in Blender and re-export. Fighting scale with a node transform works once and then breaks the next asset.
Face the mesh the way your project faces. If your characters look down -Z, a prop that faces +X will be wrong every time someone places it. Apply the rotation in the DCC. Do not leave a 90-degree fix on the instance and forget it when you make a prefab.
Name materials plainly. One material is enough for the first import. Multiple material slots are fine when the meshes truly need different shaders, not because ZBrush polygroups were left on.
Godot materials, collision, and LODs
On import, assign a StandardMaterial3D or let Godot build one from the glTF material, then check the maps. Albedo, normal, and roughness are the set that matters first. Godot 4 can pack occlusion, roughness, and metallic into one texture. The channel order is documented on StandardMaterial3D and is easy to get backwards. Confirm the docs for your version before you pack an ORM texture. If you are unsure, use separate roughness and metallic textures until the asset looks right, then pack later.
A sculpt never collides as itself. Add a box, a capsule, or a simplified convex shape that matches the silhouette. A trimesh of the render mesh is a last resort for a static, simple prop, and a bad idea for anything that moves. For a character, the visual mesh and the physics body stay separate. The character’s feet should meet the floor in the scene, not hover because the origin was left between the ears.
A second, cheaper mesh is the right way to do a distant version of a hero prop. Godot can hide or fade geometry by distance. The property lives on the mesh instance and has been renamed often enough that you should read the current GeometryInstance3D page rather than type a property from this article. Swap or fade only after the near mesh is finished. LODs of a broken asset are still broken.
Save the Godot scene as the thing level designers place. Store the ZBrush file, the bake, and the glTF beside the project or in the folder your team already uses for source art. Godot should import the glTF, not your ZBrush tool file.
When the prop sits on the ground, uses the baked normal, and collides with a simple shape, stop. The next asset should follow the same checklist. A pipeline you repeat beats a one-off export that only you can open.