Files
Toastconcern--FrameStudio/docs/studio-guide.md
T
ToastconcernandClaude Opus 5.5 6d0b4fcd2f v0.2.0: splats, copy/paste, faster homes, seat facing, and a full bug sweep
Frame Studio
- Gaussian splats (PLY, SPZ v2-v4), PLY vertex colours, panorama skies
- Copy, cut, paste and duplicate for objects, splats and world items
- Walkable-area rebake moved off the UI thread; viewport one frame sooner;
  refresh-locked pacing (FS_PACE=timer for the old one)
- Fixed: bundle thumbnail use-after-free crash, auto-save deleting
  environments, saves into scratch copies, edits lost on non-ASCII paths,
  unopenable manifests with inf/nan, bundle save data loss, opening a home
  marking it changed, gizmo NaN, long paths, many malformed-file crashes
- Updater verifies sha256, journals the swap and never leaves the exe missing

Frame Home
- Seats turn you to face their way
- Draw batching (Hand Tutorials up to ~20% less GPU time), cut-out EQUAL pass,
  late head-pose read before submit
- Proper queue-family hand-over to the compositor layer; layer descriptor
  generations and seqlocked slots; structural SPIR-V check
- Fixed: hangs/crashes on damaged .fenv files and shaders, render-pass
  validation error, sync hazard in the foveation smoothing pass, unverified
  update downloads, half-done installs

Tests: tests_loco/env_share/spv_check wired into CMake (FRAME_TESTS) and CI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VsaXGU27gsrXjDoFtyFJP9
2026-10-25 13:15:07 -05:00

