Skip to content

Commit b69eb7c

Browse files
AlexZ005claude
andcommitted
[docs] @@ver@@: VR terrain sculpt, world-grab snapping + World grab snapping setting, dollhouse teleport, VR Add ▸ Terrain and Add ▸ Architecture ▸, knife polyline cuts (two-click cut ending inside the mesh ends at the click), live symmetry, Smart unwrap (xatlas) module; What's new (37-int-128)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
1 parent 0cffd1b commit b69eb7c

11 files changed

Lines changed: 161 additions & 10 deletions

File tree

‎docs/architecture.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ Right-click the viewport ▸ **Add ▸ Architecture** (or type the name into the
1919

2020
Pieces from the Add menu land on the 1 m grid.
2121

22+
### In VR
23+
24+
Since @@VER@@ the headset's radial menu has the same twelve pieces under **Add ▸ Architecture ▸**, with the same names.
25+
Each one lands 3 m in front of you. See [The first ring](vr.md#the-first-ring).
26+
2227
## Editing a piece
2328

2429
Select the piece and open its **Properties**: the **Geometry** section holds every number. Rows that do not apply are
217 KB
Loading
204 KB
Loading
212 KB
Loading

‎docs/index.md‎

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,18 @@ with a contributing guide and an `llms.txt` for coding agents.
2424

2525
## What's new
2626

27+
**@@VER@@ — VR + mesh: sculpt and snap the world from the headset, polyline knife, live symmetry, smart unwrap.** In a
28+
headset, radial menu ▸ **Add ▸ Terrain** drops a terrain in front of you and you [sculpt it](vr.md#sculpting-terrain-in-vr)
29+
with the trigger — Raise, Lower, Smooth and Flatten, the brush sized and weighted on the thumbstick. Grabbing the world
30+
with both grips now [turns it in 15° steps and sticks at 1×, 2×, 5× and 10×](vr.md#snapping-the-world-while-you-grab-it)
31+
(**World grab snapping**, on by default), **Scene ▸ Dollhouse** shows the scene as a model on a table so you can
32+
[point into it and stand anywhere](vr.md#dollhouse-teleport), and **Add ▸ Architecture ▸** has the desktop's twelve
33+
[walls, doors, windows and stairs](architecture.md#in-vr). In [Edit Mesh](mesh-editing.md) the knife cuts along a
34+
[polyline](mesh-editing.md#polyline-cuts) — <kbd>Shift</kbd>+click for each corner, <kbd>Enter</kbd> to finish — and
35+
[live symmetry](mesh-editing.md#live-symmetry) mirrors every edit across X, Y or Z as you make it, in one undo step. The
36+
new [Smart unwrap (xatlas)](modules.md#smart-unwrap-xatlas) module adds **Unwrap ▸ Smart (xatlas)** to the
37+
[UV editor](uv-editor.md#smart-unwrap-xatlas): automatic seams, packed with no overlaps.
38+
2739
**1.27 — world + nodes: sky images, architecture, smarter nodes, particles that trail.** A [sky
2840
image](camera.md#sky-images-hdri) (an HDRI) can now be the scene's sky and its light: objects take its colours, shiny
2941
ones reflect it, water mirrors its clouds and the sun sits where the photo's sun is. Pick **Clear sky**, **Meadow**,
@@ -228,7 +240,7 @@ for your machine [reduces quality or pauses instead of freezing](performance.md)
228240
- [Prefabs](prefabs.md) — save any object as a reusable asset, update every placed copy, sort them into folders and tags.
229241
- [Material Presets](materials.md) — named surface looks, seven built in, saved and shared with your session.
230242
- [Architecture](architecture.md) — walls with doorways and windows, doors that open, and stairs, all from numbers you can change.
231-
- [Mesh Editing](mesh-editing.md) — vertices, edges and faces: extrude, bevel, knife, loops and mirroring.
243+
- [Mesh Editing](mesh-editing.md) — vertices, edges and faces: extrude, bevel, polyline knife, loops, and mirroring live or in one go.
232244
- [Snapping](snapping.md) — line things up: grid steps, surfaces, and snapping onto real geometry.
233245
- [UV & Textures](uv-editor.md) — unwrap a model, paint on it, and give parts of it their own materials.
234246
- [Scene Look (Post-processing)](post-processing.md) — grade the finished frame: ambient occlusion, colour, bloom, grain. Saved with the scene and shared with everyone.
@@ -239,7 +251,7 @@ for your machine [reduces quality or pauses instead of freezing](performance.md)
239251
- [Water](water.md) — tanks, pools, oceans and lava with waves, refraction, caustics, foam and bubbles.
240252
- [Fluid Tank & Jiggle](simulation.md) — particle liquid you can pour, and springy secondary motion.
241253
- [Fluids](fluids.md) — particle water poured into the scene, rivers, chutes and pipes, and wheels that turn it.
242-
- [Terrain & Sculpting](terrain.md) — add ground and shape it with a brush.
254+
- [Terrain & Sculpting](terrain.md) — add ground and shape it with a brush, on the desktop or in a headset.
243255
- [Saving & Sessions](saving.md) — the `.tpscene` bundle format, GLTF export, sessions and autosave.
244256

245257
**The scene**

‎docs/mesh-editing.md‎

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ Icons are for tools; commands that act immediately read as words. Whichever tool
9696
| **Subdivide** | <kbd>S</kbd> | Split the selection into a finer grid, 2×2 per quad. |
9797
| **Bridge** | <kbd>B</kbd> | Build a tunnel between two selected pieces. |
9898
| **Loop cut** | <kbd>C</kbd> | Insert edge loops across the ring your selection lies on (the **cuts** field sets how many). |
99-
| **Knife** | <kbd>K</kbd> | Cut across the mesh on screen — see below. |
99+
| **Knife** | <kbd>K</kbd> | Cut across the mesh on screen, in a straight line or a polyline — see [below](#knife). |
100100
| **Flip normals** | <kbd>F</kbd> | Reverse the winding, for a face that renders inside-out. |
101101
| **Duplicate** | | Copy the selected faces in place. They start exactly on top of the originals — drag them off with the gizmo. |
102102
| **Solidify** | | Give the selected surface thickness — see [below](#solidify). |
@@ -122,7 +122,30 @@ Icons are for tools; commands that act immediately read as words. Whichever tool
122122

123123
Pick **Knife**, click one end of the cut and then the other. A dashed band follows your cursor between the two clicks so you can see where the blade will land; every face the line crosses is split. <kbd>Esc</kbd> drops a cut in progress without leaving the session.
124124

125-
The cut is a line *on screen*, so it slices straight through the model from your point of view — orbit first to line up the angle you want.
125+
The cut is a line *on screen*, so it slices straight through the model from your point of view — every layer under the line, front and back — and the result is always watertight. Orbit first to line up the angle you want.
126+
127+
#### Polyline cuts
128+
129+
Since @@VER@@ the knife cuts along a **polyline**, not only a straight line:
130+
131+
- Click where the cut starts.
132+
- **Shift+click** places each corner (so does <kbd>Ctrl</kbd>+click, or a tap with the touch
133+
[Multi-select](controls.md#selecting-without-a-keyboard) button on). Corners you place on the mesh become real
134+
vertices, and the cut runs along mesh edges between them.
135+
- A plain click on the last point ends the cut. <kbd>Enter</kbd> ends it at the last corner you placed.
136+
- <kbd>Backspace</kbd> takes the last corner back; <kbd>Esc</kbd> drops the whole cut.
137+
- While a cut is pending, the toolbox's **Knife options** show how many points you have placed, with **Back** and
138+
**Cut** buttons — the way to finish a cut on a touch screen.
139+
140+
![A polyline knife cut across the top of a cube: two corners placed, the dashed last leg following the cursor, and Knife options showing 3 points with Back and Cut](img/mesh-editing/knife-polyline.png)
141+
142+
A point within a few pixels of a corner of the face under it snaps onto that corner, and one within a pixel or two of an
143+
edge snaps onto the edge, so a cut does not leave needle-thin triangles. The whole polyline is **one undo step**, and
144+
your peers see the cut as it is committed.
145+
146+
!!! note "Changed in @@VER@@"
147+
A two-click cut that ends **inside** the mesh now ends exactly where you clicked. Before, it ran on to the far corner
148+
of that triangle.
126149

127150
### Solidify
128151

@@ -281,6 +304,32 @@ The *Cleanup* and *Symmetry* sections act on the whole object, not on your selec
281304
!!! tip "Model half of it"
282305
Symmetrize is a one-shot: shape the left side however you like, then mirror it. Faces that straddle the plane are cut cleanly on it, so the two halves join watertight.
283306

307+
### Live symmetry
308+
309+
Since @@VER@@ the **Symmetry** section has a **live symmetry** switch. While it is on, every edit you make is mirrored
310+
across the chosen axis — the same **X / Y / Z** buttons as Symmetrize — from the side you edited:
311+
312+
- Extrude a face on the left and the right gets the same extrusion.
313+
- In **Vertices** mode, dragging a vertex moves its mirror twin with it, live. A vertex on the mirror plane slides along
314+
the plane and never leaves it, so the seam stays closed.
315+
- The side your edit changed wins; **keep + / −** only decides when the edit sits on the plane itself.
316+
- The edit and its mirror are **one undo step**.
317+
318+
![Live symmetry on across X: one face selected on the left with the gizmo on it, and the Symmetry section's mirror, keep, Symmetrize and live symmetry controls](img/mesh-editing/live-symmetry.png)
319+
320+
Turning it on does not change the mesh. If the mesh is not symmetric yet, press **Symmetrize** first — a vertex with no
321+
twin moves alone.
322+
323+
- Only your own edits are mirrored, and only while the switch is on. Undo, redo, **Cancel** and edits that arrive from
324+
peers are applied exactly as they were made.
325+
- The switch is yours alone and is not saved: it is off again the next time you open the app. Peers get the mirrored
326+
geometry like any other edit.
327+
328+
!!! note "Limits"
329+
- Face and edge gizmo drags are mirrored when you let go, not continuously while you drag.
330+
- There is no live symmetry switch in VR yet. Edits you make in the headset are mirrored if the switch was turned on
331+
at the desktop.
332+
284333
## Display
285334

286335
| Toggle | What it does |
@@ -335,6 +384,7 @@ The same list lives behind the **?** button in the toolbox.
335384
| <kbd>B</kbd> / <kbd>F</kbd> / <kbd>X</kbd> | Faces: Bridge / Flip normals / Delete |
336385
| <kbd>F</kbd> | Edges: Fill the hole |
337386
| <kbd>K</kbd> | Faces: Knife |
387+
| <kbd>Shift</kbd>+click / <kbd>Enter</kbd> / <kbd>Backspace</kbd> | Knife: place a corner / end the cut at the last corner / take the last corner back |
338388
| <kbd>L</kbd> | Loop select (faces: again = perpendicular) |
339389
| <kbd>Ctrl</kbd>+<kbd>+</kbd> / <kbd>-</kbd> | Faces: grow / shrink the selection |
340390
| <kbd>W</kbd> | Vertices: weld the selected vertices |

‎docs/modules.md‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,19 @@ drop them on it. All 100 are drawn in **one draw call**. **Blocks: clear** remov
8484
Every player sees the same drop, but each computer simulates the pile itself, so the piles agree closely but not to the
8585
millimetre: the blocks are decoration, not game pieces.
8686

87+
### Smart unwrap (xatlas)
88+
89+
New in @@VER@@. It adds **Smart (xatlas)** to the [UV editor](uv-editor.md#smart-unwrap-xatlas)'s **Unwrap** menu:
90+
automatic seams, each piece flattened, and everything packed into one 0–1 atlas with no overlaps. It is built on
91+
[xatlas](https://github.com/jpcy/xatlas) compiled to WebAssembly, and the `.wasm` ships inside the module's zip, so it
92+
makes no network calls.
93+
94+
It runs on the main thread — about 1–1.5 s for a 10,000-triangle mesh. For module authors calling the backend, it takes
95+
`margin` (the UV editor passes 0.02), `resolution` (the packing raster, 512 by default) and `padding` (in texels,
96+
overriding `margin`); see [registerUnwrapBackend](module-sdk.md#registerunwrapbackend).
97+
98+
xatlas (MIT, Jonathan Young) and xatlas-wasm are credited in the module's `THIRD_PARTY_LICENSES.txt`.
99+
87100
## SDK — writing a module
88101

89102
A module is one default export with a `register(api)` call:

‎docs/settings.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,4 @@ Changes save as you make them — there is no Save button; **Done** closes the w
7676
| Knocked-off idle | new | **Interface ▸ Avatars ▸ Knocked-off idle** — see [Knocked-off idle](avatars.md#knocked-off-idle) |
7777
| Density | new | **Interface ▸ Density** — see [above](#density) |
7878
| Sky image quality | new in 1.27 | **Scene ▸ Performance ▸ Sky image quality** — **Auto** / **Full (1k)** / **Low (headset)**, this device only; see [Sky image quality](camera.md#sky-image-quality) |
79+
| World grab snapping | new in @@VER@@ | **VR ▸ Controls ▸ World grab snapping** — on by default, this device only; see [Snapping the world while you grab it](vr.md#snapping-the-world-while-you-grab-it) |

‎docs/terrain.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ Drag on the terrain surface to sculpt. A ring cursor follows your pointer, huggi
7373

7474
Each brush stroke — from pressing down to lifting the pointer — is **one undo step** (<kbd>Ctrl</kbd>+<kbd>Z</kbd>). While you drag, peers see a live preview several times a second; when you release, the final shape is committed and synced.
7575

76+
Since @@VER@@ you can sculpt terrain from a VR headset too: radial menu ▸ **Add ▸ Terrain**, or select a terrain and
77+
pick **Selected ▸ Sculpt terrain** — see [Sculpting terrain in VR](vr.md#sculpting-terrain-in-vr).
78+
7679
### Sculpting any mesh
7780

7881
The same brush works on **any** mesh, not just terrain: right-click an object ▸ **Sculpt mesh**. The difference is which way the brush pushes — on terrain it moves the surface straight up and down, on a mesh it moves along the surface's own normals, so you can bulge and dent a shape from any angle. **Flatten** pulls toward the plane you first touched and **Smooth** relaxes the surface toward its local average, exactly as on terrain.

‎docs/uv-editor.md‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,25 @@ The result is packed into the square with a small margin, and never stretched un
9797

9898
Unwrap is a registry, not a fixed list: a [module](modules.md) can add a heavier automatic unwrapper — or replace a built-in — and it appears in this menu like the rest. See [Module SDK](module-sdk.md#registerunwrapbackend).
9999

100+
### Smart unwrap (xatlas)
101+
102+
Since @@VER@@ the [Smart unwrap (xatlas)](modules.md#smart-unwrap-xatlas) module adds **Smart (xatlas)** to the Unwrap
103+
menu. Instead of projecting from a direction, it places the seams itself, flattens each piece and packs them all into
104+
the 0–1 square with no overlaps.
105+
106+
1. Install it from **Menu ▸ Modules ▸ Browse ▸ Smart unwrap (xatlas)**. The Unwrap menu picks it up the next time you
107+
open it — no need to reopen the editor.
108+
2. Select a mesh, open the UV editor and pick **Unwrap ▸ Smart (xatlas)**.
109+
110+
![A sphere unwrapped with Smart (xatlas): seams placed automatically, pieces packed without overlaps](img/uv-editor/smart-unwrap.png)
111+
112+
Like the built-in projections, it unwraps only the faces you picked in Edit Mesh if you picked any. It is one undo step,
113+
and your peers get the new mapping.
114+
115+
!!! note "Limits"
116+
- It takes about 0.1 s for a few hundred triangles and about 1–1.5 s for 10,000; the app waits while it works.
117+
- Pieces are never rotated: xatlas turns a piece by mirroring it, and painted text would then read backwards.
118+
100119
## Painting
101120

102121
Pick the **Paint** tool and draw — on the UV map or straight on the model in the viewport. Set the brush **colour** and **size** in the panel.

0 commit comments

Comments
 (0)