Skip to content
bahulam.
STARTChatInstall CodeCloud IDEWorkflowsMobile guide
EnterprisePricing
Sign inInstall Code

The live registry is unavailable. Showing bundled catalog information; inspect the source for current requirements.

Back to plugins

threejs-studio

v0.3.0

Compositional Three.js content creation studio. Scenes are stored as a JSON DSL and compiled to a self-contained HTML document on every mutation. Domain specialists (layout / material / lighting / camera / asset / behavior / animation) each own a slice of the DSL and are orchestrated by a Scene Director. A Critic Agent closes the loop by capturing screenshots and evaluating them via a VLM. Provider adapters (Meshy, Fal, Anthropic) plug in via env vars; local stubs keep every tool chain green with zero credentials. Supports product demos, configurators, data visualizations, architectural walkthroughs, physics simulations, generative art, educational animations, interactive experiences, and MP4 video export via headless Chromium.

by BahulamAI·Source
threejs3dvisualizationanimationinteractive
bahulam install threejs-studio

Runs locally via the Bahulam CLI from github.com/BahulamAI/awesome-bahulam-plugins

Tools (36)

create_scene

Initialize a new scene folder with scene.json (default lights, camera, grid) and a compiled index.html. Also records a row in threejs_scenes state. Output goes to <cwd>/<slug>/.

get_scene

Return a compact summary of the scene DSL — node ids/types, material summary, camera, background. Pass full:true for the raw scene.json. Always call this at the start of a specialist turn.

snapshot_scene

Snapshot the current scene.json into snapshots/ with a timestamped filename. Cheap and reversible; use before large destructive edits.

create_node

Add a node (mesh, group, light, helper, instanced, points, line, gltf, sprite) to the scene. Returns { id, type, html_path }.

set_transform

Patch position/rotation/scale on a node.

reparent_node

Move a node under a different parent (or the scene root).

delete_node

Remove a node (and by default its descendants).

align_nodes

Align or distribute a set of nodes along an axis.

measure_bounds

Approximate axis-aligned bounds for one or more nodes (from primitive geometry params + transforms).

create_material

Define a material in scene.materials. type defaults to "standard" (PBR). Extra fields include roughness, metalness, emissive, opacity, transparent, clearcoat, transmission, and texture map paths.

set_material_property

Patch fields on an existing material.

assign_material

Bind a material to one or more nodes (materialId).

add_light

Add or replace a light node. Supported types: ambient, directional, point, spot, hemisphere, rectarea.

set_environment

Set scene background — either an HDRI path (for IBL lighting) or a solid color.

set_exposure

Set tone mapping mode and exposure.

set_camera

Configure camera type, framing, controls.

frame_scene

Auto-position the camera to frame all (or specified) nodes with the given padding, azimuth, and elevation.

generate_mesh

Text→3D via the configured mesh provider (env THREEJS_MESH_PROVIDER=meshy|local). Local fallback writes a placeholder primitive .gltf so the tool chain always completes. By default also registers a `gltf` node in the scene.

generate_texture

Text→image via the configured texture provider (env THREEJS_TEXTURE_PROVIDER=fal|local). Local fallback writes a solid-color PNG matched to keyword palette. Optionally applies the texture as the `map` slot of an existing material.

import_gltf

Register an existing .glb / .gltf asset (URL or local path) into the scene folder and, by default, add a node that references it.

search_asset_library

Search a curated catalog of free assets (Poly Haven HDRIs, Khronos sample glTF models). Returns downloadable URLs suitable for import_gltf / set_environment.

decimate_mesh

Record a decimation intent (target triangle count) on an asset. v0.3 records intent only; actual polygon reduction is Phase 3.

list_assets

List assets registered in scene.assets for a scene.

add_physics_body

Attach a cannon-es rigid body to a node. Emits CANNON.World + stepping in the compiled HTML. Use mass 0 for static (floor/walls).

add_script

Attach a sandboxed JS snippet to a node's tick / click / hover event. Variables in scope: target, scene, dt (tick), hit (click/hover), THREE.

wire_event

High-level shortcut for common interactions (toggle_visible, hide, show, swap_material, translate, rotate, log). Generates a script under the hood; prefer this over hand-writing add_script.

add_keyframe

Add or extend a keyframe animation clip on a node. Emits AnimationMixer + KeyframeTrack in the compiled HTML.

add_procedural_motion

Attach a common tick-driven procedural motion (spin, orbit, oscillate, bob). Cheaper than keyframes for unbounded loops.

render_screenshot

Capture PNGs of the scene from N camera angles using puppeteer (headless Chromium). Falls back to a shot-plan when puppeteer is not installed so the critic can still run in DSL-only mode.

evaluate_scene

Critique a scene via the configured VLM provider (env THREEJS_VLM_PROVIDER=anthropic|local). Optionally captures screenshots first when none are supplied. Local heuristic fallback still catches "no lights", "empty scene", "missing materials" without any API call.

