Skip to content
alyn
EL4CTEO

Blender Hardsurface Modeling skill

Hard-surface and prop modeling in Blender 5.2 - blockout-to-detail flow, non-destructive modifier stacks (Mirror, Boolean Exact/Manifold, Bevel, Weighted Normal, Smooth by Angle), mid-poly vs subdivision vs high-to-low workflows, shading/custom normals, cylinder segment budgets, edge attributes from Python. Use for weapons, vehicles, props, architecture, mechanical parts.

$npx skills add EL4CTEO/blender-skills --skill blender-hardsurface-modeling
View this skill on GitHubEL4CTEO/blender-skills/skills/blender-hardsurface-modeling/SKILL.md
Pack stars
952
Pack installs
9.6k
Alyn Score
60/99
Updated
3 days ago
License
MIT
– views – installs via Alyn

Install Blender Hardsurface Modeling

Pick your agent. Every command is ready to paste.

$npx skills add EL4CTEO/blender-skills --skill blender-hardsurface-modeling

The open skills CLI detects your agents (Claude Code, Cursor, Codex and 70+ more) and installs to the right folder. Add -g to install globally.

01

Install it

Run the command above, or upload the folder in Claude.

02

Ask naturally

Describe the task. Your agent loads blender-hardsurface-modeling when the request matches its description.

03

Name it if needed

If it does not trigger, say “use the blender-hardsurface-modeling skill”. In Codex, type $blender-hardsurface-modeling.

The skill itself

SKILL.md

FolderGitHub

Hard-Surface Modeling

The execution model is in blender-core. Run blender-asset-qa after every modeling pass.

Pick the workflow first

Workflow When Output
Mid-poly (bevel + weighted normals, no bake) modern games, props seen up close, fast iteration game mesh directly; tiling materials/trim sheets
High → low (high via booleans+bevel or subd, low baked) hero assets, unique textures, tight tri budgets _high + _low → blender-texture-baking
Subdivision (support loops/creases + Subsurf) renders, product viz, film smooth surfaces, edges held by loops/creases

Procedure

  1. Blockout at real scale (ob.dimensions) from primitives. Settle the silhouette and proportions before any detail. Check against references.
  2. Apply scale (transform_apply(scale=True)) before bevels, booleans or solidify, because modifier distances use object space.
  3. Primary → secondary → tertiary forms. Booleans for cuts and panels, then bevels. Small tertiary details go in normal maps/decals, or into the high-poly as "floaters" for baking.
  4. UV the base mesh now (mid-poly). Bevel/Boolean modifiers propagate UVs, but after bevels no edge is sharp enough to auto-seam. Then build the stack with scripts/apply_stack.py -- --objects Body --preset midpoly --cutters Cut1 Cut2. Order: Mirror → Booleans → Bevel → Weighted Normal → (Triangulate at export).
  5. Shading check: smooth shading + Weighted Normal (keep sharp). There must be no gradients across flat faces. View with a matcap or look in solid shading.
  6. QA with blender-asset-qa, then apply the stack only on an export copy (--apply), keeping the editable source.

Stack rules

  • Booleans: put cutters in a Cutters collection with display WIRE and hide_render=True. Solver: EXACT (robust default), MANIFOLD (much faster, but inputs must be closed manifold), FLOAT (legacy fast, fragile with coplanar faces). With many cutters, use operand_type="COLLECTION".
  • Avoid coplanar boolean faces: extend cutters slightly past the surface. They also cause z-fighting.
  • Bevel: limit_method="ANGLE" (30°), or "WEIGHT" with a bevel_weight_edge attribute for hand-picked edges. Turn on use_clamp_overlap, harden_normals=True, miter_outer="MITER_ARC". Width ≈ 0.5–2% of the part's size, kept consistent across the asset.
  • Weighted Normal after Bevel: mode="FACE_AREA", keep_sharp=True, weight 50. Needs smooth faces (remove the sharp_face attribute or call shade_smooth).
  • Smooth by Angle (4.1+, replaces auto smooth): bpy.ops.object.shade_auto_smooth(angle=rad) adds a GN modifier, or shade_smooth_by_angle sets sharp_edge destructively.
  • Mirror: use_clip=True, use_mirror_merge=True. Model one half only at x ≥ 0.
  • Subdivision: hold edges with support loops (a loop 1–5% of the face width from the edge) or crease_edge (0–1). Turn on use_limit_surface. Don't use creases if the asset goes to an engine.
  • Triangulate only for export/baking (keep_custom_normals=True, BEAUTY). Triangulating the bake mesh and the export mesh identically keeps normal maps synced.

