Hands-on modeling course
Mesh like a pro.
One asset, five modules, real reps.
Not a syllabus — a course you do. You'll model one asset from graybox to game-ready, drilling each technique in isolation first, then applying it. Every module ends with a mastery gate you can measure. Work it in order; finish with a shippable mesh and the muscle memory to build the next one without a guide.
How this course works
Each module teaches a cluster of techniques, then makes you use them. You never just read: you drill the move on a throwaway shape, apply it to the capstone, diagnose the failures it tends to produce, and pass a checklist before moving on.
The through-line is one object — the Standard Cargo Pod, a stackable sci-fi supply crate, roughly 1.2 m tall. By Module 05 it's an original, budgeted, export-ready asset for Ascent of Ashes, built entirely by your hand. Diagrams illustrate every key concept, and a Practice Gym at the end hands you four standalone builds to prove it all transferred.
The craft is the point: bevel, edge loop, boolean, lathe, smoothing marks exist in every serious mesh editor, and that's what transfers. But you no longer have to guess where they live — the Tool Map now names every real control in the Mod Kit, read straight out of the app, including the one thing that trips everyone: every modeling button carries a ⚙ with real parameters behind it, and primitives take dimensions in metres.
The four block types
How to use this course
It's large on purpose — the risk isn't quality, it's stalling halfway. Here's a four-week path that keeps you moving. It's a suggestion, not a rule: the mastery gates decide when you advance, not the calendar.
Modules 01–02
Block out the Pod, then shape its body and lid. Warm up daily from the bank. Own scale, bevels, and support loops.
Module 03 + Gym L1
Booleans, panel lines, kitbashing on the Pod; then build the Supply Locker. Goal: the cleanup reflex goes automatic.
Modules 04–05
Curves, then audit, budget, and export. Ship the Pod in-engine. You now have one asset carried end to end.
Gym L2 → L4
Barricade, Turret, then the Power Generator with the course closed. If you can, the skill is yours, not the guide's.
Every session: 2–3 bank drills to warm up → one focused build pass. If a mastery gate fails, drill that skill until it stops failing before moving on.
Foundations
Read & block out
Every bad model traces back to a skipped fundamental: wrong scale, or detail piled onto proportions that were never right. This module makes you see geometry and commit to size and silhouette before anything else. It's the least glamorous module and the one that saves you the most hours. You detail nothing here — you get the bones right.
Concept — the mesh, and why scale comes first
A mesh is three things and nothing more: vertices (points in space), edges (a line between two verts), and faces (a filled surface bounded by edges). A face with four verts is a quad, three is a tri, five-plus is an n-gon. Quads are the currency of modeling — they subdivide predictably, bevel cleanly, and shade without surprises. Tris are fine on flat, final geometry; n-gons on a curved or soon-to-be-subdivided surface are a bug waiting to happen.
Before shape, though: scale. Treat one world unit as 1 meter and never drift from it. A colonist is ~1.8 m. A doorway is ~2.1 × 0.9 m. A work table sits at 0.75 m. Model the Pod against those and it drops into the game correctly on the first try. Model it "some size that looks fine on screen" and Module 05 becomes a rescue operation.
Then block out: rough the entire form in gray proxy primitives, judging only proportion and silhouette — the shape you'd recognize as a black cutout at thumbnail size. Detail is seductive and cheap to add later; a wrong silhouette is expensive to discover after you've beveled it.
1 × 1 × 1 m, so a Scale of 1.3 is 1.3 metres — there is no ruler tool and you don't need one. Press Box, select it, and type the number into the Scale row of the Inspector (right sidebar, under the Outliner). Don't try to drag it: the Snap step in Tools is the movement grid and it defaults to whole metres, which is why 1.3 feels impossible by hand. Full control list in the Tool Map.Drills — build the eye and the hands
DrillA · ~15 min
Calibrate your sense of a meter
- Make a box scaled to
1.8 mtall — your human. Leave it in view. - Next to it, build a doorway (
2.1 × 0.9 m), a table (0.75 mhigh), and a 1.2 m crate. - Now hide the numbers and eyeball a fresh
1 mbox. Show the dimensions — check yourself.
Done whenYour eyeballed metre is within ~10%. Scale becomes intuition, not math.
DrillB · ~10 min
Viewport fluency
- On any test mesh, snap between front / side / top / perspective without hunting for the keys.
- Select 8 different faces in turn and frame each so it fills the view.
- Cycle vertex → edge → face select modes and reselect the same feature in each.
Done whenNavigation is thoughtless. You look where you want to work and you're there.
DrillC · ~20 min
Silhouette speed-blocks
- Pick 3 real objects — say a barrel, a tall locker, a squat generator.
- Block each from primitives in under 5 minutes — proportion and silhouette only, no detail.
- Shrink each to thumbnail size. Still readable? If not, the proportions are lying.
Done whenAll three read instantly as a black cutout. You're judging silhouette, not surface.
DrillD · ~10 min
Primitive-as-clay
- Take one cube. Using only move / scale on its faces, turn it into a recognizable chair.
- No new objects — reshape the single mesh. Add edge loops only if a face must split.
- Delete it. Do it again in half the time.
Done whenYou instinctively reach to reshape a primitive, never to stack a new one.
Build — block out the Standard Cargo Pod
From empty scene to a Pod you'd recognize
- Set the stage. One unit = one metre, grid snap on, human proxy in view. every later measurement rides on this being true.
- Main body. Create a box and scale it to
1.2 m (H) × 0.9 × 0.9. Sit it on the grid floor, centered on the origin in X/Z. origin-centered now means a clean pivot at export with no fuss. - Lid band. Mark the top
~15%as a distinct proportion — slightly wider or inset from the body. Keep it a separate visual mass. a readable lid is what makes it a crate and not a block. - Base skid / feet. Add a short base block or four corner feet so the Pod reads as sitting on the ground, liftable by a loader. grounding detail sells scale and function at a glance.
- Front face plane. Flag which face is the front and rough a shallow recessed area where the access panel will go — proxy only, no cuts yet. planning the hero face now guides every detail decision later.
- Judge & name. Drop to thumbnail size and check the silhouette against your human proxy. Name the object, save the scene. if it's wrong here it's free to fix; after Module 02 it isn't.
Common mistakes & how to catch them
| Symptom | Cause | Fix |
|---|---|---|
| Asset is giant or tiny in engine | Modeled to "looks fine on screen," not real units | Set 1 unit = 1 m and measure against the human proxy from step one |
| Proportions feel wrong after you detail it | Silhouette was never locked before detailing | Judge the blockout at thumbnail size and fix it before Module 02 |
| Can't find or select the geometry you want | Working only in perspective | Use ortho views + frame-selected; switch select modes deliberately |
| Verts don't line up; tiny gaps appear | Free-hand placement, no snapping | Enable grid/vertex snap for all blockout dimensions |
| Pod sits half-under the floor at origin | Object centered on its middle, not its base | Rest the base on the grid plane now; you'll thank yourself at export |
Mastery gate
Pass all five to unlock Module 02
- One unit reads as one metre — the Pod stands at 1.2 m beside a 1.8 m proxy and the height looks right.
- The blockout captures body, lid band, and base with correct proportion and a readable silhouette — and zero detail.
- You can reach any face via ortho + frame-select without hunting, and switch vert/edge/face modes fluently.
- Primitives sit on clean grid dimensions; the base rests on the floor at a centered origin.
- Scene is named and saved. You could hand the blockout to someone and they'd know it's a supply crate.
Hard-surface core
Shape it
This is the module you'll use on ninety percent of everything you ever model — and the one where most people quietly build a lifelong bad habit. The habit is treating shading as a separate, later concern. It isn't. A bevel and the support loops that make it read are one technique, so that's how you'll learn them here: together, every time.
Concept — four moves and the shading that binds them
Extrude pulls a face (or edge) outward, growing new connected geometry from it — the workhorse for building form. Inset shrinks a face inward, leaving a border ring; it's how you carve panels, frames, and recesses. Loop cuts insert a ring of edges around the mesh to divide a surface exactly where you need control. And bevel replaces a sharp edge with one or more small faces — a chamfer.
Here's the part people miss. Turn on smooth shading and the renderer interpolates surface normals across faces to fake a curved surface. On an unprepared box, that makes crisp corners go soft and pillowy. The fix is not to give up and leave it faceted — it's support loops (holding edges): a pair of edge loops placed close to a corner. They pin the shading tight to that corner. The distance from the corner sets the look: loops hugging the edge give a tight, milled highlight; loops set back give a soft, cast-metal roll. Same geometry, different soul — controlled entirely by where those two loops sit.
So the rule of this module: you never add a hard edge without immediately deciding how it shades. Bevel, then support. Extrude a panel, then hold its edges. This is what separates a model that survives a close-up from one that falls apart under light.
Drills — the moves in isolation
DrillA · ~15 min
The bevel ladder
- On one long box, bevel four separate edges at 1, 2, and 3 segments, and one very wide/round.
- Smooth-shade it. Rotate a light across all four.
- Note how each catches the highlight — the 2-segment chamfer is your hard-surface default; learn to see why.
Done whenYou can predict how an edge will read before you bevel it.
DrillB · ~20 min
Sharpen the soft cube
- Smooth-shade a plain cube — it looks like a pillow. Good; that's the enemy.
- Add support loops hugging each of the 12 edges. Watch it snap back to a crisp box.
- Now slide one pair of loops away from its corner and watch that corner soften. Feel the control.
Done whenA smooth-shaded box stays crisp, and you can dial any corner's sharpness at will.
DrillC · ~20 min
Panel: inset & extrude
- On a flat face, inset to make a border ring, then extrude inward for a recess.
- Do it again elsewhere but extrude outward for a raised panel.
- Bevel the new edges and add support loops. Check for even borders and clean shading.
Done whenBoth panels have even borders and shade with no pinch at the corners.
DrillD · ~15 min
Route the edge flow
- Make a cylinder — its cap is a single ugly n-gon.
- Rebuild that cap as quads (grid-fill or manual loops).
- Bevel the top rim with support loops; confirm the cap shades flat and clean.
Done whenThe cap is all quads and the rim highlight is even all the way around.
Build — shape the Pod's body and lid
From graybox to a crisp, light-catching body
- Real lid. Turn the proxy lid band into actual form: inset the top face, then extrude up a shallow raised lid with a visible seam against the body. the seam is the Pod's most-read line; make it deliberate.
- Front recess. On the hero face, inset the panel area and extrude inward to create the recessed cavity the access panel will sit in (you cut its details in Module 03). recessing now gives Module 03's booleans clean walls to cut into.
- Corner ribs. Use loop cuts to define vertical strips at each corner, then extrude them out a few centimetres as reinforcement ribs. ribs read as structural and break up flat faces the eye would otherwise skate over.
- Bevel the primary edges. Chamfer the body corners, the lid seam, and the base — a consistent 2-segment chamfer, width small relative to the Pod (think a
1–2 cmedge break). consistency of chamfer width is what makes a kit of parts look like one object. - Support every bevel. Add holding loops beside each chamfer so smooth shading keeps the edges crisp. Set them tight for a machined feel. skip this and Module 05 hands you a pillowy mess to unpick.
- Smooth-shade & audit the light. Turn on smooth shading, sweep a light around, and hunt for pinching or soft spots. Fix by evening the support-loop spacing. catching shading errors now is minutes; catching them post-detail is hours.
Common mistakes & how to catch them
| Symptom | Cause | Fix |
|---|---|---|
| Pillowy, rounded look when you wanted crisp | Smooth shading with no support loops | Add holding edges beside each hard edge; the closer they sit, the crisper it reads |
| Dark smears or pinching next to a bevel | Uneven support-loop spacing, or a pole crowding the corner | Even the loop distances; keep clean quads around the corner, move poles away |
| Bevel self-intersects or eats the face | Bevel width too large for the geometry | Reduce width, or add supporting geometry so there's room to chamfer |
| Highlight is soft where you wanted a tight line | Support loop set too far from the edge | Slide the loop toward the corner until the highlight tightens |
| Inset panel comes out warped | Inset applied to a non-planar face | Flatten the face first, or inset individual faces rather than a bent span |
Mastery gate
Pass all five to unlock Module 03
- Every primary edge is beveled with a consistent, deliberate segment count — nothing razor-sharp remains.
- Smooth-shaded, the Pod holds its form: crisp where it should be, no pillowing — achieved with support loops, not by staying faceted.
- No pinching or dark smears anywhere near a bevel; support loops are evenly spaced.
- The front recess and raised lid are clean insets/extrudes with even borders and a deliberate seam.
- You can explain aloud what a support loop does and how its distance from an edge changes the highlight.
The sci-fi signature
Cut & combine
This is the skill that makes the Ascent of Ashes look — the panel lines, vents, ports, and bolts that read as manufactured. It earns its own module because booleans lie: they hand you a slick silhouette and a topological disaster underneath. A pro cuts and cleans in one motion. You'll also learn to build detail fast — kitbashing from a reusable kit instead of modeling every bolt by hand.
Concept — booleans, their mess, and detail density
A boolean (CSG) combines two meshes: subtract to punch a hole or port, union to fuse volumes, intersect to keep only the overlap. It's the fastest route to mechanical form — a cylinder subtracted from a face is a bolt hole in one operation.
But look at what it leaves at the intersection: n-gons, stray edges, sometimes coincident faces. Smooth-shade that and you get black pinching around the cut; try to subdivide it and it explodes. So the discipline is non-negotiable and immediate — after every boolean you resolve the aftermath: add support loops around the new cut so it holds under shading, put a small bevel on the cut edge so it catches light, delete any interior or duplicated faces, and confirm the result is still watertight (no non-manifold edges). Cut, then clean. Never "later."
Two force-multipliers make this fast. Panel lines — shallow inset-and-beveled grooves — imply that a smooth surface is really separate riveted plates, turning one boring face into believable hull. And kitbashing: model a small library of reusable greebles (a hex bolt, a louvered vent, a port) once, then instance them across the model. Instances are cheap and edit-once. The trick to a convincing sci-fi surface isn't uniform detail — it's density contrast: pack greebles onto a hero area and leave calm negative space beside it, so the busy parts read as purposeful machinery, not noise.
Drills — cut, clean, and kit up
DrillA · ~20 min
The honest boolean
- Subtract a cylinder from a cube face. Now look at the topology it left — the n-gon ring, the stray edges.
- Run the reflex: support loops around the hole, a small bevel on the rim, delete any interior faces.
- Smooth-shade. The hole should read crisp with no pinch.
Done whenA boolean hole shades as cleanly as if you'd modeled it by hand.
DrillB · ~30 min
Build a greeble kit
- Model 5 reusable pieces: a hex bolt, a louvered vent, a round port, a latch clamp, a flush screw.
- Keep each low-poly and clean; set each origin sensibly for placement.
- Park them in a corner of the scene as your personal kit.
Done whenYou have 5 tidy, reusable parts you'll instance for the rest of the course.
DrillC · ~20 min
Panel-line pass
- On one flat panel, cut 3–4 seams with inset-and-bevel grooves to imply separate plates.
- Vary the plate sizes — real hull isn't a regular grid.
- Light it: the flat face should now read as assembled plating.
Done whenA single flat face convincingly looks like riveted panels.
DrillD · ~15 min
Density speed-kitbash
- In 10 minutes, assemble a busy mechanical panel using only instances from your kit.
- Model nothing new — arrange, rotate, scale.
- Deliberately leave one calm zone for contrast.
Done whenIt reads dense and engineered, yet you added zero new geometry.
Build — detail the Cargo Pod
From clean body to a machine that reads as built
- Vent grille. Boolean a louvered vent into one side, then run the reflex — support, bevel, watertight — so the slats shade crisp. a vent instantly signals "this holds something powered."
- Recessed handle. Cut a grip pocket into the front recess with a boolean or inset-extrude; break its edges so a hand-hold reads. function detail (a handle) sells the object's purpose and scale.
- Panel lines. Cut seams across the body and lid to imply separate plates — irregular sizes, not a uniform grid. plating turns big flat masses into believable hull.
- Kitbash the hardware. Instance corner bolts (×4 or ×8), two latch clamps on the lid seam, and a small data port near the vent. instancing keeps the poly cost flat and lets you edit all bolts at once.
- Compose the density. Concentrate detail on the hero face and lid; leave the back and one side calmer for contrast. contrast is what reads as design intent instead of visual noise.
- Re-audit. Smooth-shade and confirm every cut is supported, beveled, and watertight — no pinch, no flicker. every un-cleaned boolean now is a bug you'll chase in Module 05.
Common mistakes & how to catch them
| Symptom | Cause | Fix |
|---|---|---|
| Black pinching around a hole or cut | Raw boolean n-gon left unsupported | Add holding loops around the cut and bevel its edge — the reflex |
| Cut edges vanish under light / look razor | No chamfer on the new boolean edge | Bevel the cut edge so it has a face to catch a highlight |
| Flickering, shimmering faces (z-fighting) | Boolean left coincident or interior faces | Delete duplicated/interior faces; merge overlapping verts |
| Surface looks like noise, not machinery | Detail spread evenly with no contrast | Concentrate greebles on a hero area; protect calm negative space |
| Poly count / performance explodes | Many unique, dense greebles | Instance reusable pieces; keep each greeble low-poly |
| Mesh has holes / non-manifold after combine | Boolean left open or non-manifold edges | Run a non-manifold check; cap holes, merge, re-verify watertight |
Mastery gate
Pass all five to unlock Module 04
- Every boolean cut is watertight and shades cleanly — supported and beveled, no leftover n-gon pinch.
- The Pod reads as engineered plating — panel lines, a vent, a handle, ports — not a smooth blob.
- Detail density is composed: concentrated on the hero face with deliberate calm areas for contrast.
- Hardware is instanced from your kit, not uniquely modeled; poly cost stayed sane.
- A non-manifold check comes back clean — combining introduced no holes or bad edges.
Procedural form
Generate from curves
You can now shape and cut by hand — so here's the fast lane for the shapes that are agony by hand. Anything radial or anything that follows a path is better generated from a profile than pushed vertex by vertex. Master three generators and the cylinders, pipes, and trim that make a build read as engineered take seconds instead of an evening.
Concept — profile in, geometry out
Lathe / revolve: draw a 2D profile — a half cross-section — and spin it around an axis. Out comes a perfectly radial solid: canisters, tanks, nozzles, valve caps, turbine housings. The profile is the design; a clean, well-proportioned profile with its bevels already in gives a clean revolve.
Sweep: take a profile and run it along a path (a spline). This builds anything with a consistent cross-section that follows a route — rails, bumpers, trim mouldings, cable runs. Tube is the special case where the cross-section is a circle: hoses, conduit, wiring — the connective tissue between mechanical parts.
The one judgement call throughout is resolution versus budget. More radial segments = rounder = heavier. Match it to how big the part reads on screen: a thin hose is convincing at 6–8 sides; a big tank rim near the camera might want 24–32. And because generated geometry won't automatically share your hard-surface quad flow, you always finish by converting to mesh and cleaning the join where curved meets built — support loops, merged verts, no pinch.
Drills — the three generators
DrillA · ~20 min
Lathe a container
- Draw a profile for a canister — base, body, shoulder, neck, lip — with the edge breaks built in.
- Revolve it. Snap the profile's inner edge to the axis so there's no hole at the center.
- Try it at a few segment counts; keep the lowest that still reads round.
Done whenYou get a clean radial solid with no seam gap and no wasted sides.
DrillB · ~20 min
Sweep trim around a corner
- Make a small bead or L-shaped profile.
- Sweep it along a spline that turns a 90° — a picture-frame edge.
- Kill any twisting by fixing the profile's up-axis and smoothing the corner.
Done whenThe trim follows the path with no twist and clean mitred corners.
DrillC · ~15 min
Tube a hose between ports
- Place two points. Draw a spline between them with a little sag.
- Tube it at
6–8sides. - Add end fittings from your greeble kit where it meets each port.
Done whenA believable hose runs between two points and plugs in convincingly.
DrillD · ~10 min
Resolution test
- Revolve the same profile at 8, 16, and 32 sides side by side.
- Shrink them to their real on-screen size and compare silhouettes.
- Note the point where more sides stop being visible — that's your budget line.
Done whenYou can call the minimum sides for any part by eye.
Build — add the Pod's curved parts
Radial and path detail, cleanly integrated
- Pressure valve / gauge cap. Lathe a small valve assembly and seat it on the lid — profile with a knurled rim and a domed gauge. a radial hero part adds mechanical credibility the boxy body can't.
- Base trim rail. Sweep a protective bumper profile along the Pod's base edge so it reads as impact-rated. a continuous swept rail ties the four faces into one object.
- Hose run. Tube a short conduit from the valve down into the data port you cut in Module 03, with a slight sag and end fittings. connecting two earlier details makes the Pod feel designed, not assembled from unrelated bits.
- Budget the sides. Give the hero valve enough segments to read round; keep the hose and trim lean. spend polygons where the camera looks, nowhere else.
- Convert & join. Bake the generators to mesh and clean every join to the hard-surface body — merge verts, add support loops, kill any pinch. an un-cleaned join is exactly the seam Module 05's audit will flag.
Common mistakes & how to catch them
| Symptom | Cause | Fix |
|---|---|---|
| Revolved part looks faceted / blocky | Too few segments for its on-screen size | Raise segment count — or accept it if the part is small/distant |
| Scene is suddenly heavy and laggy | Too many sides on small parts | Drop sides on hoses/pipes; reserve high counts for hero radial parts |
| Swept trim twists or pinches on corners | Profile up-axis wrong, or path corner too sharp | Fix the profile orientation; smooth the spline and add path resolution |
| Seam or pinch where curved meets body | Mismatched topology at the join, unsupported | Merge coincident verts and add holding loops at the join |
| Hole or overlap at the lathe's center/seam | Profile not snapped to axis; duplicate seam verts | Snap profile endpoints to the axis; merge the seam after converting |
Mastery gate
Pass all five to unlock Module 05
- A radial part (the valve) and a path-based part (trim + hose) are generated from profiles and integrated into the Pod.
- Segment counts are chosen deliberately for on-screen size — round where it counts, lean everywhere else.
- Every join between curved and hard-surface geometry is clean: no pinch, no gap, verts merged.
- No lathe seam holes or pole overlaps survive; a merge-by-distance comes back quiet.
- You can state, for any part, the minimum sides that still reads round at its size.
Ship the mesh
Game-ready
A gorgeous mesh the engine can't use is worthless. This is the QC bench between "looks great in my editor" and "works in Ascent of Ashes" — one full audit, then the export data the engine actually reads. UV unwrapping and texturing live in Canvas and are deliberately out of scope here; this course ends at a clean, correctly-configured, export-ready mesh.
Concept — the audit, the two kinds of normals, and budget
First, the audit — one deliberate sweep of the whole asset for the errors that accumulated while you were busy making it look good: leftover n-gons (booleans and lathes love to leave them), doubled or loose verts, non-manifold edges, interior faces hidden inside the mesh, and inconsistent normals. Use selection-by-trait and statistics rather than eyeballing — the machine finds these faster than you.
Now a distinction that trips everyone up: face orientation versus smoothing. Face orientation (facing normals) is which way a face points — outward or inward. A face pointing the wrong way renders invisible or inside-out in engine; you fix it with recalculate outside. Smoothing / hard-edge data is different: it's the information telling the renderer which edges are sharp and which belong to a continuous smooth surface, so it knows where to split the shading.
And here's the trap beginners fall into. Smoothing marks are related to the support loops from Module 02 but not the same — they're two solutions to the same problem (controlling how an edge catches light), with different costs. A support loop is permanent geometry: it exports like everything else and it costs polygons against your budget — in exchange it gives a real, dimensional chamfer highlight that holds up under a close camera. A hard-edge / smoothing mark is normal metadata: it's nearly free on the poly count, but it needs a normal map (or a UV seam) to back it, or the edge smears and pinches. So the axis is not editor-versus-exported — both export — it's geometry versus normal-data, and you pick per edge: real bevel where the camera gets close, cheap hard-edge where it doesn't. Get the smoothing wrong and the model looks perfect in Mod Kit and faceted or smeared in-game.
Finally, budget. Poly count is a resource and each asset type has a ceiling — a worldmap building targets around ~80k faces; a prop like the Pod lives far lower, a few thousand up to maybe ~10k. Where you're over, you reduce with intent: dissolve redundant support loops on calm, far-from-camera areas, delete faces that are never seen, and trim segment counts on background curves — protecting the silhouette and every hard edge. Blind auto-decimate is a last resort on hard-surface; it shreds exactly the crisp edges you worked for.
80k does not.Drills — the pre-flight checks
DrillA · ~20 min
Find-the-error hunt
- Deliberately damage a test mesh: leave an n-gon, double some verts, flip a face, bury an interior face.
- Now find them all using select-by-trait and the statistics readout — not by eye.
- Fix each; get the stats to read clean.
Done whenYou can clear a messy mesh in minutes using tools, not luck.
DrillB · ~20 min
Hard-edge pass
- On a beveled box, mark the sharp edges and leave the rest smooth; apply weighted/split normals.
- Compare to a naive "smooth everything" version under the same light.
- Confirm the crisp edges survive with minimal extra geometry.
Done whenYou can hold hard edges via smoothing data, not just support loops.
DrillC · ~20 min
Decimate with intent
- Take a dense part — your 32-side valve, say — and halve its poly count.
- Do it manually (drop segments, dissolve flat-area loops), then try blind auto-decimate.
- Compare silhouettes. Feel how blind reduction wrecks hard edges.
Done whenYou hit a target count with the silhouette and hard edges intact.
DrillD · ~15 min
Transform reset & round-trip
- On any asset, set the origin to its base, then apply scale and rotation (scale 1, rotation 0).
- Export it, then re-import or preview at 1:1.
- Confirm it lands at correct size and faces the right way.
Done whenAn asset round-trips at correct scale and facing, first try.
Build — ship the Cargo Pod
From finished model to an asset live in Ascent of Ashes
- Full audit. Sweep the whole Pod for n-gons, doubles, non-manifold edges, and interior faces from your booleans and lathe. Merge, dissolve, cap — get the stats clean. every defect you ship becomes a rendering bug someone else has to report.
- Recalculate facing normals. Force all normals outward; hunt any inverted face on the vent slats, hose interior, or boolean cavities. an inward face is invisible in-engine — a hole you can't see coming.
- Set smoothing / hard edges. Mark panel seams and chamfer boundaries sharp; keep continuous surfaces smooth. Apply weighted normals if available. this is the data that keeps your Module 02–03 crispness alive after export.
- Hit budget. Decide the Pod's target for a prop of its size, then reduce with intent — trim calm-area support loops, drop background segment counts, delete never-seen faces. Protect the hero silhouette. a prop that costs like a building steals frames from the whole colony.
- Origin, scale, orientation. Origin to base-center, apply transforms, set the forward axis the game expects. The
1.2 myou locked in Module 01 makes this a formality. front-loaded scale discipline pays out right here as zero rework. - Export & verify in-engine. Export the mesh, load it in Ascent of Ashes, and check it beside a colonist: right size, right facing, shading and detail intact. "looks right in the editor" isn't done — "looks right in the game" is.
Common mistakes & how to catch them
| Symptom | Cause | Fix |
|---|---|---|
| Model renders inside-out or patchy in engine | Inverted / inconsistent facing normals | Recalculate outside; manually flip any stubborn faces |
| Clean in the editor, faceted/smeared in-game | Smoothing / hard-edge data not set or not exported | Mark sharp edges, apply weighted normals, export split normals |
| Asset is the wrong size or rotated in engine | Transforms not applied; wrong forward axis | Apply scale & rotation; set the correct up/forward on export |
| Silhouette falls apart after reduction | Blind auto-decimate on hard-surface | Reduce manually; protect boundary and hard edges; decimate only calm areas |
| Way over poly budget | Every support loop and boolean kept everywhere | Dissolve redundant loops, delete unseen faces, keep hardware instanced |
| Shading looks different after export | Importer recomputed its own normals | Export the mesh's normals and tell the importer to use them |
Mastery gate — graduation
Pass all five and you can model game-ready assets, unguided
- Audit is clean: no harmful n-gons, no doubles, no non-manifold edges, all facing normals outward.
- Smoothing / hard-edge data is set deliberately and edges read correct in-engine, not just in the editor.
- The Pod is at or under its stated budget with the silhouette intact.
- Origin, scale, and orientation are correct — it drops into Ascent of Ashes at 1.2 m, facing right, first try.
- It's exported and verified in-engine: shading and detail survived the trip. You carried one asset from graybox to shippable by hand.
Grounded practice
The Practice Gym
The Cargo Pod proved you can follow the arc. The gym proves the skills transfer — to new assets, new shapes, new constraints, without a guide holding your hand. Each build names the modules it stresses, hands you a spec and a budget — reasoned from its size, view distance, and on-screen count (Fig 5.4), never copied blind — and sets one hard test to pass. Do them in order to keep climbing, or cherry-pick the one that hits a skill your mastery gates exposed as weak. Warm up with a few bank drills first.
Standalone builds — climb the difficulty
Supply Locker
A 2.0 m wall locker — double doors, a vent band, a recessed handle. Pure fundamentals, no booleans required.
Barricade Wall Segment
A 3 × 1.5 m modular barrier that tiles seamlessly — plated front, bolt rows, and boolean blast damage.
Auto-Defense Turret
A pivoting turret: a lathed barrel and housing, kitbashed sensors, ammo box, and hydraulic tubing — built as separable parts.
Power Generator
A 2.5 m industrial generator: a revolved turbine intake, swept conduits, boolean access hatch and vents, a kitbashed control panel. Full game-ready, unguided.
Daily drill bank — 2-minute reps
| Skill | The rep (≈2 min) | On target when |
|---|---|---|
| Blockout | Speed-block a named object from memory | silhouette reads at thumbnail in <3 min |
| Scale | Eyeball a 1 m / 2 m / 0.9 m box, then measure | within ~10% every time |
| Bevel | Bevel + support a cube corner to a set crispness | tight highlight, zero pinch |
| Support loops | Sharpen a smooth-shaded cube with holding edges only | stays crisp under smooth shading |
| Inset/extrude | Cut one recessed and one raised panel on a face | even borders, clean corners |
| Boolean | Subtract a cylinder, then run the cleanup reflex | hole shades clean + watertight |
| Panel lines | Plate a flat face with irregular seams | reads as riveted hull |
| Kitbash | Build a busy panel from instances in 10 min | dense + composed, 0 new meshes |
| Lathe | Revolve a bottle at the minimum sides | round enough, no axis hole |
| Sweep/tube | Run a hose between two ports with sag | no twist, plugs in cleanly |
| Cleanup | Find + fix planted defects with select-by-trait | statistics read clean |
| Budget | Halve a part's polys, protect the silhouette | on target, silhouette intact |
Appendix
Tool Map — operations → your editor
This appendix used to list synonyms to hunt for. It no longer needs to: what follows is the Mod Kit's actual control surface, read out of the application itself — every button, its exact label, and the parameters it really fires. Verified 2026-07-28 against the shipped app. If a control ever moves, this table is wrong and the app is right — but it is a record you can check against, not a guess.
Bevel is always 0.3, Subdivide is always one iteration, Twist is always 90°. That is the single biggest difference between this course's language ("bevel small, two segments") and the tool in front of you. You control size with the Inspector's numeric fields, not with the operation. Plan builds around that and the tool stops fighting you.The one you'll need first — measuring in metres
There is no ruler or measure tool, and you don't need one. Every primitive is born exactly 1 × 1 × 1 m (the course's 1 unit = 1 m rule is literally true here), which makes scale the measurement: a scale of 1.3 is 1.3 metres. So to build a 1.3 × 1.8 m box: press Box, select it, and type 1.3 and 1.8 into the Scale row of the Inspector. Exact, first time, no dragging.
Dragging fights you because the Snap step in Tools is the movement grid and it defaults to 1.0 — whole metres. Scale-dragging snaps to a separate fixed 0.1, so 1.3 is reachable by counting thirteen steps, which is exactly the kind of thing the Inspector exists to save you from. Note also that Ctrl forces snapping on even when the checkbox is off.
Modeling dock — Create
| Button | What it makes | Actual preset |
|---|---|---|
| Box | Parametric box | 1 × 1 × 1 m, dropped at y = 0.5 |
| Cylinder | Parametric cylinder | r 0.5, h 1, 24 sides |
| Cone | Parametric cone | r 0.5, h 1, 24 sides |
| Sphere | Parametric sphere | r 0.5, 24 segments, 12 rings |
| Torus | Parametric torus | inner 0.25, outer 0.5 |
| Lathe | Revolve a profile (Module 04) | fixed vase profile, 40 segments |
| Extrude | Extrude a polygon | fixed hexagon, height 1.5 |
| Loft | Bridge two profiles | square → diamond, height 2 |
| Tube | Sweep a circle along a path (Module 04) | fixed 3-point arc, r 0.25 |
x,y pairs, Tube takes x,y,z, Loft takes two profiles with the same point count. Edit the numbers that are already there; that is the fastest way to learn the format. Module 04 is fully practisable: the profile is yours.Modeling dock — Edit Mesh (acts on the selection)
| Button | Operation | Actual preset |
|---|---|---|
| Twist | Twist around Y | 90° |
| Taper | Taper toward the top | top 0.2 |
| Bend | Bend along X | 60° |
| Spherify | Push toward a sphere | amount 1 |
| Displace | Noise displace (rocks) | amp 0.3, scale 0.5 |
| Mirror X | Mirror across X (Module 02) | axis X, centred |
| Subdivide | Midpoint subdivide | ×1 per press |
| Smooth | Laplacian smooth | 3 iterations, strength 0.5 |
| Shell | Solidify — give thickness | 0.1 |
| Bevel | Bevel / chamfer edges (Module 02) | amount 0.3, iterations 1 — set amount as low as 0.05 |
| Decimate | Simplify by clustering (Module 05) | grid 10 |
| Radial ×6 | Radial array merged into one mesh | count 6, radius 1.5 |
| Union / Subtract / Intersect | Boolean (Module 03) — needs 2+ selected | Subtract carves the rest out of the first selected |
For support loops, prefer face mode → Split Edges over
Subdivide: it splits only the edges you picked, where Subdivide still divides the whole mesh. That is the module's warning about geometry cost, now avoidable.Modeling dock — Game-Ready (Module 05)
| Button | What it does |
|---|---|
| UV: Box / Planar / Cylindrical / Sphere | Auto-unwrap the selection by projection type |
| Make LODs | Builds a 3-level LOD chain |
| Col: Box | AABB box collider |
| Col: Convex | Convex-hull collider |
| Col: Trimesh | Exact triangle collider |
| Apply Transform | Bakes rotation + scale into the mesh and resets the node to identity. Either can be baked on its own. |
| Set Origin | Moves the origin without moving the object — center / base / top / corner. base is the one you want for anything that stands on a floor. |
| Audit Mesh | Read-only report: triangles, doubled verts, open and non-manifold edges, winding. Changes nothing. |
| Export glTF (.glb)… | Writes meshes + materials + UVs, including LODs and collision proxies |
Tools section — transform, snap, alignment
| Control | Does | Range / default |
|---|---|---|
| Move / Rotate / Scale | Gizmo mode — also W E R | Move by default |
| Snap (checkbox) | Snap movement to the grid | on; Ctrl forces it on regardless |
| Grid / snap step | Movement snap distance | 0.1 – 20, step 0.1, default 1.0 |
| Angle° | Rotation snap | 1 – 90°, default 15° |
| Duplicate / Delete | Clone or remove the selection | also Ctrl+D / Del |
| Focus | Frame the selection | also F |
| Align to grid | Snap the selection onto the grid | — |
| Drop to floor | Rest the selection on Y = 0 | the fastest fix for a floating blockout |
| Align / Distribute… | Align X/Y/Z to Min / Center / Max; distribute evenly | needs 2+ selected (3+ to distribute) |
Inspector — the numeric truth (right sidebar)
Under the Outliner. This is where you get exact anything: Name, then Position, Rotation and Scale as X/Y/Z number fields (step 0.1, range ±99999), then a Material block — albedo colour, texture, normal map, emission, and a UV scale of 0.1–16. glTF-sourced objects show their source file, and you can attach custom properties.
Module 05 asks you to set the origin and apply transforms before export. In the Mod Kit that conversation happens here, in Position and Scale — so check both before you export, because a scale of 1.3 is real geometry to the exporter but a lie to anyone who later assumes the mesh is 1 m.
Viewport & keys
| Input | Action |
|---|---|
| Left-click | Select, or grab a gizmo handle |
| Middle-drag | Orbit the camera |
| Right-drag | Camera look / orbit |
| Mouse wheel | Dolly (zoom) — finer the closer you are |
| W E R | Move / Rotate / Scale |
| L | Toggle the gizmo between world and local space |
| F | Focus the selection |
| Esc | Clear the selection |
| Del / Backspace | Delete the selection |
| Ctrl+C / V / D | Copy / paste / duplicate |
| Ctrl+Z · Ctrl+Shift+Z / Ctrl+Y | Undo · redo (full-scene snapshots) |
What the GUI does not have
This list was written when the course was, and most of it has since been built. What is actually left:
- No true loop cut. This one is real and it is structural, not an oversight. A loop cut walks a ring of quads and splits it; everything here is triangles by the time an operation sees it, so a "loop" is not well defined and any implementation would be guessing at a ring that may not exist. Use face mode → Split Edges, which splits exactly the edges you picked and is the local, geometry-cheap version of what a support loop is for.
- No curve drawing. Profiles are typed as coordinates, not drawn with the mouse — which is a different thing from the profile being fixed. It isn't fixed any more.
- No measure tool — but the Inspector now prints the selection's size in metres, from the live world bounding box, so it stays honest for a rotated object or an imported model that was never 1 m.
Struck off since this course was written — if a module told you something was unreachable, it was, and now isn't:
- Sub-object mode exists. Object / Vertex / Edge / Face, with Select All, Grow and Same Plane, plus Inset, per-face Extrude, Split Edges, Weld, Delete Faces and an exact numeric Move.
- Numeric fields exist on every modeling operation, behind the ⚙ beside each one. Pressing the operation itself still runs the preset immediately — the fields are opt-in, and the preset is what they start at. A blank field means "let the handler decide", which for things like Displace's seed or Radial's radius is better than any number you could type.
- Primitives take real dimensions — width, height, depth, radius, segments — so you no longer build at 1 m and scale to size.
- Set Origin and Apply Transform exist, which Module 05 needs and could not previously do.
- Audit Mesh exists — the read-only report Module 05 asks you to run.
The Mod Kit is still a blockout-and-assemble tool by design, and that is a legitimate identity rather than a shortfall — primitives, booleans, deformers, exact numeric transforms, and now the sub-object layer on top. That is more than enough for the Cargo Pod and every Practice Gym build. Where it isn't, that's a tool gap worth reporting, not a gap in you.
