Grant Abbitt — Blender Low Poly Character: PS1 Style Modeling for Beginners
TL;DR
Grant Abbitt walks through building a PS1-era stylized character (head, torso, trunk, arms, hands, legs, feet) using separate overlapping pieces rather than a single welded mesh. This was the actual technique that defined PS1 character models and is the right blockout pattern for stylized chibi mascots: each body part is its own primitive (mostly cubes), each gets its own mirror modifier on the mid-axis, and pieces overlap at joints so they don’t separate during rigging. Heavy use of reference images set up via background opacity + X-ray mode.
Bias / sponsor flags
- Promotes his own paid courses 3x in description and intro
- No third-party sponsor in the body
Mapping against Ray Data Co — what I learned that helps me model Ray in Blender
The overlapping-pieces blockout pattern (the load-bearing insight):
- Each body part is a separate cube/primitive — head, torso, trunk (hips), upper arms, forearms, hands, upper legs, lower legs, feet, ears, nose
- Pieces overlap at the joint by design. Why: when the rig moves an arm, the overlap hides any seam — looks joined without needing to skin a single mesh
- This is the right primitive-tree for Ray (non-humanoid mascot): build him as a kit of overlapping primitives, not one welded sculpt. Each primitive gets its own modifier stack.
Reference image setup workflow:
- Drag-drop image into viewport. Image enters perpendicular to viewport (weird) — fix with
Alt+G(clear location),Alt+R(clear rotation), thenR X 90to face front - Object data properties → enable opacity → set to ~0.2 so you can see grid through it
Alt+Ztoggle X-ray mode → see through the cube while modeling against the reference- Duplicate the reference (
Shift+D),R Z 90to make a side view. Position front ref atYback, side ref atXside. NowNumpad 1= front view,Numpad 3= side view, both lined up
Mirror modifier symmetry workflow (re-usable for any symmetric character):
- Add primitive (cube),
Tabinto Edit mode Ctrl+Rloop cut down the middle, double-click to commit- Face select (
3), select half,X → Facesto delete - Add Mirror modifier in Object → Modifier properties
- Enable “On Cage” (see mirror result while in edit mode) and “Clipping” (vertices snap to mid-line and stay attached — critical, easy to forget)
- If you forgot clipping and verts drift apart: select middle verts,
S X 0to flatten on X-axis, thenG Xto re-snap
Key edit-mode techniques:
Alt+left-clickon an edge → loop select (selects the whole ring)Ctrl+left-click→ shortest-path selection between two vertsGG→ edge slide (hold along the edge to redistribute) — used constantly to round out blocky shapesEextrude (face mode is the most useful) — used to extrude the neck out of the head, fingers off the handIinset face — used to add a smaller face inside (useful for eye sockets, ear bases)- After mirror modifier on torso: select all other body parts, then last-select the torso (which has the mirror),
Ctrl+L → Copy Modifiers— propagates the mirror across the whole body in one click
Practical shape recipe for a chibi-style character (translates to Ray):
- Head = cube → loop cuts to round face → extrude neck face down to overlap torso → small extrusion for nose, ear
- Torso = cube → mirror → loop cuts for arm sockets
- Arms = cube → scale long → rotate to lie along reference → extrude/scale for forearm taper, then cube for hand → extrude thumb
- Hands = small cube, scale thin in Z → loop cut middle → extrude thumb out side
- Legs = duplicate of arm geometry, repositioned and rescaled
- Feet = cube → extrude front face for toe area → loop cut for toe articulation
MCP-relevant Blender Python patterns:
bpy.ops.mesh.primitive_cube_add(size=1, location=(x,y,z))per body partbpy.ops.object.modifier_add(type='MIRROR')thenobj.modifiers['Mirror'].use_clip = True(the clipping toggle that’s so easy to forget)- For the propagate-mirror trick: iterate
bpy.context.selected_objectsand callbpy.ops.object.make_links_data(type='MODIFIERS') bpy.context.space_data.shading.show_xray = Truefor X-ray toggle- For symmetry-aware mesh ops:
bpy.context.scene.tool_settings.use_mesh_automerge = Trueand setmesh.use_mirror_x = Truein Edit mode
Cross-references
- Synthesis:
~/.claude/skills/blender-character/SKILL.md - Related transcript:
~/rdco-vault/06-reference/transcripts/2026-04-29-grant-abbitt-ps1-low-poly-character-transcript.md - Sibling: Polygon Runway 2026 tutorial (different aesthetic, similar primitive-blockout approach)