HairHarpy v2.0 (Stylized HairMesh Creator)
Locks in a hairstyle rarely live alone: curves of neighbouring locks meet at shared points, branches split off a trunk, one lock lies along another. HairHarpy has three ways to do this: weld anchors into one, zip several curves into a shared trunk, or glue part of a curve to another lock's path.
Download [Win\Linux]
Foreword
About installation. The program has no digital signature: a code-signing certificate costs hundreds of dollars a year, and I make HairHarpy alone. So on the installer's first run Windows warns about an unknown publisher, and some antiviruses may block the installation. This does not mean a virus was found in the program: antiviruses often react this way to unsigned programs from small authors. If Windows shows the "Windows protected your PC" window, click More info → Run anyway.
The version 2.0 installer was checked on VirusTotal: report. Most antiviruses do not flag it. A few do: these are automated checks that suspect any unsigned program.
The code is open. HairHarpy's source code is on GitHub: github.com/Rackta/HairHarpy. You can read it and build the program yourself. It also describes what the program and the installer do on your computer and how to check it.
Session recording. If you want to help the project grow, the program has session recording: the ● Rec button on the top bar; pressing it again stops the recording. While it runs, the program records which tools and buttons you use, the program's messages, and the moments when the window freezes. If the program crashes, a crash report goes there too. With the ✎ Note button or the F9 key you can leave a note: text plus a snapshot of the program window, on which you can circle or draw something.
I do not receive your files: the program sends nothing anywhere. A session is saved to the Documents\HairHarpy Sessions folder on your computer, and you decide yourself whether to send it to me. From notes I will only see the snapshot of the program window.
Contacting me. With questions, suggestions and bugs you find, write to my email [email address], in the comments to the post or in private messages. All my pages and ways to reach me are collected in the program: the About the author button at the top right.
Getting started
When the program starts, the start window opens. In it you can create a new project or open an existing one. Later the same window opens with the File button on the top bar.
New project. At the top of the window are two room tiles. Clicking a tile creates an empty project and opens it in the chosen room:
- Hair Room — the hair room. Curves, walls, cocoons and crowns: the hairstyle is built on the head and turned into geometry.
- Topology Room — the topology room. Retopology over a high-poly model, vertex normals, mesh cleanup and UVs.
Both rooms exist in every project, so the choice is not final: you can switch at any time on the top bar. The cross at the top right (or Esc) closes the start window.
Tabs under the tiles
- 📂 Open… — open a .hairmesh project file from disk.
- Recent projects — recent projects with a picture and date. Clicking a card opens the project; the cross in its corner removes the project from the list, while the file itself stays on disk. If the file was moved or deleted, the card says "Not found". Hide all clears the list, Hide missing removes only the missing files from it.
- Examples — finished hairstyles made in the program. They are handy for learning how a hairstyle is built: curves, walls, crown, guides, conversion settings. An example opens as a copy: when saving, the program asks where to save your version.
- Autosaves — the five newest autosaves. Opening a copy does not change it; to keep changes, save the project. ⏱ Autosave settings… turns autosave on and off and sets the interval, number of copies and folder.
- Migrate — move hair from another project into the current one. 📂 Choose file… picks the project; its curves, NURBS surfaces and modifiers appear in the current one as a separate group named after the file. Lower on the tab are recent projects for quick selection, and you can also just drag a file onto the window. Here too, in the Presets section, are presets: hair from the examples and your own. + Create preset saves the group selected in the scene as a preset.
Hair room: interface
The room window is divided into five zones: two bars at the top, the outliner on the left, the viewport in the centre and the tool column on the right.
Top bar — project, export and display:
- File — the start window with recent projects, autosaves, migration and presets (Ctrl+O).
- Save — save the project (Ctrl+S; Ctrl+Shift+S — save as).
- Autosave — autosave settings: interval, number of copies, folder.
- Reload — restart the program and open the same project. Unsaved changes are not lost.
- Export — export meshes (selected or all) to OBJ, FBX, glTF, PLY or STL. The export window sets the path, format, scale and normal type.
- Bridge ▾ — send meshes straight to another program: directly to Blender or Maya, or to a folder watched by another program (Unreal, Unity, Godot, ZBrush).
- Display ▾ — what to show in the viewport: X-ray, visibility and opacity of anchors, curves, guides, the mesh, NURBS surfaces and the wireframe.
- ● Rec — session recording (see the foreword).
Top right corner: the Hair and Topology room buttons. Each room has its own outliner, its own tools and its own undo history; the head and camera are shared. Next to them are the hotkey manager, the inspector and the FAQ for looking things up, and below them About the author and Support the author.
Second bar — scene, camera and floor:
- + — import a reference head or a mesh (OBJ, GLB, GLTF, FBX) and simple primitives; the W button shows the wireframe of the head and imported meshes; Aa — smart rename (Shift+F2).
- Gizmo: World / Local — gizmo axes in world or local coordinates (W); X, Y, Z — enable or lock an axis.
- Camera ▾ — camera reset, perspective or orthographic, views, split screen.
- Reference ▾ — a reference board (like PureRef) and image planes in the viewport.
- Solo — show only the group you are working with. Select something in another group and Solo switches to it.
- Lock select — clicking a curve, wall or modifier selects the whole lock: all curves joined by walls. With Shift — add or remove a lock.
- Floor — the floor grid: the first slider moves the floor up or down, the second sets opacity (0 — floor off). ⊙ 0 puts the floor at the origin if a mesh was imported far from the scene centre.
- Axes — opacity of the world axes (X red, Y green, Z blue); 0 — axes off.
The outliner on the left has two columns. The first holds scene objects: the head, imported meshes, guides, crowns and cocoons with their modifiers (Density, Parent influence). The second, Curves, holds curve groups. To the right of each group are toggle icons:
- A — the group's curve display mode: hide automatically, always show, or never show;
- coloured square — the group's colour; lock surfaces are painted with it;
- symmetry indicator — a click turns the group's mirror copy on and off (axis and Apply are in the group settings, see "Snapping and symmetry");
- free curves icon — curves not tied to a wall or a modifier stay visible in the viewport even when the group is not selected (on by default);
- eye — visibility of the whole group.
Meshes in the first column have their own icons: collision — drawn curves stick to this mesh (or to all meshes of the group), as to the head, and do not pass through it, even when the mesh is hidden; textures — a click turns them on and off, a double click or RMB opens the texture sets; a reference mesh has an icon showing it cannot be selected in the viewport, only here.
Working in the outliner: double-clicking a group selects everything inside, F2 — rename, dragging — nest into another group (P — parent to the last selected, Shift+P — take out of the hierarchy). Shift + dragging over the eyes hides or shows every row the cursor passes. The F key over the outliner reveals the selected object in it. Service curves are visible in the viewport only while selected.
An expanded group can be shown as a list of curves or, with the ⎇ Scheme button, as a scheme resembling a metro map: roots on the left, the tip on the right, lines are curves, circles are their ends, forks and merges. Under the scheme are tiles for surfaces (Surfaces) and service curves (Service curves): service curves are not edited, but walls are built on them. ≡ List returns the normal list.
The viewport in the centre is where the hairstyle is built. The camera view is labelled in the top left corner, the axes are in the bottom right.
The right column holds tools by section: selection and transforms at the top, then Curves, Cocoons and Snapping · Symmetry. Under the tools is the Settings panel with the settings of the selection, and at the bottom Convert to geometry, which turns hair into a mesh. Each tool is covered in the following sections.
Inspector
The inspector opens with the button with Mara's portrait, left of the FAQ, in the top right corner. The window appears over the viewport and gathers hairstyle checks and info windows in one place. Its contents depend on the room; below is what the Hair room has.
CHECK — hairstyle checks
- Connection check — finds the places where locks of the selected cocoons are welded and opens the inspector report: a list of places and an auto-fix button (Auto-fix). The Stitch radius slider sets how close the points of two locks must be for them to be stitched. The value is in loop steps, 0.1 by default: the smaller it is, the fewer places get into the report.
- Near anchors — highlights in orange anchors of different curves that sit practically at one point but are not welded.
- Degenerate curves — highlights broken curves. In red — curves with fewer than two anchors or zero length; if anchors sit almost on top of each other, the curve becomes thin red and the spot itself is marked with a big yellow marker.
- Twisted — highlights twisted walls in lime: where a wall turns around its length more than the set angle within one loop step, you will get non-planar polygons. The angle is set by the Twist, ° slider.
WINDOWS — info windows in the viewport
- Frame counter — FPS and frame time.
- Model stats — in the Hair room they show how many polygons, triangles and vertices you will get if you convert the selected cocoons. A click switches the view: column → row → off.
- History — a history slider along the bottom edge of the viewport. Each step is labelled, a click returns to it, the right button deletes a step (later ones remain).
- Keystroke display — a window over the program with pressed keys, combinations and mouse buttons (repeats — ×N). Handy for recording tutorials.
Each window has a ⚙ button with look settings: background colour and opacity, font size, weight and opacity, and for the history — showing the step number ("Step 3 of 12"). Under the buttons is a miniature viewport: you can drag the windows in it to where they should stand; the right button opens the look settings, a double click returns a window to its corner.
Hair room: first steps
The hairstyle is built on the head, so first prepare the model: import it and set up collision, polygroups, snapping and display.
1. Importing the head. Click + above the outliner to open the import window. At its top is a row of primitives (cones, cubes, cylinders, a plane, spheres, a ring): a click creates a primitive at the point the camera orbits around. Below are the Path field and the Browse… button: you can pick several OBJ, GLB, GLTF and FBX files at once together with their textures and .mtl, paste paths separated by semicolons, or point to a folder.
Each file has its own block of settings:
- Import polygroups — keep the file's polygroups (OBJ groups and objects, glTF and FBX meshes). Off — one mesh, one polygroup. Split polygroups into separate meshes — each polygroup becomes a separate mesh in a group named after the file.
- Import as head — this model is the head the hair is built on. If there is already a head, the model is added to it.
- Import UVs, Import textures — the file's UV layout and textures; without UVs the textures will not apply.
- Import polypaint — colours painted on vertices (ZBrush polypaint, vertex colours).
- Import creases, Import hard edges — subdivision creases and hard edges from the file.
- Import curves — curves from the file (OBJ lines, FBX curves) become program curves.
Same for all files applies this file's settings to all files in the list; the cross removes a file from the list. The button at the bottom imports everything at once. For a model that is too heavy, the program offers to lighten it — simplify it by polygroups while keeping their seams — or load it as is.
2. Collision. Drawn curves stick to the head. In the head settings, in the Collision block, you choose the shape they lie on: the model itself (its copy, raised by a set distance), a capsule around the head (simple and smooth, shown with orange rings) or another mesh, for example a light proxy. The capsule is a separate mesh: you can select it with ◎ Select the capsule and move, rotate or scale it with the gizmo; ↺ Reset the capsule fits it again.
3. Model polygroups. In the mesh settings, the Polygroups block lists polygroups with their polygon counts. A click picks a polygroup (Ctrl — add, Shift — range), a double click selects all its polygons, F2 — rename, the right button — extra actions: select symmetrical or topologically identical parts, the border, turn a polygroup into a separate mesh. The eye hides a polygroup (Alt on the eye — keep only it), the button next to it duplicates, the cross deletes it together with its polygons.
Buttons under the list: the arrows move a polygroup up and down (with Shift — to the very top or bottom), ⧉ duplicates, + creates an empty polygroup, ⇲ moves the selected polygons into the chosen polygroup, the cross deletes. Select all and Deselect all pick or unpick all polygroups, Show all shows hidden ones. Picked polygroups are needed, for example, for the snapping mask (next step) and isolation.
4. Snapping. The Snapping block in the mesh settings decides which part of the model things snap to. Icons at the top: use the mesh as a reference that vertices of other meshes and curve anchors snap to (it then cannot be selected in the viewport, only in the outliner); Topology Ghost — show this mesh's topology over the references; the snapping mask. While the mask is on, snapping goes only to its polygons; in the project it is shown in green.
- Show mask — show the mask in green while the mesh is selected or snapping is on.
- Mirror +X → −X, Mirror −X → +X — mirror the mask from one side to the other.
- Clear mask — clear the mask.
- + Selected polygroups, − Selected polygroups — add the picked polygroups to the mask or remove them; − Hidden parts — remove hidden parts from the mask.
- Mask brush — paint the mask with a brush (Brush: the left button adds, Ctrl erases, [ and ] — size) or a lasso (Lasso). With Shift the brush also draws a lasso.
- Paint through — the brush also paints what the camera cannot see: the back side and layers under others.
- Leave out the covered parts — skip polygons in front of which lies another layer of the same mesh; Cover distance — how far to look for such a layer.
5. Model display. The Display block in the mesh settings: the Transparency slider makes the mesh semi-transparent (up to 90%); below are display modes:
- first row: model wireframe display; textures (double click or RMB — texture manager); a custom material instead of grey (double click or RMB — its settings);
- second row: smooth shading; flat per-polygon shading; silhouette — one colour without lighting;
- third row: polygroups, each in its own colour; UV checker; UV stretch map (red is compressed, blue is stretched).
At the bottom is the Head toggle: it marks the mesh as part of the head. In the Hair room all meshes with this mark together count as the head the hair is built on.
Moving, visibility and editing
Moving. The Move (E), Rotate (R) and Scale (T) tools move, rotate and scale the selection with the gizmo: anchors, curves, groups, meshes. W switches the gizmo axes between world and local, X, Y and Z lock or free an axis. Alt + drag sets the gizmo's work plane. Q returns to the cursor (or to the previous tool). With Shift, the Move tool slides a single anchor along the nearest curve (see "Sliding an anchor along a curve").
Pie menus. Hold Space for the tool menu: release the key toward the tool you want or click it. Shift+RMB opens the main menu of actions on what is under the cursor and what is selected. Holding H opens the hide and isolate menu.
Visibility
- H (short press) — hide the selection or show it again;
- Ctrl+H — isolate the selection: only it is shown (again — everything back);
- Shift+H — isolate the selection together with the head;
- Ctrl+Shift+H — keep only the working group;
- the H menu also has Unhide all — show everything hidden.
Camera. F — frame the selection. Tab — camera menu and split screen; a double press makes the active view full-screen.
Editing
- D — duplicate, Delete — delete;
- Alt+G — gather the selection into a new group in its place;
- P — parent the selection to the last selected, Shift+P — take out of the hierarchy;
- F2 — rename, Shift+F2 — smart rename: numbering in names, prefixes, find and replace, sorting;
- Ctrl+C (⧉ SEL) — copy the selection: the list of what is selected and the camera to the clipboard (to paste into a message), and curves as a path for ⇶ Snap to path;
- Ctrl+Z — undo, Ctrl+Shift+Z or Ctrl+Y — redo.
All keys can be reassigned in the hotkey manager.
Snapping and symmetry
The Snapping · Symmetry section of the right column.
Snap — anchors being dragged stick to the surface of reference meshes. A mesh is made a reference in its settings, in the Snapping block (see "Hair room: first steps"); if the mesh has a snapping mask on, anchors stick only to it. If there are no references, the program will hint where to mark them.
Symmetry (Shift+X) — the dragged anchor pulls its twin, the anchor at the mirror point, mirrored through the head's centre; the symmetry planes are shown in the viewport. The button next to it opens the settings:
- Type: Planar — mirroring through the plane of each checked axis; Topology — twins are found by position and then tracked along mesh edges (holds even on a slightly asymmetrical model); Radial — copies around the first checked axis, their number is set by Copies;
- axes X, Y, Z — which planes to mirror through (several — each and their combinations);
- Space: Local — the object's axes and centre, Global — world, Workplane — the gizmo's work plane (Alt + drag), Custom — a set point and world axes;
- Context — where the plane lies: Auto — at the origin if the object is symmetrical about it, otherwise through its middle; Origin — always at the origin; Box — through the middle of the bounds;
- Restrict — a point on the plane stays on it while moving, so the middle does not drift apart;
- Tolerance — how far a twin may be from the mirror point;
- Show Planes — show the planes while symmetry is on.
Group symmetry is a separate thing: a curve group has a Symmetry block in its settings. Enabled creates a live mirror copy of everything inside the group along the Axis (X, Y or Z). The plane passes through the head's centre or through the parent group's point — this is written under the axis. The copy repeats every edit of the original. Apply symmetry turns it into real curves and walls that can be edited separately. The group's point is set by the Position fields; ✥ Move to the head's centre moves the whole group so that its point lands at the head's centre, and ⌖ Point only moves only the point without moving the contents.
Groups, curves and walls
A hairstyle is assembled from groups. A group is a lock or part of the hairstyle: curves and NURBS walls stretched between them. Groups live in the Curves column of the outliner, and later each of them turns into a mesh.
Creating a group. Right-click with Shift held on an empty spot of the outliner or viewport — the action menu opens — and choose ▣ Create empty group. Existing curves can be gathered into a new group: select them and press Alt+G. Groups can be nested by dragging them in the outliner; the parent group's colour passes to nested ones.
Curves. The Curve tool (C) draws curves; it has three modes:
- Curve — a regular curve. The left button places points: on the head or on a plane that passes through the last point and faces you. Esc or Enter finishes the curve.
- Lock — a flat lock. The curve becomes its centre line, and the circle at the cursor sets the width at each point; width is changed with Ctrl+wheel or Ctrl+RMB drag. If before drawing you select (Cursor, Shift + click) two anchors of other curves, the lock starts between them with a width equal to the distance between them. If you select three or more anchors — across a volume lock — a volume branch starts through all those anchors, and their ring becomes its cross-section.
- Edges (V) — curves from the edges of a mesh, imported or converted. Details below.
Edges mode: curves from a mesh. Works on an imported or converted mesh. Selecting edges:
- click — an edge, double click — an edge loop up to the nearest fork;
- Shift — add, Ctrl — remove (double click — a loop, drag — a box);
- Ctrl+Shift — shortest path from the last picked edge;
- Esc — clear the selection.
The ∿ Path → curve button (or Shift+RMB) turns each chain of selected edges into a curve. Chains meeting at one vertex get a shared anchor there. New curves go into the selected group, or, if there is none, into the "<mesh name> paths" group.
The ◆ Mesh → curves & surfaces block breaks the whole mesh down into locks: each separate part of the mesh counts as a lock, curves run along its fold edges, and walls are stretched between them. On quad meshes curves follow edge loops; other meshes are sliced across. Everything goes into a new group. Settings:
- Max curves around — if there are this many edge lines around a lock or fewer, a curve goes on each; if more — only on the folds;
- Crease angle — from what bend angle a line counts as a fold, that is, a lock edge;
- Smooth lock: curves — how many curves a round lock without folds or a non-quad mesh gets;
- Root: top end — root at the top end, for hanging hair; Root: nearest the head — root at the end nearest the head, for sticking-out locks.
Flat lock settings. Select a lock drawn in Lock mode, and the ▬ Flat lock block appears in the Settings panel:
- Profile smoothing — evens out width and rotation along the lock: 0 — exactly as set on the anchors, more — smoother transitions between them;
- Tip — over what fraction of the length the lock narrows to a point at the tip (0 — a cut end);
- Plain curve — remove the flat lock and keep just the curve.
If you select anchors of the lock, the ▬ Flat lock at the anchor block sets Width and Rotation (the lock's rotation around its centre line; between anchors it changes smoothly) at those points.
Below are three brushes. They paint on the selected flat lock; clicking the brush again exits it, size — Ctrl+RMB drag:
- ⬆ Extrude — extrudes the ribbon into volume: LMB — paint, Ctrl — erase, Shift — smooth. Depth — how far a weight of 100% extrudes (in lock half-widths), Fade to tip — over what fraction of the length near the tip extrusion fades out, ⇅ Invert extrude — extrude to the other side. Start with Extrude: the other brushes work on what has been extruded;
- ↔ Offset — moves the extruded edge nearest to the brush: LMB — inward (orange; at 100% — up to the other edge), Ctrl — outward (blue; by one more width), Ctrl+Alt — erase, Shift — smooth. The edges move independently;
- ⋎ Glue faces — closes the top face of the extrusion (green): at 100% its two edges meet into one, and the cross-section becomes the letter Y.
Each brush has Strength (how much one stroke paints) and Clear (erase all its weights). When the shape is ready, ✔ Convert to 2 curves & a wall turns the lock into two curves along the edges and a flat wall between them; if the lock started from two anchors, the curves start at them. For a volume branch the button is called ✔ Convert to N curves & walls: from each anchor it started at, a curve runs along the branch (and further back along its anchor's curve — a shared trunk), with closed walls between the curves. In both cases the centre curve is deleted.
Editing curves. The Cursor tool (Q): a click selects an anchor, Shift adds to the selection, the selection is moved with the cursor or gizmo tools. The right button on a curve's line inserts a new anchor, B + left-button drag changes an anchor's Smoothness. To select several curves, hold Ctrl and swipe over them in the viewport; Ctrl + drag over an empty spot clears the selection.
The Brush tool (M) moves curves with a brush, as in sculpting. In Screen mode everything inside the on-screen circle moves; in Surface mode only the hair under the cursor nearest to the camera. With Shift the brush smooths, Ctrl + drag inflates a lock, Ctrl+Alt + drag narrows it. If curves are selected, the brush acts only on them. Size and hardness (Radius, Hardness) are in the tool settings or Ctrl+RMB drag.
Shift+RMB with a curve selected opens its menu: choosing a path through forks, detecting a fill outline, separating a trunk, recalculating and optimizing anchors, reversing direction. The curve settings hold its smoothing:
- Roundness — 0: a smooth spline, 1: each bend follows a circular arc through the anchors;
- Smoothing — adjusts anchor handles so that curvature changes without jumps;
- Even out anchors — moves the anchors themselves and removes waviness while keeping the overall shape.
Shift+RMB on an anchor (or with anchors selected) opens the anchor menu:
- ✖ Delete anchor — delete the anchor; ✖ Delete anchor, keep shape — delete it while keeping the curve's shape;
- ↺ Recalculate handles — recalculate the anchor's handles;
- ∿ Create curve through the anchors — a new curve through the selected anchors in selection order; ∿ Create curve between the anchors — a curve between two selected anchors, raised above the head;
- ⚙ Optimize the selected anchors — remove extra anchors among the selected ones while keeping the shape;
- ⤾ Rotate junction — at a fork, choose which curves pass through it smoothly, or return to automatic tangents;
- ✂ Separate the zones at this X — where curves cross in an X or welded strands swap in pairs, walls are cut across: above and below become separate zones, while the curves stay whole;
- ⫘ Zip the curves, ⇶ Snap to path, ⇶ Unglue from the curve — covered in "Welding, zipping and snapping curves"; ⛓ Detach from the connector — detach from the crown's lower line.
The curve's Shift+RMB menu also has actions with locks, paths and trunks:
- ◎ Select all curves of the lock — select all curves of the lock joined by walls;
- ⌖ Select — paths through the forks — a list of paths from root to tip through forks: a click adds a path to the selection (an already selected one is removed), ⊙ Every curve of these paths selects everything;
- ⤳ Change the route — for a service curve, choose another path through forks: the part that went along the wrong branch is replaced, and the walls follow (for a wall — separately for each of its sides);
- ✂ Separate the trunk — on a shared trunk, choose a branch that gets its own trunk;
- ✂ Split … into N walls — split a wall into its component parts.
Walls. Select two or more curves, open the Shift+RMB menu and choose ▦ Create NURBS surface — walls are stretched between the curves. The same menu has:
- ▦ Wall between exactly these two curves / Walls between exactly these N curves — walls exactly between the selected curves, without searching for neighbours; ▦ Walls between N curves (open) — an open row of walls;
- ◈ Volume lock from N curves (closed) — a closed volume lock: walls go in a ring through all selected curves;
- ▦ Walls along the selected paths — walls along the selected paths through forks; ▦ Wall between the two trunks — a wall between two trunks whose branches face each other;
- ◭ Fill the hole between these curves — close the hole between the selected curves;
- ◎ Detect the fill outline here — the program itself finds the outline of the area under the cursor (a hole in the walls or a patch between the nearest curves) and, after confirmation, covers it with a wall. Handy on complex lock forks;
- ∿ Create average curve — a curve midway between two selected ones;
- ⛓ Merge anchors at identical places — weld anchors that sit at one point;
- ↺ Recalculate all anchors, ⚙ Optimize anchors — recalculate anchors or remove extra ones while keeping the shape;
- ⇄ Reverse direction — reverse the direction of the curves.
Each wall has its own settings. At the top it says which curves it is stretched between (Select both curves selects both). Below:
- Width segments — how many extra segments run across the wall's width; Segment offset and Spread from centre shift them toward one of the curves or toward the edges;
- Bulge — bend the wall to give the lock volume (0 — flat), Bulge to the other side — bend it the other way;
- Second surface — a second wall between the same curves with its own settings: together they make a closed lock. Available when Bulge is not 0.
Scissors (K) cut curves and walls; they have three modes:
- Curve — pick a curve with the right button (Shift — several), then drag a line through it with the left button. In the menu that appears: cut into two curves, cut and delete the upper part or the lower one. The curve's shape is kept.
- NURBS surface — cut a wall in two. Click one of its curves where the cut begins, place anchors across the wall and finish on the second curve; an end not brought to the edge is completed by the program. ✂ Cut (Enter) cuts, Cancel (Esc) cancels.
- Split ends — a click on a curve splits it from that point to the tip into two branches in a Y shape. How far the ends spread is set by Spread (or Ctrl+RMB drag).
Curve modifiers
A modifier turns one curve into a volume lock. A cross-section (profile) is swept along the curve, producing a temporary surface. It does not count as a real lock yet: you tune it until the shape suits you, and for further work convert it to regular curves and walls. The Curve modifiers tool (A) is in the Curves section of the right column. The 📌 button in its header pins the modifier menu in the viewport next to other tools.
The tool has two tabs: Profile — the modifier itself, Extra — additional modifiers on top of it.
Profile — the lock's cross-section. Draw a curve (C), select it, choose a profile and click Apply (with several curves selected — Apply to N curves).
- Built-in profiles: Quad, Trapezoid, Triangle, Circle, Half circle.
- You can draw a profile yourself in the editor under the list: the left button moves a point (with Shift — with snapping), the right button adds one, a double click deletes. A profile must have at least three points.
- Save preset saves the profile as your preset, Delete preset deletes one of yours (built-in ones remain).
Modifier settings. The modifier appears in the outliner. When it is selected, the Settings panel shows its settings. If you edit the source curve, the surface follows it.
- Start, Middle, End — the start, middle and end of the lock. Each part has its own Radius and Rotation (cross-section rotation), and under the ▸ Profile arrow its own cross-section. = Start profile and = Middle profile copy the cross-section from the previous part.
- A point added to the profile also appears in the other parts. If you bring two points together, they glue into one. Ctrl + drag separates them again.
- Collapse the tip — the lock's end converges to a point (on by default); Tip length — over what fraction of the length it narrows.
- Auto radius picks the radius from the width of your locks (or from the curve's length).
- Select curve selects the source curve. Copy modifier and Paste modifier transfer the profile and all settings to another modifier.
- Convert to curves & walls — a curve is built along each corner of the profile, NURBS walls are stretched between the curves, and you get a closed volume lock. The modifier and the source curve are deleted.
Extra — additional modifiers. Select a modifier or its curve and click one of the buttons; the modifier is added to the selection:
- ◐ Mask — a mask along the lock. Where it is 100%, additional modifiers do not act. In the Affects only block you can list which of them the mask affects: drag them there from the outliner or from the Extra tab, or click +. The Ignore checkbox inverts the list: the mask acts on everything except those listed. Clear, Fill and Invert clear, fill and invert the mask.
- ⬤ Thickness — thickness painted with a brush. Orange — thicker (up to ×2), blue — thinner (down to a point).
- ⟳ Twist — twist of the cross-section, also with a brush. Green — clockwise, pink — counter-clockwise (looking from the root along the lock). Angle at 100% sets the rotation angle at full strength.
- ≋ Noise — waves along the lock. Amplitude — how far the lock departs from the path, Frequency — the number of waves. Pure sine turns uneven noise into a clean sine wave, and with both spreads on (Spread ↔, Spread ↕) into a spiral. Plane keeps the noise in one plane, Rotation turns the noise directions at the root, middle and tip, Seed gives another noise variant.
- ➰ Curls — a twist or a volumetric curl. Coil radius sets the coil radius at the root, at 1/3, at 2/3 and at the tip (0 — the lock is only twisted). Density — the number of coils in each quarter. Thickness, Rotation in spiral, Reverse direction and Twist the profile tune the shape. The Anti-clipping sliders (Smooth the path, Shrink on bends, Thin where crowded) keep coils from cutting into each other on bends.
Mask, thickness and twist are painted with a brush: the 🖌 button appears on the Extra tab and in the modifier settings. The left button paints, Ctrl — the opposite value (for the mask — erases), Ctrl+Alt — returns to 0, Shift — smooths. In Add mode strokes accumulate; in Absolute mode the weight immediately becomes the brush value. Below are the brush strength and radius. If modifiers are selected, the brush paints only on them. The eye in the outliner turns off an additional modifier without deleting it.
Crown
The crown is the top of the head around the parting: from the parting line, hair spreads down in all directions. In HairHarpy the crown is a separate object with its own mesh. Locks start from it later, and its loops join the loops of the locks. The Crown tool (S) is in the Curves section of the right column.
Creating a crown. Click the head where the top should be, that is, the back end of the parting: the crown is built from this point. + Create places the crown on top of the head by itself. Before creating you can choose:
- Preset — Crown, a regular crown on top of the head, or Bangs, the same shape turned around and shorter front to back: it goes on the forehead with its open bevelled edge toward the crown;
- Symmetric — the new crown is symmetrical about the head's centre (X): an edit on one side is repeated on the other;
- With a continuation — the crown is created with a continuation right away (more on it below).
What the crown consists of. Three kinds of curves:
- Parting line — the parting line;
- Lower connector — the lower line that locks come up to;
- Crown curves — the crown's curves: they run from the lower line to the parting (both ends attached), set the crown's shape and the vertical loops.
The buttons with these names in the crown settings select the corresponding curves. + Crown curve adds a new crown curve into the widest gap. Above the buttons is how many vertical loops, rings and parting vertices the crown has.
Crown settings
- Rings — the number of rings between the lower line and the parting; 0 (auto) — by loop step.
- Whorl — how loops converge at the top, where many of them gather. Merge loops — neighbouring loops below the top merge in pairs (each merge is a triangle). Seam on the crown curve — loops next to the crown curve nearest the top end on it in a herringbone.
- Symmetric — mirrors one half of the crown onto the other; the parting stays in the middle. When you turn it on, the program asks which side to take as the base. Crown curves added later are not mirrored: there is ⇋ Mirror again… for that.
Locks and the crown. If you attach a lock's curves to the lower line, the crown gets extra loops at that spot, and the lock's loops match the crown's loops. With lock welding on (Weld locks), conversion welds them into one mesh. An attached curve end is an anchor of the lower line:
- dragging changes the line's shape;
- Ctrl + drag moves the end along the line;
- Ctrl + click detaches the curve.
The lower-line anchor settings have the Sharp corner on the lower connector checkbox: the line breaks into a corner at this spot, and the lock attached there starts smoothly, without a step between the crown and the lock.
Continuation. + Continuation drops curves from each lower-line anchor and stretches walls between them: you get a skirt around the head growing from the crown. Anchors that a lock already starts from are skipped. The length is set by the Continuation slider (in crown heights). Then the skirt is cut into locks with scissors in NURBS surface mode.
Lock extrude
A flat lock is curves joined by walls into a single row. Lock Extrude makes a volume lock out of it: it copies its curves, moves the copy away from the head and closes the sides with walls. The tip stays shared: the copies are welded to the source curves at the end, and the lock converges to it in a point. The tool is in the Curves section of the right column. It has no hotkey by default; you can assign one in the hotkey manager.
How to extrude
- Click a wall or curve of a flat lock — its whole row is selected. Shift + click adds another lock: a drag extrudes all chosen ones at once.
- LMB ←→ — thickness: right — away from the head, left — toward the head.
- LMB ↑↓ — back segments: curves in the middle of the new side that stick out further than it. One segment is a flat back. Two curves give a pentagon in cross-section, more give a rounded back.
- RMB ←→ — how much the lock narrows toward the root. 100% — thickness fades out at the root.
- RMB ↑↓ — over what fraction of the length the thickness narrows toward the tip.
While the tool is chosen and the selection has not changed, each new drag edits the same extrude rather than making a new one. The same four values exist as sliders in the tool panel: Thickness (in fractions of the lock's average width, from −200% to +200%), Back segments, Root narrowing, Tip narrowing. The extrude is finished when you take another tool or select another object.
A volume lock, a ring of curves, cannot be extruded: it is already volumetric. Neither can a fork of walls: you need a simple row of curves.
Welding, zipping and snapping curves
Locks in a hairstyle rarely live alone: curves of neighbouring locks meet at shared points, branches split off a trunk, one lock lies along another. HairHarpy has three ways to do this: weld anchors into one, zip several curves into a shared trunk, or glue part of a curve to another lock's path.
Welding anchors. Drag an anchor onto an anchor of another curve. When you release it closer than 14 pixels to the other anchor, a menu appears:
- ⛓ Weld anchors into one — the two anchors become one, both curves pass through it;
- if the start of one curve met the end of another — ⇄ Reverse …, then weld (reverse one curve and weld) or ∿ Join into one curve (merge the two curves into one);
- Don't weld — leave the anchors next to each other but separate.
Ctrl + click on a welded anchor of a selected curve detaches it at this spot: the curve gets its own anchor, the others stay welded. The ⛓ Merge anchors at identical places item in the curve's Shift+RMB menu welds anchors that already lie at one point.
Sliding an anchor along a curve. Drag an anchor with Shift held: it lands on the curve nearest to the cursor and slides along it without leaving the line. Any visible curves work, except those the anchor itself belongs to. The bottom of the window shows which curve it is riding on. To move to another curve, bring the cursor to it. If you release Shift without releasing the mouse, the anchor moves freely again, without a jump. The same works with the Move tool (E): Shift while dragging a single anchor leads it along the nearest curve. This is handy for placing a curve's end exactly on another curve or bringing it up to an anchor for welding. An anchor on the crown's lower line slides along it with Ctrl; see "Crown".
⫘ Zipping curves. If several curves meet at one anchor, they can be brought into a shared trunk, like a zipper. Shift+RMB on that anchor → ⫘ Zip the curves, then choose a side: ▲ Above the anchor or ▼ Below the anchor. Next, where to bring them: onto one of the curves (it is highlighted on hover) or onto ⊙ The averaged position, the centre line of all the curves. After that, the curves on the chosen side go through the same anchors, and branches that split off the zipped parts move to the nearest trunk anchor.
⇶ Snapping to a path. Needed when one lock should lie along another but stay separate.
- Select the curves to lie along and press Ctrl+C (or the ⧉ SEL button): they are remembered as the path.
- Shift+RMB on an anchor of the other lock — where the gluing begins → ⇶ Snap to path — onto ….
- Choose the part: ▲ Upper part or ▼ Lower part from the anchor. On hover you can see which part will lie and where; "partly" means the part is shorter than the path and will not cover its full length.
Part of the curve lies on the path, and its anchors are linked in pairs with the path's anchors: move either one of a pair and the other follows. The anchors are not welded; each lock keeps its own. You can unlink anchors with the ⇶ Unglue from the curve item in the anchor's Shift+RMB menu: after that they move on their own.
Welding locks into one mesh on conversion is turned on by the Weld locks setting. It is described in the conversion section.
Braids
A braid in HairHarpy is a separate object: strands weave along one curve and are built as separate tubes. The curve sets the braid's axis. If you move and edit it, the braid rebuilds to follow. The Braid tool is in the Curves section of the right column.
Creating. Draw a curve (C) along the middle of the future braid, select it and click Create braid in the tool panel. If several curves are selected, a braid appears on each. When a braid or its curve is selected, the panel shows its settings. Select curve and Select connectors select the braid's curve and its connectors.
Weave
- Classic — the outer strand goes over, into the middle;
- Dutch — the outer strand goes under the middle, and the braid stands out above the surface;
- Fishtail — many thin strands, each overlapping half of the others (6 or more);
- Rope — a rope twist: strands are twisted around each other.
Next, the common settings:
- Strands — the number of strands;
- Crossings — how many crossovers along the whole length (for Rope — half-turns);
- Width — the braid's width;
- Depth — how deep strands go over and under each other;
- Strand size — strand thickness;
- Tightness — 0: strands only touch, 1: pressed into each other;
- Rotation — rotation of the braid around the curve; at 0° the flat side faces away from the head.
Shape along the braid. For the start, middle and end, Width, Density (weave density: the number of crossovers stays the same, but they move closer) and Thickness (strand thickness) are set separately as multipliers; double-clicking a slider returns ×1. Rounding defines how values blend into each other: 0 — straight, with a break in the middle, 100% — smoothly.
Stylization. Sharpen sharpens each lobe into a triangle: thick where the strand comes up on top, pointed where it goes under its neighbour. Squash flattens strands where they press against each other.
Ends. The braid's start and end are set up separately:
- Separate — a connector ring around the end of each tube. Move the connector or its anchors and the tube's end follows and takes its shape. If you drag the end of a lock's curve onto a connector, the lock attaches to it and continues the strand;
- Shared — all strands converge into one tube with one connector around it; the connector's shape sets the end's shape;
- Point — no connector, strands converge to a point. Tip rounding: 0 — a sharp tip, 100% — round.
Gathering — over what fraction of the length strands come together (for Shared and Point), and for Separate — how far a moved connector pulls the tube along. Reset connectors rebuilds the connectors along the end outlines and puts them back in place; attached locks stay on them.
Strand cross-section. By default all strands share one profile (One profile for every strand). If you uncheck it, each strand can get its own: Edit strand N's profile. The profile is edited the same way as for curve modifiers: LMB moves a point, RMB adds one, a double click deletes. A point brought to its neighbour glues to it, giving a hard edge along the strand (Ctrl + drag separates them again), and a point pulled inward gives a dent. There are profile presets (Profile preset…) and the This profile to every strand button.
Cocoon and mesh. Cocoon: One shared — one cocoon for the whole braid, the rings of all tubes lie on its shared levels across the braid; One per tube — each tube has its own cocoon and rings across the tube itself, even where it runs diagonally. Rings / crossing — how many rings a tube has per crossover. Under the settings you can see how many tubes and polygons you will get: each tube has its own polygroup, and glued profile points give hard edges. Close the cut ends closes the open tube ends with an n-gon.
What next. There are three ways:
- Make separate tubes — puts the braid's mesh into the scene right away as a separate mesh next to the braid;
- on the general conversion (Convert) the braid becomes its own mesh and is welded to nothing — neither to locks nor to other braids;
- Convert to locks — each strand becomes a curve along its middle with a Tube modifier of its cross-section and thickness, in a separate group, and the braid is hidden. From then on these are regular locks: they can be edited and converted like any others. Before that you set Anchors / crossing (anchors per crossover), Tube thickness (modifier radius) and Point ends collapse (a Point tip converges to a point).
Cocoons
A cocoon is a semi-transparent shell around a lock that follows its shape. Rings are visible on it — that is where the cross loops of the future mesh will go. A cocoon does not make geometry itself: it sets where and how often loops will lie, and on conversion it is the selected cocoons that turn their locks into a mesh. Cocoons and their modifiers are in the Cocoons section of the right column, and they have their own section in the outliner (the ◍ button collapses it).
Creating. Select a lock — its group, curves or walls — and click the Cocoon button. The cocoon follows the lock's shape: edit the curves and the cocoon rebuilds. Branches added to the lock later are not part of the cocoon — they get a cocoon of their own.
Rings. The ring spacing is taken from the lock group's loop step and Deviation. Settings of the selected cocoon:
- Rings: On the cocoon — rings on the cocoon's shell, On the lock — rings projected onto the lock's walls (this shows how loops will lie on the mesh);
- Opacity — shell opacity;
- Denser on bends — how much rings crowd on bends (×1 — no crowding);
- Denser to the tip — how much they crowd toward the tip.
Trunk and branches. A cocoon can be made a branch of another: drag it in the outliner onto the parent cocoon. While the branch runs inside the parent or along it, its rings lie where the parent's rings are — the loops of trunk and branch match. Once out of the parent, the branch switches to its own step over a few loop steps. Double-clicking a cocoon in the outliner selects it together with all its branches. Buttons in the cocoon's row hide its rings (◎) or the whole cocoon (eye, H); with Shift — together with branches.
Shell modifiers
The Shell modifiers tool (G) edits the rings of the selected cocoon (or the cocoon of the selected lock). Modifiers fall into two groups.
Topology — masks painted with a brush along the cocoon:
- Density — more or fewer rings where painted. Click Add density, set the density (×2 — twice as many loops, ×0.5 — half as many) and paint on the cocoon: LMB — paint, Ctrl — erase, Shift — smooth. The mask is visible on the cocoon: dark — weak, yellow — full. Ctrl+Shift paints the second mode, Even spacing (light blue): rings there are placed at equal distances, without crowding on bends and toward the tip; Ctrl+Shift+Alt erases it.
- Parent influence — the strength of the parent's pull. By default a branch inside its parent takes the parent's rings. Where the mask is painted (LMB, red), the influence of the parent and linked cocoons weakens and the cocoon places its own rings even inside them. With Ctrl (green) influence is added instead: the cocoon takes their loops further out, including next to them. Ctrl+Alt — erase, Shift — smooth.
Both brushes have Radius and Strength; the modifier has Strength (how strongly the mask acts), plus Clear mask and Clear all masks. A modifier is turned off with the eye in the outliner.
Guidelines — guides a ring lies on:
- Line — select a cocoon and drag a line across it: one ring lies in the line's plane. The guide follows the cocoon; to move it, draw a new one and delete the old one. A click on a guide makes it active. A line has an influence zone along the lock, where loops line up parallel to it (0 — only the ring on the line), blending toward the zone's edge, and loop density inside the zone. Linked guides (🔗 Linked settings) change together.
- NURBS disc — a disc across the cocoon: a ring lies on it. If a cocoon is selected, a click on it (or + Create) places a disc across it. If nothing is selected, a horizontal disc goes through all cocoons in the scene, and on each crossed cocoon one ring lies on the disc — this is how loops are aligned across the whole hairstyle. The disc is moved, rotated and scaled (E / R / T) and deformed with a brush; it has Outer radius and Inner radius, buttons to select the outer and inner rings, and Reset deformations. The Cocoons — only these and Cocoons — left out lists (cocoons are dragged into them from the outliner) limit which cocoons the disc acts on.
Where a cocoon takes loops from its parent or a linked cocoon, guides and discs give way to them.
Checking and preparing for conversion
Before turning the hairstyle into a mesh, it is worth checking it: errors in curves and connections become holes, twisted polygons and seams on the mesh. All checks are gathered in the inspector (see "Inspector"), mesh settings are in the Convert to geometry block at the bottom of the right column.
1. Check curves and walls. Turn on the highlights in the inspector:
- Near anchors — anchors of different curves that almost coincide but are not welded are highlighted in orange. Usually they need to be welded: drag one onto the other or use ⛓ Merge anchors at identical places (see "Welding, zipping and snapping curves");
- Degenerate curves — broken curves are highlighted in red: fewer than two anchors, zero length, anchors on top of each other. They are deleted or redrawn;
- Twisted — walls twisted more than the Twist, ° angle per loop step are highlighted in lime. Fix the curves or insert anchors so that the wall turns more smoothly: strongly twisted spots will produce non-planar polygons.
2. Make sure the locks have cocoons. Only locks of selected cocoons (and braids) are converted. Turn on ☰ Loops or the cocoon's On the lock ring mode and see how the loops will lie. Crowding and gaps are fixed with shell modifiers.
3. Set up the mesh in the Convert to geometry block:
- Loop step — the distance between neighbouring loops along the lock. Double click — enter a number. Set reference shows a cube: click, fit the cube's height to the step you want and click again;
- Deviation — how much a loop's size may differ from the step depending on curvature: with a step of 10 and Deviation of 50%, loops will be from 5 to 15 — shorter on bends, longer on straights. Gaps longer than step × (1 + Deviation) always get extra loops;
- Auto weld points — points closer than the set distance are welded into one (on by default). Weld distance is that distance; auto — a quarter of the loop step, less at the tips. ◎ Pick sets it with a circle at the cursor: size — Ctrl+wheel, click — apply;
- Weld locks — touching locks become one mesh: their points closer than a tenth of the loop step merge (the parent's points stay in place), shared walls and polygons inside another lock are deleted, and small remaining holes are closed.
4. Check the connections. Select the cocoons and click Check connections (in the conversion block or in the inspector). The program welds the locks the same way as on conversion but creates nothing, and opens inspector Mara's report:
- if there are no problems — "No faults were found", and you can click Convert right from here;
- if there are — a list of places where locks should weld but their joins are made incorrectly. In the viewport these places are marked with red markers; clicking a row in the list highlights the place.
What to do with red places:
- fix them by hand — weld anchors, adjust curves — and click Check again;
- if the join is actually correct — RMB on the marker → Ignore: the place turns green and no longer gets into the report (Weld again returns it to the check);
- Auto-fix — the program tries to repair the places itself. Fixes are marked with blue markers: RMB on a marker → Show before / Show after (compare), Accept or Reject; Accept all and Reject all decide for all at once. Places that could not be fixed stay red. Auto-fix is still imperfect: its algorithms are being refined.
5. Convert. Select the cocoons and braids and click Convert. Their locks turn into meshes in the Meshes group, and the curve groups are hidden. Ctrl+Z returns everything in one step. Braids become separate meshes of tubes and are welded to nothing. Before clicking, look at the model stats in the inspector: they show how many polygons the conversion will produce.
Topology room: interface
The topology room is for working with the mesh: retopology over a high-poly model, mesh editing and cleanup, vertex normals and UVs. Switch to it with the Topology button in the top right corner. The rooms share the head and camera, while the outliner, tools and undo history are their own. Hair room tools do not carry over here: Topology has its own logic.
Mode strip — a narrow column left of the outliner:
- Object — whole meshes: a click or box selects, a drag moves. Ctrl+Shift — selecting model polygroups in the viewport: the polygroup under the cursor is highlighted;
- Polygon, Edge, Vertex — polygons, edges and vertices of the active mesh. Shift + click on a mode button converts the current selection to that mode;
- UV — the UV editor. It is still in test mode; there is a RizomUV bridge.
Lower on the strip are toggles:
- Snap — edited vertices (when moving, rotating, scaling, entering numbers) stick to the surface of other meshes;
- Symmetry (Shift+X) — vertex edits are mirrored onto their pairs through the mesh's X = 0 plane; vertices on the plane stay on it. The settings button next to it opens the same window as in the Hair room (see "Snapping and symmetry"), plus a UV part;
- snapping mask brush — the same mask as in the Snapping block of the mesh settings;
- Preserve UVs — moved vertices keep their place in the texture: the texture does not swim while you edit the topology;
- Element snap — when dragging selected vertices, the one under the cursor catches on a vertex, edge, polygon or the view grid, and the rest move with it. The settings next to it set what to catch on, the capture radius in pixels, and the view grid's display and step.
The tool window (TOOLS) floats over the viewport: drag it by the top strip, resize it by the corner; a double click on the strip lays the tools out in a row or a column; position and size are remembered. On the right of the window is TOOL OPTIONS, the settings of the chosen tool. Holding Space opens this room's pie menu of tools.
Display — display in the room: ⬢ Wire (mesh wireframe), ◉ Smooth, ◆ Flat, ○ Unlit (smooth, flat shading or no lighting), ▦ No textures, ⬚ Select through (box, lasso and selection brush also take the invisible side), Opacity — transparency of the active geometry, to see the reference through it, and PDO — the active geometry is drawn slightly closer to the camera and does not sink into the mesh it lies on.
The Transform table under the Settings panel — position, rotation and size of the active mesh (or the centre and size of the selection in component modes) along World or Local axes. Ctrl + drag on a cell changes the value by ±1, Ctrl+Shift — by ±0.1. Dragging over several cells selects them, and a typed number goes into all of them. A size of 0 flattens the selection.
Mesh settings — polygroups, snapping mask, display — are the same as described in "Hair room: first steps". In the Topology room they are joined by Selection sets (saved selections: hovering highlights the set's elements, a click selects, Shift adds, Ctrl removes, RMB deletes) and the mesh's pivot with a Bake button.
Inspector window
In the Topology room the inspector (the button with Mara's portrait) highlights mesh problems instead of hairstyle checks. The HIGHLIGHT block holds highlight toggles on meshes:
- N-gons — polygons with more than four sides, in violet;
- Open edges — open mesh borders (an edge of only one polygon), in yellow;
- Non-manifold edges — an edge shared by more than two polygons, in red;
- Interior markers — stray pieces left inside a mesh (for example, extra polygons inside an open tube), in pink, with a marker visible through the mesh;
- Hard edges — hard edges where shading breaks, in light blue;
- Double walls — polygons lying on top of each other (for example, doubled by a mirror) or partly overlapping each other (an unwelded seam), in hot pink;
- Non-planar — non-planar polygons, in teal. The slider next to it sets how bent a polygon must be to be highlighted: 0 — any bend, 1 — only a corner that has left the plane by half of the longest side.
The WINDOWS block is the same as in the Hair room (see "Inspector"), except that the model stats show the polygon, triangle and vertex counts of the model itself.
Selection in the Topology room
Selection types are in the tool window and in the Shift+RMB menu:
- Select Cursor — a click picks, holding LMB paints the selection with a brush; double click — the whole piece; a click and a double click nearby — a loop, and further along it — every Nth element;
- Lasso and Rectangle — encircle with an outline or a box;
- Outline — the open outline (all holes and borders of the mesh) or the border of the selected polygons;
- Loop, Ring, Hard edges — the loop, parallel ring or hard-edge line under the cursor is highlighted, a click picks it (Shift adds, Ctrl removes);
- Fill — the area under the cursor up to a cut or the selection border; Ctrl removes the selected piece.
Selection settings: Visible only / Through — only what is visible or the hidden side too; Stop before selected, Stop before n-gon, Stop before tris — where loop walking stops. Ctrl+A selects everything in the current mode, Ctrl+D clears the selection, Ctrl+I inverts it.
Soft Selection (B) — vertices near the selection follow it, the further away the weaker. B turns it on and off; holding B and moving the mouse sideways changes the radius. Object only — only what is connected to the selection moves; Radius — everything within the radius, even unconnected parts of the mesh.
The edit menu (Ctrl+RMB) — actions on the selection:
- Grow / Shrink — grow or shrink the selection by one ring; Invert — invert;
- Select Mirror — move the selection to the other side of X (+X → −X or −X → +X);
- Selection Set — save the selection as a set;
- Mirror — a mirror copy of the selected polygons in the same polygroup;
- Melt — dissolve: for edges and polygons, the edges between them are removed (the polygons merge); vertices dissolve together with the polygons around them;
- Split2PG — selected polygons into a new polygroup;
- Hard Edges / Soft Edges — make edges hard (shading breaks) or soft again;
- Split — detach the selected polygons from the rest; Detach — move them into a separate mesh.
The same menu has grouping in the outliner, ⧉ Merge (merge two or more selected meshes into one) and a choice of where to put the gizmo: at the origin, at the geometry's centre or at the mesh's pivot.
Topology room tools
Transform
- Move (E), Rotate (R; with Shift — in 45° steps), Scale (T; with Shift — in 0.1 steps down to zero, that is, to flattening; with Ctrl — uniformly; Ctrl + drag with polygons selected — first Inset, then scale). Settings: gizmo Orientation (World, Local, Normal, Camera, Custom), Free gizmo and Alt + dragging a handle — move the gizmo itself, not the model, Shift step — the move step with Shift, Slide along the edges — vertices slide along their edges and stay on the surface, Align — turn the mesh's own axes to the selection, normal, view or world;
- Brush — a brush over the mesh. Modes Screen, Surface, Topology surface; what LMB does: Move, Smooth, Relax, Inflate or Shrink (RMB in the viewport — choose). Shift — smoothing, Shift+Ctrl — relax, Ctrl — along normals, Ctrl+RMB drag — size and hardness. Relax: keep the stars even — also even out "star" vertices (not four-edged), All meshes — act on all visible meshes under the brush. If there is a selection, the brush works only on it;
- Slide — a drag over an empty spot slides the selected vertices along their edges: LMB — proportionally, RMB — in parallel.
Actions in the tool window (they fire immediately, without settings):
- Relax Mesh (Ctrl+R) — even out the selected vertices (with no selection — all) over the surface; borders stay in place;
- Select N-gons — select all polygons with more than four sides (with Shift — add to the selection);
- Collapse Edge — each selected edge collapses into a vertex (connected edges — into one);
- Snap to the references — the selected vertices (with no selection — all) land on the surface of the references;
- Apply To Identical — the retopology of one part of a high-poly model (selected polygons or the whole mesh) is copied onto all topologically identical parts and onto copies of this mesh, together with UVs, seams, creases and hard edges;
- Virtual symmetry group — see "Virtual symmetry".
Modelling
- PolyPen — the element under the cursor is highlighted, holding LMB drags it. Clicks draw a polygon (the first point or a double click closes it, Esc cancels). Ctrl + drag — extrude, Ctrl + click — delete, Shift + click — a pivot point, Shift+RMB — fill between points, Ctrl+Shift — Loop;
- Bridge — polygons between two edge chains or two polygon groups. Settings: number of segments, Tension (the bridge's bend), Spin steps (pair rotation), Reverse, Keep original;
- Fill Hole — the hole nearest to the cursor (or all that the selection touches) is shown filled: LMB fills, RMB — next variant, wheel — fill type (Quads, Quads + tris, Tris to a centre, Tris no centre, N-gon). Subdivision — rings of loops into the hole, Edge Flow — the patch continues the surface's shape;
- Bevel / Extrude — extrude the selected polygons: a sideways drag sets how far. Caps on top and bottom, Smart mode (no inner walls where polygons border their neighbours), a proportional bevel on edges, and what to select afterwards. Shift + drag — only pull out, without new polygons;
- Inset — insert polygons inward along the selection's border: Offset, Depth, Preserve groups (the whole area at once or each polygon separately), Scale the inside. On vertices — a circle around each (Radius, Sides, A hole);
- Loop — a cut across a ring of polygons: wheel — how many loops, Shift — by marks, Ctrl — in parallel; LMB cuts, RMB cuts and selects;
- Knife — clicks draw a smooth cut (Esc finishes the curve, Enter cuts), a drag from an empty spot — a straight cut; Ctrl + drag moves a control point, Shift+RMB — menu;
- Plane Cut — drag a line: the mesh is cut by a plane through it (cut, split or delete one side);
- Weld — select and press RMB: weld to a point (onto the vertex under the cursor or to the middle) or in pairs (two edge chains);
- Edge Shaper — a drag over an empty spot: LMB — equal distances between vertices, RMB — Edge Flow, Shift+LMB — onto a plane (three vertices define it), Shift+RMB — into a straight line;
- Smooth EdgeChain — select edges, Shift+RMB — a curve is built along them; move its control points, a click on the curve adds a point; smoothing and alignment are in the settings;
- Mirror — a copy across an axis (the side is found automatically, the seam is welded) or around an axis: Radial, Radial mirror, Radial half ("half a flower"). World or Local axes, Mirror normals, Replace the other side; Virtual symmetry group… gathers meshes into a group with shown but not yet applied symmetry.
Retopology
A high-poly model is marked as a reference (mesh settings → Snapping → reference): the new mesh lies on it, and the model itself cannot be selected in the viewport. You can build the mesh by hand (PolyPen with Snap) or with the tools below.
Topology Ghost — a "ghost" of ready topology over the reference. The source is a mesh whose Snapping block has topology display over references turned on (for example, a mesh from a similar model). The ghost is projected onto the surface of the references (their snapping masks choose the layer) and highlighted: green — lay close, yellow — stretched, red — doubtful. Settings: Reach — how far to look for the surface (in source edges; more for loose clothing), Relax — evening passes without folds in hollows, Density — as in the source or ×2, Trim to the border — trim along the surface's edge, Show the ghost. You build from the ghost with:
- Reveal Brush — brush over the ghost: its polygons under the stroke become real and weld to what is already built (if no mesh is chosen, a new RetopoMesh is created). Size — wheel over geometry, Ctrl+wheel or [ and ];
- PolyPen — it catches on the ghost's vertices and edges; Shift+RMB — the ghost polygon under the cursor.
PatchTool — patches from curves. LMB places a curve's control points on the reference (a double click or Enter finishes), RMB — grab a point and drag or add a point on the curve, Ctrl+RMB — delete. Shift + drag along an open border — a curve along it. Crossing curves (or an open mesh border) close outlines, which are shown filled; Enter creates the patch. Modes: Patch, Loft (curve order — automatic or by clicks), Strip (a strip along the curve, its width and number of polygons across). A curve has an edge count and edge layout (Equal ↔ Match, Adaptive); a patch has Detail to the denser side, the three-sided patch type (Three quads or Converging), Switch zone.
Lobe Brush — for braids. The tool is in development: in version 2.0 its capabilities are still limited.
Normals and mesh cleanup
Normals — selects like Select Cursor and shows normals (Show the normals, line length and opacity). Actions are buttons in the settings:
- Average normals — average normals over a smoothed shape: Sphere, Face (with a Nose slider — how much "game-style" face shading: flat cheeks, a nose shadow) and Smoothness; Hard border — the selection border becomes a hard edge;
- Normals brush — paint averaging with a brush; Averaged — the share (0% erases custom normals, returning standard shading);
- Set the direction — normals of the selected vertices along a world axis, Toward the camera, One common normal (the whole area is shaded as one plane);
- Turn the normals… — the next drag in the viewport turns the normals; Copy from a mesh… — take normals from the mesh you click;
- Reset to standard smoothing — return standard smoothing (hard edges remain).
Optimize — cleanup of the selection (or the whole mesh): weld points at one spot (distance — in the settings or by dragging), remove unused points and polygons of one or two points, merge duplicated polygons. Merge also removes points in the middle of a straight side.
FixMesh — step-by-step repair of the active mesh (degenerate polygons with no area are always removed): Weld points in one place, Remove double walls, Fix non-manifold, Turn each part one way (the polygons of each part are turned the way most of them face), Separate parts as meshes (unconnected parts — for example, upper and lower teeth — become separate meshes). Fix mesh runs the chosen steps, Make manifold — for all selected meshes.
Virtual symmetry
Virtual symmetry is mesh symmetry in the Topology room that is shown but not yet applied. You work on one half (or one segment), and the copies are visible and update immediately; they become real geometry only on command.
Creating. Select meshes and click Virtual symmetry group in the tool window (or Virtual symmetry group… in the Mirror tool settings). A pie menu of symmetry types opens:
- Mirror — a mirror copy across an axis;
- Radial — copies evenly rotated around an axis;
- Radial mirror — around an axis, each copy and its mirror, a kaleidoscope;
- Radial half — around half a turn, "half a flower".
The meshes go into a new group with this symmetry. Its point and axes are the group's point (Transform), and if the group is inside an object — that object's gizmo.
Settings are on the selected group, in the ⧉ Symmetry block:
- Type — the symmetry type;
- Axes (for Mirror) — axes with the side that is kept and mirrored onto the other: X+ / X−, Y+ / Y−, Z+ / Z−. You can turn on several axes — then a copy is made for each of their combinations; clicking again turns an axis off;
- Axis and Copies (for radial types) — the rotation axis through the group's point and the number of copies;
- Weld the seam and Distance — points closer than this distance to the mirror plane are placed on it, and the halves meet without a gap (on Apply the seam is welded);
- ⌖ To a child's local axes — put the group's point and axes onto the gizmo of one of the meshes inside (the meshes themselves do not move).
Applying. ✔ Apply to the object turns the copies into the meshes' own geometry: the seam is welded, polygons on the other side are deleted, the group remains, and its symmetry goes away. ✕ Remove the symmetry keeps only the original. The same is in the pie menu if you click Virtual symmetry group with a group selected: there you can also change the symmetry type.
This is not the same as Symmetry (Shift+X): Shift+X mirrors vertex edits within one mesh, while virtual symmetry shows copies of whole meshes.
Hotkeys and pie menus
The hotkey manager opens with a button in the top right corner, next to the inspector and the FAQ. On the left are sections, at the top is a search by action or key.
Action keys are split into sections: Tools, Gizmo, Pie menus, View, Selection & visibility, Edit, Files. Click an action's key and press the new combination (Esc — cancel). Changed keys are marked, with the standard value shown next to them. Keys are bound to physical buttons, so they work in any keyboard layout. Esc and End cannot be assigned. A few keys are fixed: a short press of H — hide / show, holding H — the hide menu, holding B — smoothness (in Topology — Soft Selection), ~ — help on what is under the cursor.
Keys on buttons (End) — a key can be assigned to any button or tool in the window: hover over it, press End, then the combination you want. Such keys are collected in this section.
Pie menus. The program has its own menus: tools (hold Space), the main menu (Shift+RMB), the hide menu (hold H) and the Topology edit menu (Ctrl+RMB). Their keys are set in the Pie menus section, and the mouse buttons for the main menu and the edit menu in the Mouse & camera section.
Pie menus of my own — your own pie menus: up to eight actions under a key of your own (hold — release toward an action, or click it). + New pie creates a menu. A click on a slot in the ring — choose an action for it, RMB — clear, dragging around the ring — swap places. While the window is open, you can drag any program button straight from its interface onto a slot. Its key — the menu's key, Delete this pie — delete.
Mouse & camera — camera control: the program's standard scheme (Alt + LMB / MMB / RMB, MMB — pan), as in Blender, Maya or 3ds Max, or your own — with separate buttons for orbit, pan and zoom. Shift while orbiting snaps the camera to the nearest standard view; the wheel always zooms. Orbit — Turntable (up stays up) or Trackball (free, with roll). Here too are the mouse buttons for pie menus.
Presets & reset — a preset stores all keys, keys on buttons, your own menus and camera control: 💾 Save the preset to a file… and 📂 Import a preset… move the settings to another computer. Reset the action keys to the standard returns the standard action keys, ⟲ Restore factory settings — everything at once.
Download [Win\Linux]
stylized anime character
anime hair
hair modeling
retopology