URL parameters
Query parameters
| Parameter | Example | Content |
|---|---|---|
data | ?data=https://data.oniyanma.jp/kasado.copc.laz | The point cloud URL to load at startup |
collab | ?collab=wss://host/collab | The sync server for auto-joining a collaboration room |
room | ?room=<uuid> | The room ID (for collab) / pairing code (for relay) |
name | ?name=Yamada | Display name for collaboration (default guest) |
relay | ?relay=ws://localhost:8787 | Connects to the command relay as a viewer at startup |
quality | ?quality=high | low | Overrides the auto-detected per-device render budget |
ui | ?ui=field | A tool-rail configuration preset (below) |
data
The hosting server must support HTTP Range. On a different origin, its CORS setup must include content-range and accept-ranges in Access-Control-Expose-Headers. → Loading data
collab / room / name — the invite link
These three together form the invite link. Whoever opens it joins that room automatically.
https://demo.oniyanma.jp/?collab=wss://oniyanma-demo.pages.dev/collab&room=<uuid>&name=guestDon't build this by hand — use the panel's "Invite link" button, or oniyanma.inviteLink(). Dropping ?collab= means the recipient won't auto-join.
Omitting room falls back to your own room saved in localStorage (a new UUID if there isn't one). → Collaborating
relay / room — the MCP relay
An outbound WebSocket connection is only opened at startup when ?relay= is present. Here room is the pairing code, and must match ONIYANMA_ROOM on the MCP server side (default oniyanma).
http://localhost:5173/?relay=ws://localhost:8787&room=bridge1quality
Overrides the default render budget that comes from device detection (touch points > 1 counts as mobile). Kept around for on-device A/B testing, since devtools aren't available on iPad to compare settings side by side. → Per-device render budget
ui
Narrows which tools show in the tool rail. The default (when omitted) is the full panel with all 7.
https://demo.oniyanma.jp/?ui=fieldfield is a preset for on-site use, narrowing it down to just Nav, Findings, and Measure (a way to absorb the "an inspector needs 3 buttons, a designer needs the full panel" difference without forking the UI). The sidebar's (data / display panel) open/closed state can also be set by the same preset, but there's currently no listing/switching UI for presets — you just pick a known value (field) via the URL.
The hash — view state
#s= carries the current appearance as JSON. That's what the data panel's "Copy share link" produces.
https://demo.oniyanma.jp/#s=%7B%22cam%22%3A%5B…%5D%2C%22color%22%3A%22elevation%22%7D| Key | Content |
|---|---|
data | Data source URL(s) (can be multiple, in layering order) |
cam | Camera [px,py,pz, tx,ty,tz] (render coordinates) |
color | Color mode |
psize | Point size |
edl | EDL strength |
grid | Grid / axes (1 / 0) |
clip | Section [on, axis, pos, thick] |
This lives in the hash rather than the query string so a frequently-changing camera doesn't push into browser history (it's swapped in with replaceState instead), and so it doesn't collide with ?data=.
A local file loaded by drag-and-drop is never carried in the URL (there's no way it could be).
Build-time environment variables
Not URL parameters, but these can bake in defaults at deploy time.
| Variable | Example | Effect |
|---|---|---|
VITE_DATA_BASE | https://data.oniyanma.jp | Pulls the default point cloud from a different origin. Same-origin if unset |
VITE_COLLAB_URL | wss://oniyanma-demo.pages.dev/collab | The default collaboration sync server. Falls back to ws(s)://<own host>:8788 if unset |