Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions docs/Features/3D-Layers.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,10 @@ Prepared splat runtime metadata, native splat rasterization, preview, nested com
- Supported import formats are `.obj`, `.gltf`, and `.glb`.
- Model clips are automatically marked `is3D: true` and cannot be switched back to 2D.
- Models are auto-centered and normalized to fit the viewport.
- Default lighting is Ambient plus Directional lighting.
- glTF / GLB base color textures are loaded from data URIs, external image URIs, or embedded bufferViews when `baseColorTexture` and `TEXCOORD_0` are present.
- Textured glTF / GLB materials render unlit in the native pass, matching scan/photogrammetry assets better than the simple fallback directional light.
- GLB sequences normalize every frame against the first renderable frame's bounds and preload nearby playback frames, avoiding per-frame center/scale jumps and visible current-frame loading flicker.
- Untextured models use ambient plus directional fallback lighting.
- The Transform panel exposes a wireframe debug toggle for model clips.
- Imported models use a native runtime/cache path.

Expand Down Expand Up @@ -94,13 +97,13 @@ Camera rotation keyframes interpolate through the shortest angular path so timel

## Gaussian Splats

Gaussian splat clips are imported through the SuperSplat-compatible `@playcanvas/splat-transform` reader path. Supported scene formats include `.ply`, `.compressed.ply`, `.splat`, `.ksplat`, `.spz`, `.sog`, `.lcc`, and zipped SOG-style `.zip` payloads.
Gaussian splat clips are imported through the SuperSplat-compatible `@playcanvas/splat-transform` reader path. Supported scene formats include `.ply`, `.compressed.ply`, `.splat`, `.ksplat`, `.spz`, `.sog`, `.lcc`, and zipped SOG-style `.zip` payloads. Plain point-cloud PLY files without gaussian scale properties fall back to the local point-cloud conversion path.

- Clips are created as `is3D: true`.
- The Gaussian tab exposes the native renderer status together with `maxSplats`, `sortFrequency`, `splatScale`, `orientationPreset`, `nearPlane`, and `farPlane`.
- Gaussian splats participate in scene cameras, object transforms, object-level effectors, preview, nested compositions, export, preload, and readiness checks through the same native shared-scene path.
- Realtime splat rendering uses a worker-backed back-to-front order buffer based on the SuperSplat/PlayCanvas sorter approach. Precise export can still fall back to the existing GPU sort path.
- Sequence splats follow the same shared runtime contract and are no longer treated as a permanent legacy-only scene path.
- Sequence splats follow the same shared runtime contract and preload nearby frames without replacing foreground playback with repeated loading overlays.
- The Transform tab now exposes normal object transforms for gaussian splats. Scene navigation lives on camera clips.
- Large gaussian splats show viewport loading progress during project restore, URL fetch, parser work, normalization, and GPU upload.

Expand Down Expand Up @@ -149,6 +152,7 @@ If you see avatar-specific code paths in the renderer or AI tooling, treat them
The Transform tab is context-sensitive:

- For normal 3D layers, it shows position, scale, rotation, opacity, blend mode, and 3D toggles.
- 3D object position fields use scene units. Regular 2D clips still display composition pixel units.
- For camera clips, it becomes scene-navigation controls.
- For gaussian splats, it now behaves like a normal 3D object transform surface plus 3D effector toggle.
- The `Speed` field is explicitly marked WIP in the UI.
Expand Down
29 changes: 23 additions & 6 deletions docs/Features/Media-Panel.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

[← Back to Index](./README.md)

Import, organize, and manage media assets with folder structure, proxy generation, and dual view modes.
Import, organize, and manage media assets with folder structure, proxy generation, and three view modes.

---

Expand Down Expand Up @@ -122,15 +122,15 @@ When supported (Chrome/Edge):

## View Modes

The panel supports two view modes through a single header toggle button that swaps between list and grid icons. The selected mode is persisted in `localStorage`.
The panel supports three view modes through the header mode control. The selected mode is persisted in `localStorage`.

### List View (default)
### Classic View (default)
- Table layout with sortable, reorderable columns
- Nested folder tree with expand/collapse arrows
- Column headers for sorting and drag-to-reorder
- Resizable name column (120px - 500px range, saved to localStorage)

### Grid View
### Icons View
- Thumbnail grid with file names below each item
- Folder navigation via breadcrumb bar
- Double-click folders to navigate into them
Expand All @@ -139,6 +139,22 @@ The panel supports two view modes through a single header toggle button that swa
- Duration badge overlay on video and composition thumbnails
- Item count badge on folder thumbnails

### Board View
- Board canvas grouped by Media Panel folders; every folder appears as a group, including empty folders
- Mouse wheel zooms around the cursor; left-dragging the board or a node pans the board
- Items inside each folder snap to a fixed slot grid
- Right-dragging nodes reorders the selected items in the target folder grid; dropping onto another folder group moves them there
- Ctrl/right-drag starts a marquee selection; right-clicking opens the normal Media Panel context menu
- Media, compositions, text, solids, meshes, cameras, and splat effectors appear as board nodes
- Board order and viewport are saved into the project UI state, with `localStorage` as the live-session fallback
- Drag files or folders from the OS onto a group to import directly into that folder
- Drag existing Media Panel items onto groups to move them between folders
- Use the small handle on a node to drag that item to the timeline with the same drag payloads as Classic and Icons view
- The board uses the same Add dropdown and context menu as Classic view; new folders appear immediately in Classic, Icons, and Board view
- The **AI** board action opens the existing AI Video panel; generated results still import through the normal Media Store path

Board pan and reorder previews use imperative CSS transforms and commit final order only on mouse-up/drop. This avoids re-rendering the Media Panel and writing `localStorage` on every pointer move, which keeps board interaction responsive while heavy preview scenes or splat renders are active.

---

## Source Thumbnail Cache
Expand Down Expand Up @@ -285,7 +301,7 @@ Toggle proxy playback mode via `proxyEnabled` / `toggleProxyEnabled()`:
- Click and drag on empty space in the item list to draw a selection rectangle
- 4px movement threshold before marquee activates
- Hold **Ctrl/Cmd** while marquee selecting to add to existing selection
- Works in both list and grid view modes
- Works in Classic and Icons view modes

### Label Colors
16 AE-style label colors assignable to any item (files, folders, compositions, text, solids):
Expand Down Expand Up @@ -330,7 +346,7 @@ Right-click on items or empty space for context options.

## Media Properties

### Column Display (List View)
### Column Display (Classic View)
The media list displays items in a table with the following columns:

| Column | Description | Example |
Expand Down Expand Up @@ -466,6 +482,7 @@ Media references are saved with the project file, while IndexedDB keeps the hand
- File metadata (name, type, dimensions, duration, codec, etc.)
- File handles (for reload on next session)
- Folder structure
- Media Panel view mode, Board viewport, and Board slot order
- Composition state with timeline data
- Text items and solid items (via localStorage)
- When present, `projectPath` points at the copied `Raw/<name>` file and is used for automatic relinking
Expand Down
Loading
Loading