Skip to content

Commit 29110b7

Browse files
AlexZ005claude
andcommitted
[docs] v1.4.0: animation, snapping, and the mesh/UV tool changes
New pages: - animation.md - the whole authored-animation feature: clips and channels, the dope sheet and graph, the transport, the three different timing controls, key editing and navigation keys, auto-key, presets, markers, onion skin, what replicates, and the glTF bake (with the look channels named as the exception). - snapping.md - grid vs element snapping, the five targets, align to normal, and the picked snap origin. - nodes/playanim.md, nodes/animfinished.md, nodes/animmarker.md, nodes/animstate.md. Updated: - mesh-editing.md - apply-and-adjust, tools vs operations, the per-tool parameter sets, the new edge/vertex/face operations, proportional editing in all three modes with the radius ring, the pivot section, the toolbox layout, and the KEYMAP CORRECTION: Tab cycles element modes and 1/2/3 stay the gizmo transform modes. - uv-editor.md - move/rotate/scale modes, the modal grab, the arrow keyboard in texture pixels, keyboard picking, the placeable origin. - controls.md - the same keymap correction, floating-window sizing and the double-click reset, a snapping pointer. - saving.md - restore automatically. - index.md + mkdocs.yml nav. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent 064646c commit 29110b7

12 files changed

Lines changed: 470 additions & 13 deletions

