Getting Started with Aeion Spatial
Create a 3D scene, generate a product model with AI, drive the editor by natural-language commands, embed in a Commerce page, and start a VR meeting — all in the browser. zero install.
Create Your First 3D Scene
Navigate to Spatial → Scenes and click New Scene.
Required fields:
- Name — e.g., "Summer Collection Showroom"
- Scene Type — Choose the best fit for your use case:
Scene metadata:
json
{
"name": "Summer Collection Showroom",
"sceneType": "generic",
"status": "draft",
"settings": {
"ambientLight": { "intensity": 0.4, "color": "#ffffff" },
"environment": "studio",
"camera": { "fov": 50, "near": 0.1, "far": 1000 }
}
}
Once created, the scene opens in the Spatial Editor — a React Three Fiber canvas with:
- Left panel: Hierarchy tree of all scene nodes
- Center: 3D viewport with orbit/pan/zoom controls
- Right panel: Inspector for selected node properties (transform, material, physics)
Editor controls:
- Left-click: Select object
- Right-click: Context menu (duplicate, delete, group)
- Middle-click drag: Orbit camera
- Scroll: Zoom
- F key: Frame selected object
- Ctrl+Z: Undo
Add Objects to Your Scene
| Format | Use Case | Notes |
|---|---|---|
| glTF/GLB | Standard 3D | Best for web — binary + textures in one file |
| FBX | Blender/Maya/3ds Max | Wide compatibility, larger file size |
| OBJ + MTL | Simple models | No animation support |
| USD/USDZ | Apple ecosystem | For iOS AR experiences |
| STL | 3D printing | Geometry only, no materials |
| PLY | Point clouds | Laser scans, photogrammetry |
| BLEND | Blender native | Parsed directly from Blender format |
Generate a 3D Model with AI
Instead of uploading, generate a model from a text description or reference image:
Open: Spatial → AI Generation
Text-to-3D
- Select Text to 3D tab
- Enter a prompt:
"A photorealistic leather office chair with chrome base" - Select provider:
- Select output format: glb, gltf, fbx, obj, usdz
- Click Generate
Generation job tracked in your AI job history:
json
{
"id": "ai_job_01J8XK4N3P",
"provider": "luma",
"jobType": "text_to_3d",
"status": "processing",
"input": {
"prompt": "leather office chair with chrome base",
"resolution": "2048"
},
"createdAt": 1746969600000,
"completedAt": null
}
Processing time: 10-120 seconds depending on provider and complexity. You'll receive a notification when complete.
Image-to-3D
Upload a reference photo → the AI reconstructs a 3D model from it. Best for:
- Physical product photos → 3D product viewer
- Architectural photos → 3D reconstruction
- Sculptures/artwork → 3D archive
Texture Generation
Generate PBR texture sets (diffuse, normal, roughness, metalness, AO) from text:
- Prompt:
"weathered concrete with moss growing in the cracks" - Output: 4K PNG textures or EXR HDR maps
- Used to create PBR materials automatically
Style Transfer
Apply artistic style to existing textures: "make this look like watercolor painting"
Apply Materials and Lighting
| Material | Use Case |
|---|---|
| **Standard PBR** | Metals, plastics, wood — baseColor + metalness + roughness |
| **Transmission** | Glass, water, crystal — light passes through with refraction |
| **Clearcoat** | Car paint, lacquer — extra specular layer |
| **Sheen** | Fabric, velvet — directional highlight at grazing angles |
| **Subsurface** | Skin, leaves, wax — light scatters beneath surface |
| **Emissive** | Screens, LEDs, glow effects — self-illuminated |
| **Physical sky** | HDR environment map for realistic reflections |
| **Terrain** | Heightmap-based terrain with multiple texture layers |
| **Water** | Animated water surface with caustics and foam |
| **Hair/Cloth** | Anisotropic shading for hair strands and fabric weaves |
| **Volume** | Fog, clouds, participating media |
Publish and Embed Your Scene
Publish the Scene
Click Publish in the scene editor toolbar.
What happens:
- Scene nodes validated (no broken references)
- All assets compressed and streamed to CDN
- LOD variants generated for mobile delivery
spatial.scene.publishedevent fires- Scene is publicly accessible (if permissions allow)
json
{
"id": "scene_01J8XK4N3P",
"status": "published",
"publishedAt": "2026-05-11T10:30:00Z",
"embedUrl": "https://yourtenant.aeionos.com/spatial/scene/summer-collection",
"viewerUrl": "https://yourtenant.aeionos.com/spatial/view/summer-collection"
}
Create an Embed Config
Spatial → Embeds → New Embed
json
{
"sceneId": "scene_01J8XK4N3P",
"allowedDomains": ["yourstore.com", "yoursite.com"],
"showToolbar": true,
"showAnnotations": false,
"expiresAt": "2027-01-01T00:00:00Z",
"maxViewCount": 10000,
"encrypted": false
}
Embed in a Commerce Page
html
<!-- Auto-generated embed snippet -->
<iframe
src="https://yourtenant.aeionos.com/spatial/embed/e8f4a7b2..."
width="100%"
height="600"
allow="xr-spatial-tracking; fullscreen"
style="border: none; border-radius: 12px;"
></iframe>
Use case in Commerce: Product pages with an interactive 360° viewer. The viewer is linked to the product record — inventory levels, price, and variants all update live. No manual syncing.
Enable VR / AR Mode
For VR (Meta Quest, HTC Vive, etc.)
- Open the published scene URL in a WebXR-compatible browser (Meta Browser on Quest, Firefox Reality, etc.)
- Click the VR headset icon (bottom-right of viewport)
- Browser prompts for WebXR permission → Allow
- Scene renders in stereo VR — 6DOF head tracking, hand controllers mapped
VR controls:
- Left thumbstick: Teleport / smooth locomotion
- Right thumbstick: Turn
- Grip button: Grab and move objects
- Trigger: Select / interact
- Menu button: Open scene menu
For AR (Phone/Tablet)
- Open the scene URL on a mobile device with AR capability
- Click the AR icon (bottom-right)
- Camera activates → point at surface → tap to place scene
- Scene anchored to physical surface via ARKit (iOS) or ARCore (Android)
AR features:
- Surface detection (horizontal and vertical planes)
- Image tracking (trigger AR experience by pointing at a poster)
- Light estimation (scene lighting adapts to physical environment)
Generate a Launch QR Code
From the scene editor: Share → Generate QR Code
``` Deep link: aeion-spatial://scene/summer-collection?mode=vr QR code generated from that deep link.
// QR scanned on phone: // - iOS: Opens in Safari → AR Quick Look or WebXR // - Android: Opens in Chrome → WebXR AR mode // - Quest: Opens in Meta Browser → Full VR ```
Start a VR Meeting
| Template | Description |
|---|---|
| `boardroom` | Conference table, presentation screen, 12 seats |
| `auditorium` | Staggered seating, large screen, 50+ capacity |
| `campfire` | Circular seating, informal, 8 people |
| `outdoor_pavilion` | Open-air setting, casual, 6 people |
| `training` | Instructor podium + student seats, whiteboards |
Collaborate in Real Time
Invite Collaborators
Share → Invite Collaborators
json
{
"sceneId": "scene_01J8XK4N3P",
"invitees": ["user@yourtenant.com"],
"permission": "editor" // "viewer" | "editor" | "admin"
}
The invited user receives an email with a direct link. When they open the scene, they see you editing in real time.
What You See
- Other users' cursors — labeled with their name, showing position in the 3D view
- Selection highlights — when someone selects an object, you see a colored outline around it
- Camera views — see where other users are looking (optional, toggleable)
- Presence indicators — avatar for each user in the top toolbar
Real-Time CRDT Sync
Powered by Yjs CRDT — no central server authority:
- Every edit (transform change, material update, node add/delete) is a CRDT operation
- Operations merge automatically — two people editing the same material simultaneously? Both changes apply correctly
- Undo/redo replays across all participants — your undo undoes your last operation, not theirs
- Object locking — if you're editing a node's material, others see a lock icon and can't edit until you're done
Offline support: Disconnect and reconnect — Yjs replays your changes when back online.
Drive the Editor by Voice or Text
The fastest way to build a scene isn't clicking through menus — it's telling Spatial what you want. Natural-language parsing turns plain-English input into structured scene actions.
Open: Spatial Editor → AI Command Bar (or press / from any panel)
Example commands
"Place a leather chair near the window"
"Make the floor look like polished concrete"
"Add 3 spotlights above the table, warm color, low intensity"
"Move the chair 2 meters to the left"
"Delete every cube smaller than 1 meter"
"Apply the brushed-steel material to all metal objects"
"Group the chairs and rotate them 45 degrees"
"Add ambient music — relaxed lobby mood" (drives adaptive procedural music)
What happens under the hood
Your input: "Place a leather chair near the window"
│
▼
Intent recognized: "place_object"
→ object_type: "chair"
→ material_hint: "leather"
→ spatial_reference: "near window"
│
▼
Command resolved:
→ 1. Asset library search: chair models matching "leather" material
→ 2. Scene-graph query: find nodes with type="window"
→ 3. Resolve position: 1.5m offset from window, facing center
→ 4. Place the chair with the resolved position + material
│
▼
Confirmation in chat: "Placed a leather chair 1.5m east of the south window."
Driving the Desktop OS by voice
AeionClaw can drive the entire Spatial Desktop by voice:
"Open the CRM dashboard panel on the right"
"Walk through the portal to the Commerce workspace"
"Tile the three open panels in a grid"
"Lock the inventory panel to my left hand"
If an AI provider isn't configured for your tenant, the command bar tells you plainly rather than silently ignoring your input.
Importing Architectural Models
| Format | Description | Workflow |
|---|---|---|
| **IFC** | Industry Foundation Classes — universal BIM exchange | AutoDesk, Revit, ArchiCAD exports |
| **Revit (.rvt)** | Autodesk Revit native | Best for BIM with MEP data |
| **DWG** | AutoCAD 2D/3D drawings | Floor plans → extruded to 3D |
Connecting to Other Modules
Spatial integrates natively with every Aeion OS module — no API code required:
Smart Spaces (IoT → Digital Twin)
typescript
// In Smart Spaces, bind a sensor to a spatial node:
// Smart Space device: Temperature Sensor TH-001
// Spatial node: Room "Conference A" (from BIM import)
// Binding: sensor.data.temperature → node.material.emissiveIntensity
// Result: Room walls glow warmer/cooler based on actual temperature
Commerce (Product Viewer)
typescript
// In Commerce, link a product to a spatial scene:
// Product: "Summer Chair"
// Spatial scene: "Chair Showcase"
// The product page embeds the scene as an iframe
// Inventory levels shown as floating labels in 3D
Production (Set Design)
typescript
// In Production, import shot planning data:
// Shot schedule with camera positions → spatial camera nodes
// Blocking notes → spatial annotation markers
// Scene becomes an interactive shot board
CRM (Avatar Generation)
typescript
// In CRM, generate an avatar from a contact photo:
// Contact photo → AI texture generation → applied to character face
// Used in: Recruit interview simulation, Helpdesk video agent