Browser audio capture
Explicit microphone permission and a press-and-hold interaction capture the user's spoken object request as WebM audio.
MediaRecorder / audio-webm
Technical overview / VibeVR
VR Device turns a spoken design request into a structured, explodable object and presents it through a procedural Three.js scene on desktop or in WebXR.
AI Integration Architecture
Voice, model, procedural rendering, and immersive runtime boundaries
Voice-led workspace for requesting, viewing, and inspecting generated holographic objects
Transcribes intent, grounds the generation contract, parses structured output, and mediates the render boundary
Produces a structured multi-part object specification from the transcribed design request
Builds primitive geometry and physical materials, then mounts the object in the live scene
Presents the current in-memory object through desktop controls or an immersive headset session
Input, model & runtime services
Implemented components behind VR Device
Explicit microphone permission and a press-and-hold interaction capture the user's spoken object request as WebM audio.
MediaRecorder / audio-webm
A server boundary sends the recording to an approved OpenAI speech model and returns plain transcript text.
No browser-held service credential
Gemini receives the bounded design contract and produces the current implementation's structured multi-part object specification.
Approved model boundary
The generated contract describes 30–60 named parts using a closed set of primitives, metric transforms, colors, and physical material properties.
JSON-only generation contract
Accepted parts become procedural geometry and MeshPhysicalMaterial instances in a continuously rendered WebGL scene.
No imported 3D asset required
The same active object can be inspected on desktop or through an immersive VR session with controllers and calibrated headset height.
Immersive-vr / local-floor
Object generation lifecycle
From spoken intent to interactive hologram
The user grants microphone access, holds the voice control, and describes the object. Releasing the control completes an audio/webm recording.
The client uploads the recording to a protected transcription route. Empty or undersized input exits without starting object generation.
Fixed instructions define the allowed primitives, required part count, transforms, colors, physical material fields, and JSON response shape.
Gemini converts the transcript into a named, explodable object specification containing 30–60 individual parts.
The response passes through direct JSON parsing and an object-extraction fallback, then must expose a non-empty parts array to continue.
Each part maps to supported Three.js geometry and a physical material whose metalness, roughness, and opacity are bounded by application code.
The previous hologram is disposed, the new object group is mounted at the desk focal anchor, and rotation and zoom state reset.
The render loop supports auto-spin, rotation, zoom-driven exploded inspection, preset selection, controller rays, and immersive VR.
Hologram generation network
Detailed flow inside the VibeVR orchestration and rendering path
The user explicitly grants microphone access and holds the voice control while describing the object to generate
MediaRecorder collects browser audio and rejects a recording that is too small to contain a usable request
A protected server boundary sends the recording to an approved speech model and returns transcript text
The interface exposes the transcript and stops before generation when the returned text is empty
Fixed instructions convert the request into a JSON-only contract for an explodable engineering object with 30–60 parts
The AI model returns a named object specification containing primitive geometry, transforms, color, and surface properties
The response is parsed with a JSON fallback, then accepted only when it contains a non-empty parts array
Each accepted part becomes supported Three.js geometry with bounded physical material values
The previous object is disposed and the generated group is mounted above the hologram desk focal anchor
The render loop supports auto-spin, rotation, zoom, exploded inspection, controller selection, and immersive headset calibration
Responsibility & trust boundaries
Authority by implementation component
Microphone permission, recording state, transcript display, generation status, current object name, and interaction controls
Does not hold model credentials or create arbitrary geometry outside the accepted contract
Converting the submitted WebM recording into transcript text
Does not decide object structure, materials, or scene behavior
Proposing the named parts, primitive shapes, transforms, colors, and material values for the requested object
Cannot mount meshes, enter WebXR, or persist a generated object
Prompt constraints, model mediation, JSON parsing, and the minimum parts-array eligibility check
Does not provide full field-by-field schema validation in the current implementation
Geometry construction, material bounds, scene replacement, animation, controllers, and the active immersive session
Does not save generated specifications or treat shelf presets as generated history
Generation & runtime controls
Implemented safeguards around voice, model output, and WebXR
Audio capture starts only after browser microphone permission and a direct press-and-hold action.
User-controlled recording
Very small recordings and empty transcripts stop before object generation, preserving the current scene.
No prompt on unusable input
The generation contract limits output to sphere, cylinder, box, torus, cone, and ring primitives.
Predictable procedural construction
Metalness, roughness, and opacity are clamped when materials are built, even when generated values exceed expected ranges.
Client-side numeric safeguards
A parsed response must contain at least one part before it can replace the currently displayed hologram.
Previous object retained on rejection
WebXR availability and session startup are checked independently; desktop rendering remains the base presentation mode.
Immersive mode is optional
Runtime state & persistence
What exists during and after a generation session
Current transcript
The latest returned speech text is displayed in the interface for the active page session
Current object spec
The accepted generated specification exists in memory and drives the currently mounted Three.js object
Current render object
Constructed meshes, materials, transforms, rotation, zoom, and exploded-view state live in the active scene
Preset catalog
Arc Reactor, Repulsor Gauntlet, and Jet Turbine are deterministic specifications bundled with the application
Generated history
Not implemented: generated objects are not added to the shelf, database, browser storage, or a saved-scene library
Reload behavior
A reload or preset switch discards the generated object unless the user generates it again