Production hard surface modeling with manufacturing logic. Readable surfaces. Clean modifier stacks. MCP-first.
When to Use
- Sci-fi consoles, spaceships, industrial equipment
- Weapons, vehicles, robotics, military props
- Mechanical assemblies with panels, vents, bolts
- Any asset requiring crisp edges, booleans, chamfers
Design Principles
- Primary forms first — Silhouette reads at distance
- Manufacturing logic — Panel breaks follow construction seams
- Surface hierarchy — Primary > Secondary > Tertiary > Micro (greebles)
- Functional readability — Every form suggests purpose
- Edge consistency — Uniform bevel widths per detail tier
Workflow
Reference → Scale Blockout → Primary Volumes → Panel Breaks
→ Boolean Cuts → Bevel Pass → Weighted Normals
→ Greebles (instanced) → UV Planning → Materials
Boolean Workflow
1. Block primary forms (no booleans yet)
2. Create cutter objects on separate collection COL_Booleans
3. Apply scale on all operands
4. Boolean Difference/Union — keep LIVE
5. Fix intersection artifacts with manual cleanup if needed
6. Bevel AFTER boolean in modifier stack
7. Apply booleans only at export prep
Boolean rules:
- Cutter objects named
SM_Cutter_[Feature] - Prefer exact solver for mechanical work
- Avoid booleans on curved surfaces without adequate topology
- Duplicate mesh before first boolean as backup
Bevel Workflow
| Detail Tier | Bevel Width | Segments |
|---|---|---|
| Primary edges | 0.005–0.02m | 2–3 |
| Panel lines | 0.001–0.003m | 1–2 |
| Micro detail | 0.0005–0.001m | 1 |
- Use bevel weight or edge marks for selective beveling
- Weighted Normal modifier after bevel (keep sharp: 30°)
- Never bevel entire mesh uniformly on complex assets
Panel Lines
Techniques (prefer non-destructive):
- Inset faces + slight extrude inward
- Knife cuts on flat panels
- Boolean with thin cutter boxes
- Normal map detail for distant panels
Place panel lines at:
- Structural boundaries
- Access hatches, maintenance points
- Material transitions
- Manufacturing seam locations
Greebles
- Instance small detail meshes; never model unique unless hero
- Collection:
COL_Greebles - Keep greebles on separate mesh for easy toggle
- Budget: greebles should not dominate polycount
- Use array + random transform for scatter greebles
Hard Edge Management
Sharp edges → Mark Sharp or Bevel Weight = 1.0
Soft transitions → Bevel Weight = 0.0–0.5
Smooth by Angle (`shade_auto_smooth`, Blender 4.1+ replacement for Auto Smooth): 30°–45° for hard surface
Weighted Normal modifier: Keep Sharp enabled
Manufacturing Reference
| Real-World Feature | Modeling Approach |
|---|---|
| Sheet metal bend | Bevel + slight inset |
| Weld seam | Thin raised strip or normal map |
| Bolt pattern | Instanced cylinder, hex inset |
| Vent grille | Boolean cut + array |
| Cable routing | Curve + bevel object or geo nodes |
| Rubber gasket | Separate mesh, slight inset channel |
Vehicle / Spaceship Specifics
Prefer vehicle-artist for cars, ships, aircraft, and mechs. Use this skill when the vehicle is primarily hard-surface sci-fi detailing under a broader HS brief.
- Establish centerline symmetry early (Mirror modifier)
- Flow lines follow aerodynamic/structural logic
- Landing gear, thrusters as separate objects
- LOD: bake panel detail to normal at distance
Weapon Specifics
- Grip pivot at hand contact center
- Sight line alignment verified
- Separate moving parts (slide, magazine) as objects
- First-person: optimize silhouette for viewmodel
MCP Integration
Execute via MCP:
- Create blockout primitives
- Apply mirror/array modifiers
- Execute boolean operations
- Apply bevel and weighted normal
- Instance greeble collections
- Query polycount per phase
Constraints
MUST DO
- Maintain manufacturing plausibility
- Keep modifier stack non-destructive until export
- Use instancing for repeated mechanical detail
- Verify silhouette at 45° increments
- Apply scale before booleans
MUST NOT DO
- Write code or snippets for Blender versions before 5.2, or add version fallbacks: this plugin targets 5.2+, and legacy branches teach users APIs that no longer exist
- Boolean on unsubdivided curved surfaces without support
- Uniform bevel on entire complex mesh
- Model every bolt uniquely
- Skip weighted normals on hard surface
- Exceed polycount budget with micro-detail
Scripts
Tested on Blender 5.2 LTS via the official Blender MCP. Run with execute_blender_code (or headless,
see the blender-mcp-workflow skill); read the script header for every argument.
When the user will paste code into Blender themselves, give them the short runpy call with the absolute
path of this installed script and their ARGS. Don't inline or rewrite the script: the tested file is the point.
| Script | What it does |
|---|---|
scripts/bevel_stack.py |
Add the standard non-destructive hard-surface finishing stack: Bevel (angle-limited, harden normals) -> Weighted Normal (keep sharp) -> optional Triangulate. Existing modifiers with the same names are updated, not duplicated. |
import runpy
result = runpy.run_path("<skill_dir>/scripts/bevel_stack.py", init_globals={"ARGS": {...}})["result"]
ARGS: objects, width, segments, angle_deg, triangulate
Reference Guide
| Topic | Reference | Load When |
|---|---|---|
| Boolean deep dive | references/boolean-workflow.md |
Complex cuts |
| Greeble library | references/greeble-patterns.md |
Detail pass |
| Pipeline | blender-mcp-workflow skill → references/asset-pipeline.md |
Phase context |
Style Integration
| Style | Adjustment |
|---|---|
| realistic-style | Full bevel + PBR materials |
| lowpoly-style | Skip micro-bevels; large flat panels |
| horror-style | Industrial wear; asymmetric damage |
| stylized-style | Exaggerated panel breaks; bold bevels |