Topology rules

  • N-gons: fine on flat, non-deforming faces in mid-poly/game meshes. Never use them on curved surfaces or anything that subdivides or deforms.
  • Poles (5+ edges) should sit on flat areas, never on a curvature peak or bevel.
  • Cylinder segments by on-screen size: small (bolts) 6–8, medium (handles) 12–16, large (barrels) 24–32, hero/close-up 48+. Use multiples of 4 or 8 so booleans/mirrors line up with existing loops.
  • No long, thin triangles across visible curved areas (shading and LOD artifacts).
  • Panel lines: inset + extrude in (mid-poly) or a boolean groove on the high-poly, then bake.
  • Spend density where the silhouette needs it, not on flat faces.

Edge/face attributes from Python (4.0+ names)

me = ob.data
bw = me.attributes.get("bevel_weight_edge") or me.attributes.new("bevel_weight_edge", "FLOAT", "EDGE")
cr = me.attributes.get("crease_edge") or me.attributes.new("crease_edge", "FLOAT", "EDGE")
sh = me.attributes.get("sharp_edge") or me.attributes.new("sharp_edge", "BOOLEAN", "EDGE")
bw.data[edge_index].value = 1.0; sh.data[edge_index].value = True
me.edges[edge_index].use_seam = True          # seams are still an edge property

Select sharp edges by angle in bmesh: e.calc_face_angle(0) > math.radians(30).

Gotchas

  • A bevel that looks blobby or flips usually means unapplied/non-uniform scale or overlapping geometry (turn on clamp).
  • A Boolean that returns nothing or garbage: the cutter isn't closed/manifold (Exact copes, Manifold fails), or its normals are inverted.
  • Weighted Normal has no effect: faces are flat-shaded, or an earlier modifier destroyed the custom normals.
  • 5.2: the GN Mesh Bevel node exists for procedural bevels inside node trees (blender-geometry-nodes).
  • Trim-sheet/mid-poly assets: UVs go to the trim strips (blender-retopology-uv) and materials tile (blender-pbr-materials).

Tips for Blender Hardsurface Modeling

  • • Start a fresh session after installing so your agent picks up the new skill.
  • • This skill ships scripts. Read them before the first run, and run it in a project without secrets first.
  • • It is part of a pack with 28 skills. Install only the ones you need with --skill to keep triggers precise.
  • • If two skills overlap, mention the one you want by name.

Questions about Blender Hardsurface Modeling

What does the Blender Hardsurface Modeling skill do?

Hard-surface and prop modeling in Blender 5.2 - blockout-to-detail flow, non-destructive modifier stacks (Mirror, Boolean Exact/Manifold, Bevel, Weighted Normal, Smooth by Angle), mid-poly vs subdivision vs high-to-low workflows, shading/custom normals, cylinder segment budgets, edge attributes from Python. Use for weapons, vehicles, props, architecture, mechanical parts.

How do I install Blender Hardsurface Modeling?

Run "npx skills add EL4CTEO/blender-skills --skill blender-hardsurface-modeling" in your project. The skills CLI installs it for Claude Code, Cursor, Codex and 70+ other agents. In Claude on the web, upload the skill folder as a ZIP under Customize > Skills.

Does Blender Hardsurface Modeling work in Cursor and Codex?

Yes. Blender Hardsurface Modeling uses the open SKILL.md format, so it works in Claude Code, Claude, Cursor, OpenAI Codex, Gemini CLI, GitHub Copilot and other agents that support agent skills.

Is Blender Hardsurface Modeling free?

Blender Hardsurface Modeling is open source on GitHub under the MIT license. It is free to install; check the license before commercial use.

Who made Blender Hardsurface Modeling?

Blender Hardsurface Modeling is published by EL4CTEO in the EL4CTEO/blender-skills repository, together with 27 other skills.

Similar skills. From other creators.