207 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Frame Studio guide
Frame Studio opens a home, shows it the way the Steam Frame draws it, and lets you change it: move, hide or delete
its objects, decide where you can walk, add spawn points, seats and sounds, and save it as a `.fenv` environment for
the headset. This guide walks through the window and the everyday tasks. To install Studio, see
[getting-started.md](getting-started.md).
## The window
Frame Studio is laid out the way Blender works: the window is split into **areas**, each showing one editor, with
a header along its top.
```
┌────────────────────────────────────────────────────────────────────────────┐
│ ◎ File Edit Headset Window Help │ Layout Walking Headset │ home name │ top bar
├──────────────────────────────────────────────────────┬─────────────────────┤
│ ▣▾ Arrange▾ View Select Add Object Global▾ ◈ ◯◯◯▾ │ ☰▾ As in the File▾ 🔍 │
│ ┌──┐ ● home › selection (axes) │ ▾ Root │
│ │✥ │ 🔍 │ ▾ folder 👁 │
│ │⟳ │ 3D VIEWPORT ✋ │ object 👁 │ Outliner
│ │⤢ │ 👤 ├─────────────────────┤
│ │✎ │ ⤢ │ 🔧▾ Object │
│ └──┘ │ ■ │ ▾ Object │
│ (toolbar: T) (sidebar: N) ▸ │ 👣│ Location … │ Properties
├──────────────────────────────────────────────────────┤ ▣ │ ▾ Surface │
│ 🕐▾ Playback▾ ⏮ ▶ ⏭ 12.0 / 60.0 s 🔊 │ ▤ │ … │
│ 0 5 10 ▮12.0 15 20 25 30 … │ ⌂ │ │ Timeline
├──────────────────────────────────────────────────────┴─────────────────────┤
│ 🖱 Select 🖱 Rotate View 🖱 Context Menu / Fly 182 objects | 60 fps │ status bar
└────────────────────────────────────────────────────────────────────────────┘
```
| Area | What it's for |
|---|---|
| **3D Viewport** | the home as the headset draws it. Its header has the mode (Arrange or Draw Floor), the **View**, **Select**, **Add** and **Object** menus, the gizmo's orientation (Global or Local), the world layer and the shading (Wireframe, Solid, Material, more in ▾). Inside it: the toolbar (T), the axes and navigation buttons, and the sidebar (N) |
| **Outliner** | everything in the home: its objects (as the file lays them out, or by kind) and its world items, with an eye to hide each |
| **Properties** | settings, in tabs down its left edge: **Object** (what you selected), **World** (where you can walk), **Environment** (name, picture, sound, headset settings), **Bundle**, **Headset** |
| **Timeline** | plays the home's animations and sound; click or drag in it to scrub through the loop |
**Rearranging areas.** Drag the gutter between two areas to resize them. To move an area, drag the **editor button**
at the left of its header (the icon with ▾) and drop it on another area: onto its middle to stack them as tabs, or
onto an edge to split that area. Click the editor button to show a different editor in that area. **Window > Reset
Layout** puts everything back; **Ctrl+Space** fills the window with the 3D Viewport until you press it again.
**Workspaces.** The tabs in the top bar switch between layouts made for a job: **Layout** (everything), **Walking**
(a big view with Properties on the World tab) and **Headset** (Properties on the Headset tab). Studio remembers
your layout between runs.
**Themes.** **Window > Theme** recolours the whole interface, from dark to light, using the palette from the MetaDB
site. The choice is saved and comes back next time.
## Opening a home
- **File > Open...** (Ctrl+O), or drop a file on the window. It opens:
- a Meta home (`.apk`). A *footprint* (the room) and its *vista* (the world outside) are opened together: pick both
in the file dialog, or open the footprint and Studio offers the vistas beside it;
- a Frame environment (`.fenv`);
- models from Blender or Unity (`.glb`, `.gltf`, `.fbx`, `.obj`).
- **File > My Environments** lists what you have saved; **File > Open Recent** lists what you had open.
- **File > Import > Vista...** gives a footprint its vista; **File > Import > Models...** places models into the home.
- A big home asks after a while whether to keep waiting; **Stop Loading** cancels.
## Moving around in the 3D view
| Do this | With |
|---|---|
| Orbit | middle-drag, Alt + left-drag, or drag the axes gizmo in the top-right corner |
| Snap to a view (top, front, side...) | click an axis ball on the gizmo (or the Numpad: 1/3/7 front/side/top, Ctrl for the opposite) |
| Pan | Shift + middle-drag |
| Zoom | mouse wheel, or Ctrl + middle-drag |
| Fly | hold the right mouse button + W A S D, Q / E down / up (wheel: speed, Shift: 4x) |
| Look from where you'd stand | the person button under the axes, P, or Numpad 0 |
| Frame the selection / everything | F or Numpad . / Home (or double-click a row in the Outliner) |
Press **F1** (Help > Controls) for the full list.
## Selecting and editing objects
1. Click an object in the 3D view or the Outliner. Properties switches to its **Object** tab.
2. Pick a tool in the toolbar on the left of the view (or press its key) and drag the gizmo:
- **Move** (G), **Rotate** (R), **Scale** (S). Hold Ctrl to snap.
- **Global** / **Local** in the header switches the gizmo between the world's axes and the object's own.
3. Or type exact values in **Location**, **Rotation** and **Scale** in the Object tab.
4. In the same tab: **Visible**, **Reset** (back to where the home had it), **Only This** (hide everything else,
I), and **Delete** (X).
The Outliner's eye buttons hide objects or whole folders. **Select > Reveal Hidden** (Alt+H) brings them back. Every
change can be undone with Ctrl+Z and redone with Ctrl+Shift+Z.
## Where you can walk
Frame Home works out where you can walk from the home's shapes: floors you can reach from the start, under enough
headroom, and nothing in the way. The 3D view shows it: green is walkable, blue are small gaps it bridges, orange are
edges, grey are floors you can't reach. **W** shows or hides it.
- The **World** tab shows the area's size and its settings (step height, headroom, body radius). The presets
**Open**, **Standard** and **Careful** set them for you.
- **Object > Auto-generate Walkable Surfaces** (in the 3D Viewport's header) gives every mesh a surface: walkable where it's flat, blocking where
it's steep. A summary shows what it did; **Undo** in it takes back just that run.
- Per object, the **Surface** buttons in the Object tab decide what it is for the player:
**Auto** (decided by its shape), **Surface** (walk on its flat parts, bump into its steep ones),
**Collider** (you can't walk through it), **Walk through** (ignored). Right-clicking an object offers the same.
- **Draw Floor** (B, the brush in the toolbar, or the **Draw Floor** mode in the header): select an object, then drag over it to paint walkable floor
onto it, even on furniture. Shift+drag erases; [ and ] change the brush size. **Fill Flat Faces** paints every face
of it that's flat enough at once.
## World items
**Add** (in the 3D Viewport's header, or Shift+A over the view) places items where the camera looks:
| Item | What it does on the headset |
|---|---|
| **Spawn Point** | where you start, facing the way it faces |
| **Seat** | a place to sit: point at it and pull the trigger; you sit facing the way its arrow points; its "stand up here" ring is where you get up |
| **Teleport Hotspot** | a spot the teleport arc snaps to |
| **Surface** | a box you can scale into a floor, a step or a wall |
| **Invisible Wall** | stops you; never drawn on the headset. Scale and turn it to fit; where it stands is no longer walkable |
| **Gravity Zone** | inside it, "down" is the zone's own: a direction, or any surface you stand on |
Select an item to move it with the gizmo or type its values in the Object tab. **Object > Clear World Layer**
removes them all.
Meta's own homes have invisible walls too, round their play space (Cascadia, Space Station, Desert Terrace, Haven).
Frame Studio and Frame Home read them as invisible walls, so you can't walk out past them. Select one in the Outliner
to delete it, or set its **Role** to Surface, if you want to go further in that home.
## The environment: name, picture, sound
The **Environment** tab, top to bottom:
- **Environment**: the name it shows on the headset, its picture (**Choose...**, or a view taken when you save), and
what it's made of.
- **Sound**: the home's own ambience and a background sound of your own (MP3, Ogg, Opus, WAV or FLAC), with their
volumes. Drop a sound file on the window to add it. **Save Its Sound...** keeps the home's ambience as an Ogg file.
- **World settings**: its own headset settings: resolution, foveation, MSAA and frame rate.
**Calculate Best Settings** walks it on the headset and keeps the sharpest settings that hold 120 fps.
## Saving
| Command | Does |
|---|---|
| **File > Save** (Ctrl+S) | saves into **My Environments** (`Documents/Frame Studio/Environments`); a saved `.fenv` saves into itself |
| **File > Save As...** (Ctrl+Shift+S) | saves a copy anywhere; Save goes there from then on |
| **File > Auto-saved Versions** | every 5 minutes with unsaved changes, a version is kept (the last 10) |
| **File > Faster Saving** | packs on all CPU cores: about 3x quicker, about 1% bigger |
| **File > Leave Out What Can't Be Seen** | drops geometry nobody can see from anywhere they can stand, so the headset draws less |
| **File > Revert to Original** | the home as it shipped, without your changes |
Saved environments are *baked*: everything the headset needs, already in its own format. See
[environments-and-fenv.md](environments-and-fenv.md).
## Bundles
A bundle (`.fbundle`) packs several saved environments into one file, to share or install together. Use the
**File > Bundle** or the **Bundle** tab in Properties: **New Bundle**, add environments (the open one, from My Environments, or any
`.fenv`), **Save Bundle...**, and **Install on Steam Frame...**. Opening a `.fbundle` lists what's in it; double-click
one to open it, or **Unpack into My Environments**. See [bundles.md](bundles.md).
## Sending it to the headset
The **Headset** tab (or the **Headset** menu):
- **Send to Frame** makes the open environment the headset's current one, saved or not.
- **Install Frame Home** puts Frame Home itself on the headset, with the environments and bundles you list under
**Environments to install**. **Restore SteamVR's Environment** takes it off again.
- **This PC** (Linux): **Install Frame Home on This PC** makes your environments SteamVR's environment on the
computer Studio runs on.
- The **Headset** field is the headset's address: an SSH alias such as `frame`, or `steamos@<address>`.
See [headset-setup.md](headset-setup.md) and [install-frame-home.md](install-frame-home.md).
## Settings and tools
- **Edit > Preferences...**: Studio's own (3D view resolution, anti-aliasing, texture size and filtering) and the
headset's (read from and written to the Frame).
- **Viewport shading** (the buttons and ▾ at the right of the 3D Viewport's header): Material (as the headset draws
it), Solid, Wireframe, and in ▾ **GPU Cost**, **Overdraw** and **Leave Out** (hide whole kinds of objects).
- **Window > Home Report...**: what the home is made of and what may be slow.
- **Headset > Headset Debug...**: the same views, on the headset.
- **View** (in the 3D Viewport's header): the toolbar and sidebar, framing, the numpad viewpoints, **Local View**
(show only the selection) and **Show Everything**.
- **Edit > Menu Search...** (F3): find any command by typing part of its name.
## Updates
Studio checks GitHub for a newer **Latest build** a few seconds after it starts and every 6 hours after that. When
there is one, an orange **Update Available** button shows in the top bar. Click it, then **Download and Install**:
Studio downloads the build for your computer and puts it in place of the copy you're running. **Restart Now** opens
the new one (it asks about unsaved changes first). **Help > Check for Updates...** checks right away.
If Studio's folder can't be written to (Program Files, for example), nothing is changed and the window offers the
download page instead. A copy you built yourself doesn't update itself.
## Keyboard shortcuts
| Key | Does | Key | Does |
|---|---|---|---|
| Ctrl+O | open | Ctrl+S | save |
| Ctrl+Shift+S | save as | Ctrl+Z / Ctrl+Shift+Z | undo / redo |
| G / R / S | move / rotate / scale tool | B | draw floor |
| Shift+A | add menu at the mouse | X | delete (asks first); Delete: right away |
| H / Alt+H | hide / reveal hidden | Alt+A, Esc | select nothing |
| Numpad . / Home | frame selected / all | Numpad 0, P | player view |
| Numpad 1 / 3 / 7 | front / right / top (Ctrl: the other side) | Numpad /, I | show only selected |
| W | world layer | Space | play / pause |
| T / N | toolbar / sidebar | Ctrl+Space | maximize the 3D Viewport |
| F3 | menu search: every command by name | F1 | controls |