write_threejs_scene

Fallback — write a raw self-contained Three.js HTML scene from a JS snippet. Bypasses the DSL. Use only for scenes where custom loops, shaders, or physics make the DSL an obstacle. The compiled HTML is NOT regenerated on subsequent DSL mutations.

register_render

Record a completed (or failed) scene on the plugin's shared state. Reviewer calls this after inspecting the finished HTML.

list_renders

List saved Three.js scenes and outcomes from durable state.

render_approval_record

Persist the user/director approval gate before compositional work starts. Call this after the user explicitly approves, rejects, or requests changes to the plan.

render_report

Build an evidence report for a scene or workspace: saved source, approvals, render outcomes, paths, readiness, and failures.

render_threejs_video

Export a Three.js HTML scene to an MP4 video via headless Chromium (puppeteer) + ffmpeg. Supports auto-orbit / orbit / static presets and l/m/h quality tiers. Returns a render_command to launch as a background shell job.

Agents (13)

Scene Director/threejs-studioentry

Orchestrator for Three.js Studio. Talks to the user, plans, delegates domain work (layout / material / lighting / camera / …), and drives the review/render pipeline to produce interactive 3D scenes and videos.

delegatecreate_sceneget_scenelist_rendersrender_approval_recordrender_reportrender_threejs_videoread_filelist_filesshelljob_output
Animation Agent/animation

Owns time-based motion — keyframe clips (via AnimationMixer) and procedural tick-driven motion (spin/orbit/oscillate/bob). Does not touch physics.

add_keyframeadd_procedural_motionget_scenesnapshot_scene
Asset Agent/asset

Owns 3D asset acquisition — text→mesh generation, text→texture generation, curated library search, glTF import, and mesh decimation intent. Registers every asset in scene.assets and (optionally) drops a node into the scene referencing it.

generate_meshgenerate_texturesearch_asset_libraryimport_gltfdecimate_meshlist_assetsget_scenesnapshot_scene
Behavior Agent/behavior

Owns physics bodies (cannon-es), sandboxed event scripts, and interaction wiring (click/hover). Turns static scenes into playable or reactive ones.

add_physics_bodyadd_scriptwire_eventget_scenesnapshot_scene
Camera Agent/camera

Owns camera framing, controls (orbit / first-person / none), and view composition. Auto-frames the scene to fit visible content when asked.

set_cameraframe_scenemeasure_boundsget_scenesnapshot_scene
Critic Agent/critic

Closes the verification loop — captures N screenshots of the scene from different camera angles (via puppeteer) and evaluates them via a VLM (Claude Sonnet by default). Returns pass/fail with specific issues the Director can route back to the correct specialist.

render_screenshotevaluate_sceneget_sceneread_file
Three.js Developer/developer

Writes complete self-contained Three.js HTML scenes from approved briefs. Delegate any "create a 3D scene / interactive visualization / product demo" task here.

write_threejs_scenelist_rendersread_filelist_files
Layout Agent/layout

Owns spatial composition — creates nodes, arranges them, sets transforms, manages hierarchy. Does NOT touch materials, lighting, or camera.

create_nodeset_transformreparent_nodedelete_nodealign_nodesmeasure_boundsget_scenesnapshot_sceneread_filelist_files
Lighting Agent/lighting

Owns lighting rigs, HDRI environments, tone mapping, exposure. Designs mood via light color, intensity, direction, and shadow behavior.

add_lightset_environmentset_exposureget_scenesnapshot_sceneread_file
Material Agent/material

Owns materials, shaders, textures. Creates PBR materials, assigns them to nodes, tunes roughness/metalness/color. Does NOT create geometry or move nodes.

create_materialset_material_propertyassign_materialget_scenesnapshot_sceneread_file
Scene Planner/plan

Planning sub-agent — produces scene breakdown, feature list, and asset manifest for complex Three.js requests before any code is written.

list_rendersread_filelist_files
Video Renderer/renderer

Wakes when a background render job completes. Inspects the output video, runs verification checks, records the result, and re-renders with fixes if the export failed.

job_outputregister_renderlist_rendersrender_reportread_filerender_threejs_videoshell
Scene Reviewer/reviewer

Verifies a completed Three.js HTML scene — checks validity, function, and compliance with the brief. Fixes trivial issues directly.

register_renderlist_rendersread_filewrite_filerender_report

Workspace views (2)

Three.js Studiopanel

./workspace/studio.html

Viewportpanel

./workspace/viewport.html

bahulam.

Intelligence, put to work.

A product of axplusb.tech

Products

Product overviewChatBahulam CodeMobile companionCreative StudioVideo Studio

Workspaces & tools

Cloud IDEWorkflowsVertical AIPluginsModels

Resources

DocumentationBenchmarksMethodologyPricingFAQSupport

Company

About BahulamEnterpriseSecurity & controlFor investorsFeedback
© 2026 axplusb.tech
PrivacyTermsGitHub
बहुलम् · Abundance