Skip to content
← Back to Blog 3d-modeling

Weight Painting in Blender for Game Characters: The Complete Skinning Guide

By BitSoul3D5 min read385 views

Bad skinning ruins good characters. You can have a perfectly modeled, beautifully textured game character — but if the weight painting is wrong, the mesh will collapse at the elbows, pinch at the shoulders, and look broken the moment it moves. Weight painting is the step that determines how your skeleton actually deforms your mesh, and getting it right is the difference between a sellable asset and one that never leaves your hard drive.

Weight Painting in Blender for Game Characters: The Complete Skinning Guide

Understanding Vertex Groups and Bone Weights

In Blender, every bone in your armature corresponds to a vertex group on your mesh. Each vertex can be influenced by multiple bones, and the weight value (0.0 to 1.0) controls how strongly that bone pulls the vertex. The sum of all bone influences on any vertex should equal 1.0 — Blender normalizes this automatically when you enable it, but understanding this rule is essential.

Enter Weight Paint mode by selecting your mesh, then switching from Object Mode to Weight Paint. You'll see the mesh colored from blue (0.0 weight, no influence) through green and yellow to red (1.0, full influence). The active vertex group in the Properties panel determines which bone's influence you're painting.

Key shortcuts:

Always enable Auto Normalize (Sidebar → Tool → Options) before painting. This ensures that as you add weight for one bone, other bones' weights are automatically reduced to keep the total at 1.0.

Understanding Vertex Groups and Bone Weights — illustrated

Automatic Weights vs Manual Painting

With Automatic Weights (Ctrl+P → Armature Deform → With Automatic Weights) Blender uses a heat diffusion algorithm to calculate initial weights based on mesh proximity to bones. For humanoid characters with clean topology this gives a reasonable starting point — but it's never production-ready out of the box.

When to use automatic weights:

When to paint from scratch:

Manual workflow (recommended for game assets):

  1. Add armature, enter Pose mode, zero all weights on the mesh
  2. Select mesh, switch to Weight Paint mode
  3. Enable X-Mirror if your character is symmetrical
  4. Paint one bone at a time, moving the armature in Pose mode to test
  5. Use the Gradient and Blur brushes to smooth transitions

For hard-surface game assets (armor, weapons attached to characters), assign full weight (1.0) to a single bone and lock those vertex groups. This prevents any blending at rigid attachment points.

Fixing Common Weight Paint Problems

These are the issues that appear in nearly every beginner rig:

ProblemCauseFix
Mesh collapses at elbow/kneeNo corrective weights around jointPaint gradients that extend past the joint fold
Shoulder pulls mesh incorrectlyClavicle bone has too much influenceRedistribute weight between clavicle and upper arm
Vertices stick to wrong boneAuto weights miscalculated proximityManually paint the affected vertex group to 0, repaint correct one
Seams visible when posedWeight mismatch at UV seam verticesSelect overlapping verts, use Merge Weights
Fingers have no independent movementAll finger verts assigned to hand boneAssign each finger bone to its respective vertex group
# Blender Python: zero all weights on selected vertices
import bpy

obj = bpy.context.active_object
mesh = obj.data

bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.select_all(action='SELECT')
bpy.ops.object.mode_set(mode='OBJECT')

for v in mesh.vertices:
    if v.select:
        for g in v.groups:
            g.weight = 0.0

print("All weights zeroed on selected vertices")

Use Pose Mode testing constantly. After every significant paint session, rotate each bone 90° to 120° to see how the deformation looks. Catch problems here rather than in-engine.

Fixing Common Weight Paint Problems — illustrated

Limiting Bone Influences for Game Engines

Game engines impose limits on how many bones can influence a single vertex. Unity defaults to 4 bones per vertex; Unreal Engine 5 supports up to 8 but recommends 4 for performance. Exceeding this limit silently truncates influences during import, causing visible deformation artifacts that are nearly impossible to debug after the fact.

Blender's solution: Limit Total (Weight Paint mode → Weights menu → Limit Total). Set the maximum to 4 before export. This trims the lowest-weight influences and renormalizes the remainder.

Weight Paint Mode → Header → Weights → Limit Total
Set: Maximum = 4
Apply to: All Vertex Groups

For mobile game targets, reduce to 2 bones per vertex to hit performance budgets on lower-end hardware. Characters destined for the BitSoul marketplace should include the bone limit in the asset description so buyers know what they're working with.

Exporting Weight-Painted Meshes to Unity, Unreal, and Godot

Once weights are clean and limits are applied, export settings matter.

FBX export (Unity / Unreal):

GLB/GLTF export (Godot / web):

Quick validation checklist before publishing:

If you're selling skinned characters on the BitSoul marketplace, always include a test animation (even a basic idle loop) so buyers can immediately verify the rig works in their engine.

Start Selling Better-Rigged Assets

Clean weight painting is an invisible skill — buyers won't notice it when it's done right, but they'll immediately refund a character that deforms badly. Take the time to test every joint, limit your bone influences, and validate in-engine before publishing.

Ready to publish your game-ready characters? Browse and sell rigged 3D assets on the BitSoul marketplace →


This post is part of the Ultimate Guide to Free 3D Game Assets — BitSoul's complete reference for formats, texturing, rigging, optimization, and engine integration.


Build with real assets: grab the 98-model Character Pack on the BitSoul marketplace and drop them straight into your project.

Tags: characters

Skip the modeling — download it instead

A free BitSoul3D account gets you 2 GLB downloads every month for personal use plus 25 one-time AI Engine credits, no card required. PBR-textured GLB downloads with a full 3D preview before you buy, for Unreal, Unity, Godot or Blender — OBJ and 3D-printable STL come with any purchase or paid plan.

Browse 1,051 models — from $4.99 → or start free (2 downloads a month)