‎docs/animation.md‎

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
# Animation
2+
3+
Give any object a **clip**: a named animation made of keyframes. Open a door, run a lift, spin a turntable, blink a light. Clips are stored with the object, replicate to everyone in the session, play on a shared clock, and export with your glTF.
4+
5+
!!! info "Two different things called animation"
6+
This page is about animation **you author** — keys you place on a timeline. A model you *import* can also arrive with its own baked clips (a walk cycle from a rigged character); those play from the **Animation** section of the object's properties, and the [Play Animation](nodes/playanim.md) node drives either kind.
7+
8+
## Opening the timeline
9+
10+
Select an object, then open the **+ Animation** tab — it sits with Flow and the UV editor in the bottom dock, and undocks into a floating window with the ⧉ button.
11+
12+
The window has three parts:
13+
14+
| Part | What it is |
15+
|---|---|
16+
| **Clip list** (left) | Every clip on the selected object. **Add** creates one; the ✎ renames; drag the divider to resize the list. |
17+
| **Timeline** (centre) | The keys themselves — a *dope sheet* of channel rows, or a *graph* of curves. |
18+
| **Navigator** (above the timeline) | The whole clip at a glance, with the visible window as a thumb — drag it to pan. |
19+
20+
## Clips, channels and keys
21+
22+
A **clip** owns a length, a loop mode (*once*, *loop* or *ping-pong*) and any number of **channels**. A channel is one animatable property; **Add channel** lists the ones that apply to the object you picked:
23+
24+
| Group | Channels |
25+
|---|---|
26+
| **Transform** | `pos.x/y/z`, `rot.x/y/z`, `scale` (uniform) or `scale.x/y/z` |
27+
| **Visibility** | `visible` — a *stepped* channel: it holds its value until the next key instead of fading |
28+
| **Look** | `opacity`, `color.r/g/b`, `metalness`, `roughness`, `emissive` |
29+
| **Lights** | `light.intensity` |
30+
31+
A **key** is a value at a time. Click a channel row at the playhead to add one; drag it to move it; <kbd>Del</kbd> removes the selection.
32+
33+
!!! tip "Rotation turns around the object's origin"
34+
A door swings on its hinge only if its **origin** sits on the hinge. Set it from the object's properties (*Transform ▸ Origin*) before you key the rotation — the animation follows it.
35+
36+
## The transport
37+
38+
| Control | Does |
39+
|---|---|
40+
| ▶ / ⏸ | Play or pause **on every peer** |
41+
| ◀ | Play backwards from the playhead |
42+
| ⏹ | Stop and return to where playback started |
43+
| ⏮ / ⏭ | Jump to the start / end of the clip |
44+
| **A** / **B** | Set the loop start / end — playback stays inside that window while you work on one part |
45+
| **Speed** | Playback rate. It changes nothing in the data |
46+
| **Fit** | Frame the whole clip |
47+
48+
## Timing: three separate things
49+
50+
These are deliberately not the same control, because collapsing them means giving a door more room silently makes it slower:
51+
52+
| You want | Use |
53+
|---|---|
54+
| The clip to be **longer or shorter** (keys stay where they are) | the clip **length** field |
55+
| The movement itself **stretched or squashed** | **Retime** — scales every key time |
56+
| It to **play** faster or slower, changing no data | the **speed** control |
57+
58+
Each clip also has its **fps** — what its key times mean, and the grid the arrow keys step on — and an optional **step**, which samples the clip on a coarser grid for a deliberately stepped, "on twos" look.
59+
60+
## The dope sheet and the graph
61+
62+
Switch with the sheet / graph toggle:
63+
64+
- **Dope sheet** — one row per channel, keys as diamonds. Best for timing.
65+
- **Graph** — the actual curves. Best for *how* a movement feels.
66+
67+
In the graph, each key carries the **easing** of the segment that follows it. Drag its tangent handles right on the curve, or type the numbers in the pad. Handles are allowed to overshoot past the value — that overshoot is what makes a bounce read as a bounce.
68+
69+
## Selecting and editing keys
70+
71+
| Action | How |
72+
|---|---|
73+
| Select | Click a key; **Shift+click** adds |
74+
| Box / lasso select | Drag on an empty part of the plot (the toolbar switches which) |
75+
| Add the key under the playhead | <kbd>Ctrl</kbd>+<kbd>Space</kbd> |
76+
| Drop the selection | <kbd>Esc</kbd> |
77+
| Move / scale the selection | <kbd>1</kbd> / <kbd>2</kbd>, then <kbd>Shift</kbd>+arrows (X = time, Y = value) |
78+
| Grab with the pointer | **Middle-click** — the keys follow the cursor, click or <kbd>Enter</kbd> commits, <kbd>Esc</kbd> puts them back |
79+
| Copy / paste / duplicate | <kbd>Ctrl</kbd>+<kbd>C</kbd> / <kbd>V</kbd> / <kbd>D</kbd> |
80+
| Mirror in time | <kbd>M</kbd> |
81+
| Delete | <kbd>Del</kbd> |
82+
83+
The clipboard is held **by channel** and relative to the earliest key copied, so a paste works across clips and across objects, creating any channel the target is missing.
84+
85+
## Navigating
86+
87+
| Action | How |
88+
|---|---|
89+
| Step the playhead by a frame | ← / → (<kbd>Ctrl</kbd> ×10, <kbd>Shift</kbd> ×100) |
90+
| Jump key to key | <kbd>Alt</kbd>+← / → |
91+
| Zoom | Wheel (up = in), or the ± buttons |
92+
| Pan | Right- or middle-drag, <kbd>Shift</kbd>+wheel, or the navigator thumb |
93+
94+
## Auto-key
95+
96+
Switch **Auto-key** on and posing the object records it: drag the gizmo or type a number in the properties panel and a key lands at the playhead, creating the channel if it does not exist yet. Switch it off and the object goes back to being just an object.
97+
98+
## Presets
99+
100+
**Door**, **Drawer**, **Elevator**, **Turntable**, **Pulse** and **Blink out** drop a finished clip onto the selected object — a starting point you then retime and re-ease. Door and Drawer expect a sensible **origin** (see the tip above).
101+
102+
## Markers
103+
104+
Name a moment inside a clip — *"footstep"*, *"latch"*, *"dust"* — and the [Animation Marker](nodes/animmarker.md) node fires as the playhead crosses it, on every peer. Add one at the playhead from the marker row; double-click to rename; ✕ removes it.
105+
106+
Markers ride with the clip, so they save, replicate and undo with it.
107+
108+
## Onion skin
109+
110+
Switch **Onion skin** on to see faint ghosts of the object at the keys either side of the playhead — the classic way to judge spacing. It is a local view setting: your peers do not see your ghosts.
111+
112+
## Everyone sees the same thing
113+
114+
Both halves replicate. The **data** (clips, keys, markers) syncs latest-wins, and the **transport** (which clip is playing, from when, at what speed, inside which A/B window) rides the session's synced clock, so every peer evaluates the same pose at the same moment. Someone joining late receives all of it.
115+
116+
Every gesture is **one undo step** — a drag of twelve keys undoes as one, not twelve.
117+
118+
## Driving clips from the flow graph
119+
120+
| Node | Does |
121+
|---|---|
122+
| [Play Animation](nodes/playanim.md) | Play, stop, restart or toggle a clip — wire *On Click* to it and a door opens for everyone who sees it clicked |
123+
| [Animation Finished](nodes/animfinished.md) | Pulses when a *once* clip reaches its end — hand off to a sound, a counter, or the next door |
124+
| [Animation Marker](nodes/animmarker.md) | Pulses as a named marker passes |
125+
| [Animation State](nodes/animstate.md) | Reads progress, playing, position, duration or remaining as a number |
126+
127+
## Saving and export
128+
129+
Clips are part of the object, so they travel in your `.tpscene` files and autosaves. Saving a **glTF** samples every clip into real keyframe tracks, so other tools play them back — with one exception: the **look** channels (opacity, colour, metalness, roughness, glow, light intensity) are not part of what glTF animation can carry, so they stay in the app.

