GodotCon Boston 2025 Anime Workshop
- Assets for the workshop are at https://github.com/codernunk/godotcon-anime-style-2025
- Arc System Works pioneered the anime 3D style with Guilty Gear Xrd
- Topology is more intentional and exaggerated on faces, to get the most out of animation and shadows
- More reliance on vertex painting and secondary texture maps to control shading instead of normal maps and bump maps
- Texture atlas technique
- Since the art style relies on little detail, we can simplify texturing with atlas textures
- A texture atlas is just a very small texture split into zones with flat colors
- Place UVs in the parts of the texture with the colors you want
- There is black padding between the colors in the example, because the paint bucket tool can bleed into other sections. The speaker feels that having a border helps avoid this issue.
- Using a Texture atlas
- Switch to the Shading tab
- Create a new material for the model
- In the shader for the material, remove the
Principled BSDF node by using the
xordeletekeys- Principled BSDF node is used for realistic rendering
shift+a, then search for Image Texture and add that- Connect
ColortoSurfaceon the Material Output. The model should be black now.
- Switch to UV Editing
- Browse image to be linked in the left panel.
- Change Viewport Shading to Solid, then change the Color to Texture in the right panel.
- Might have to use scroll wheel on the bar to see the Viewport Shading option.
- Hover over hands and face, and press
lon each to select all of the linked vertexes. - Press
uin the right panel, pick any of the three uv unwrap options. - Press
sin the left panel to scale the UVs down until they fit in one of the color boxes. - Press
gin the left panel to move the UVs into the desire color box. - Press
3to switching to face selection mode, pressinglin this mode lets you select all of the faces that are linked without crossing seams - You can mark seams with
uwhen you have a loop selected.
- Switch to the Shading tab
- Shadows
- Switch to the Shading tab
- We're going to make the toon shader now.
- Specifically, an important part of the shader is the color ramp node with Constant interpolation. We use this to make hard shadows.
- Add a Diffuse BSDF to get some basic lighting information
- Add a Shader to RGB node
- Connect the BSDF to
Shaderon the Shader - Connect
Coloron the Shader to RGB toFacon the Color Ramp - Add a Mix node
- Connect
Coloron the Color Ramp toFactoron the Mix - Change
Aon the Mix to Black (or any other color you want to use for shadows) - Connect
Coloron the Texture node toBon the Mix - Connect
Resulton the Mix toSurfaceon the Material Output - We can color the shadows by using HSV adjustment
- Add a Hue/Saturation/Value node
- Set it to 0.5 Hue, 2 Saturation, and .8 Value
- Connect
Coloron the Texture node toColoron the Hue/Saturation/Value - Connect
Coloron the Hue/Saturation/Value toAon the Mix
- There are a lot of ways to color shadows; we could also use a dedicated shadow texture for example.
- Switch to the Shading tab
- Outlines
- Could use Inverted Hull for outlines. It's not perfect; other options include stencil shaders.
- Switch to the Layout tab
- Add a new material, change it to the emission texture, set the color to black, enable backface culling camera
- Add the Solidify modifier in Blender,
0.003Thickness,1.0Offset - Flip normals, change thickness, set the material
offset to
1 - The outlines on the face look bad, but by using weight painting to control the thickness of the Solidifier modifier.
- Create a new vertex group and change the vertex group of the Solidifier modifier
- Now you can change the weights on the model
- Editing face normals
- Some shadows are on the face, but it doesn't look good.
- Add a sphere, set to smooth shading
- Add a modifier to data transfer, so we use the normals of the sphere for the face.
- Exporting to Godot
- We don't want to export the outline, because it breaks compatibility with shape keys if we want to use them.
- Instead, we need to write the outline shader in Godot to pull the weights from the model data.
- We can store data in the vertex colors (R for outline weight and G for custom shadow)