‎docs/controls.md‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ Transform rows on a multi-selection drive the selection's **origin** rather than
3333
| <kbd>2</kbd> | Rotate |
3434
| <kbd>3</kbd> | Scale |
3535

36-
Snapping (grid step, rotate degrees, scale step, snap-to-surface) is configured from the right-click menu under **Snapping**.
36+
Snapping is configured from the right-click menu under **Snapping** — grid steps and snap-to-surface, plus snapping onto real geometry: vertices, edges, faces and other objects, optionally turning the object onto the surface it lands on. See [Snapping](snapping.md).
3737

3838
!!! note "Inside mesh edit"
39-
While an [Edit Mesh](mesh-editing.md) session is open, <kbd>1</kbd>/<kbd>2</kbd>/<kbd>3</kbd> switch between vertices, edges and faces instead.
39+
<kbd>1</kbd>/<kbd>2</kbd>/<kbd>3</kbd> keep meaning Move / Rotate / Scale inside an [Edit Mesh](mesh-editing.md) session — they are what you reach for mid-edit. The element modes (vertices, edges, faces) are on <kbd>Tab</kbd> and <kbd>Shift</kbd>+<kbd>Tab</kbd>.
4040

4141
### Each object's origin
4242

@@ -53,6 +53,10 @@ The origin travels with the object: it replicates, saves, undoes, and is baked i
5353

5454
Every number in the app is the same control: **drag** it to scrub, or **type** into it for live updates. <kbd>↑</kbd>/<kbd>↓</kbd> step by one unit — hold <kbd>Ctrl</kbd> for ×10, <kbd>Shift</kbd> for ×100 — and <kbd>Esc</kbd> reverts what you typed.
5555

56+
### Floating windows
57+
58+
The toolboxes, the Explorer, the flow and animation windows and the panels all behave the same way: drag the header to move, drag the bottom-right corner to resize. A window can never be sized past the edge of the screen — the resize corner always stays reachable — and **double-clicking** the corner resets it to its default size while leaving it where you parked it. Size and position are remembered per window.
59+
5660
## Keyboard shortcuts
5761

5862
Shortcuts are inert while you type in a text field and while play mode owns the keyboard. The same list is shown in **Settings ▸ Shortcuts** (<kbd>Ctrl</kbd>+<kbd>/</kbd> opens it directly).

‎docs/index.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ You build scenes from primitives, imported models and packs, wire behavior with
2727
- [Packs](packs.md) — ready-made model and audio collections you can browse and import.
2828
- [Prefabs](prefabs.md) — save any object as a reusable asset.
2929
- [Mesh Editing](mesh-editing.md) — vertices, edges and faces: extrude, bevel, knife, loops and mirroring.
30+
- [Snapping](snapping.md) — line things up: grid steps, surfaces, and snapping onto real geometry.
3031
- [UV & Textures](uv-editor.md) — unwrap a model, paint on it, and give parts of it their own materials.
32+
- [Animation](animation.md) — keyframe clips with a timeline, curves, markers and onion skin.
3133
- [Physics & Simulation](physics.md) — mass, joints, dropping and throwing objects.
3234
- [Terrain & Sculpting](terrain.md) — add ground and shape it with a brush.
3335
- [Saving & Sessions](saving.md) — the `.tpscene` bundle format, GLTF export, sessions and autosave.

0 commit comments

Comments
 (0)