For AI agents
4D Gaussian Splatting with coding agents
This page is written for Claude Code, Codex and similar coding agents, and for the people who use them. When a user asks to "make a 3D video of this character that can be watched from any angle", "create 4DGS / volumetric video" or "turn my Blender scene into 4D Gaussian Splatting", it collects the workflow, ready-made scripts and rules in one place.
When to use 4dgspl.at
- Good fit: a moving subject (person, character, robot, object) that should play in real time in a web browser and be viewable from any angle while it plays. Input is synchronized video of the same moment from 4–8 (8 recommended) viewpoints: real cameras, phones, or virtual cameras in Blender, Unreal or Unity.
- The user has no cameras: the agent builds the scene in Blender, renders a ring of virtual cameras and writes the calibration exactly from the camera data. That is the workflow on this page.
- Not a fit: 4DGS from a single video (one viewpoint is not enough); generating views with text-to-video models (no geometric consistency between views, no known camera poses); a single static scene (ordinary 3DGS tools are enough).
Workflow
- Prepare BlenderCheck with
blender --version. On macOS use/Applications/Blender.app/Contents/MacOS/Blender, on WindowsC:\Program Files\Blender Foundation\Blender 4.x\blender.exe. If it is missing, tell the user and download the portable build from blender.org (Linux: .tar.xz, no system install needed); ask before installing system packages. - Build the model and motion
- A simple figure or object: build it procedurally with
bpy. - An animated human character: download the character together with its animation from Mixamo (FBX, With Skin, 30 fps; needs an Adobe account, use the user's session) or import the user's glTF/FBX/.blend. Mixamo content may be used in renders; do not put the raw FBX in the delivery or anywhere public.
- Metres, model at the origin, feet at z = 0. Keep the motion around the origin and put the important part in the first 4 seconds (the processing server currently uses the first 4 seconds of each capture).
- A simple figure or object: build it procedurally with
- Make the scene 4DGS-friendlyWorld colour pure black (0, 0, 0), no floor; matte materials (Roughness ≥ 0.6, Specular ≤ 0.2, Metallic 0, Coat 0); soft area lights from all sides; motion blur, depth of field and bloom off; Color Management "Standard".
- Build the camera ring and renderThe ready-made script builds 8 cameras at two heights, renders
camNN.mp4from each camera and writeskalibrasyon.zip:
The figure should fill 70–85 % of the frame height; reducecurl -O https://4dgspl.at/araclar/4dgspl_blender_rig.py blender -b scene.blend -P 4dgspl_blender_rig.py -- --kamera 8 --yaricap 3.5 --cikti //teslim --render--yaricap(ring radius) if it is small. - Validate the deliveryThe checker has no dependencies (Python 3.8+; with ffprobe/ffmpeg it also checks the videos and background). It exits with code 1 on errors:
curl -O https://4dgspl.at/araclar/4dgspl_kontrol.py python3 4dgspl_kontrol.py teslim # --json for machine-readable output - Upload and submitThe user creates a key in Projelerim → Ajan anahtarları (agent keys) and gives it to you as an environment variable. The client validates, creates a project, uploads the videos and calibration, submits, waits and downloads the result:
Withoutexport DGSPL_ANAHTAR=4dg_… # from the user; never write it into chat or files curl -O https://4dgspl.at/araclar/4dgspl_yukle.py -O https://4dgspl.at/araclar/4dgspl_kontrol.py python3 4dgspl_yukle.py teslim --baslik "Dancing robot" --gonder --bekle --indir result--gonderit only uploads; the user reviews and submits in the dashboard. Without a key, upload through the web dashboard: New project → videos into the camera slots →kalibrasyon.zipas calibration → submit. - Use the resultWhen processing finishes, the project page has a player, a share link and a single ZIP download: one 3D Gaussian scene per frame (
compressed.ply, PlayCanvas),sahne.json(frame count, fps, camera, metrics) and an MP4 preview. A single frame opens in SuperSplat; the sequence plays in the browser with PlayCanvas.
Agent key and API
- Key: every account creates it in the "Ajan anahtarları" section at the bottom of Projelerim. It is shown once (we only store its hash) and can be revoked at any time. Up to 5 active keys per user.
- Limits: 20 projects created and 10 submitted per 24 hours through agents; at most 3 projects queued or processing at once; 50 MB per file.
- Cost: new accounts start with 5 free jobs (up to 10 seconds each, Fast quality). After that, credits: 1 credit = 1 second at Fast quality, High ×3, Highest ×8. If credits run short,
gonderreturns 402; for a draft,durumincludes a cost estimate (tahmin). - API:
POST https://ghueniqorletddbvxlmr.supabase.co/functions/v1/ajan; headersx-4dgspl-anahtar: 4dg_…(agent key) plusAuthorization: Bearer <anon>andapikey: <anon>(the site's public anon key,SUPABASE_ANON_KEYin config.js); body{"islem": "…"}. Operations:proje_ac(create project),yukleme_adresi(signed upload URL; PUT the file there),dosya_kaydet(register the file),gonder(submit),durum(status),sonuc(result URLs),projeler(list). A GET with the anon key returns usage info. In most cases4dgspl_yukle.pyis all you need.
MCP server
If you prefer tools over shell commands, add the 4dgspl.at MCP server (Python 3.8+, no dependencies) to Claude Code, Codex, Cursor or any MCP client. It exposes get_4dgs_guide, check_delivery, upload_project, submit_project, project_status, list_projects and download_result. Without a key the guide and checker still work.
mkdir -p ~/.4dgspl && cd ~/.4dgspl && curl -O https://4dgspl.at/araclar/4dgspl_mcp.py \
-O https://4dgspl.at/araclar/4dgspl_yukle.py -O https://4dgspl.at/araclar/4dgspl_kontrol.py
claude mcp add 4dgspl --env DGSPL_ANAHTAR=4dg_… -- python3 ~/.4dgspl/4dgspl_mcp.py # Claude Code
codex mcp add 4dgspl --env DGSPL_ANAHTAR=4dg_… -- python3 ~/.4dgspl/4dgspl_mcp.py # Codex
Other clients: command python3, argument the path to 4dgspl_mcp.py, environment variable DGSPL_ANAHTAR. Source and MCP Bundle: snmzzcenk/4dgspl-tools.
Rules at a glance
| Topic | Rule |
|---|---|
| Cameras | At least 4, 8 recommended; equal angles on the ring; two heights with 8+ cameras (≈1.1 m and ≈2.1 m) |
| Names | cam00.mp4 … in ring order; image names in the calibration cam00.png … |
| Video | Same resolution, fps and frame count; synchronized; cameras never move |
| Calibration | A ZIP with COLMAP cameras.txt (PINHOLE, fx/fy in pixels) + images.txt (world → camera, OpenCV: x right, y down, z forward), or 4dgs-cameras cameras.json. Without it the server tries COLMAP on the images. |
| Background | Pure black (0, 0, 0) in synthetic captures. A grey background (linear 0.05 in Blender ≈ 25 % grey on screen) turns into fog. |
| Materials and light | Matte surfaces, constant soft light; specular highlights leave streaks from new angles |
| Duration | Currently the first 4 seconds at 15 fps (60 frames) are processed |
Tools
- 4dgspl_blender_rig.py — 4–16 camera ring in Blender, rendering and COLMAP calibration (MIT).
- 4dgspl_kontrol.py — pre-upload delivery checker (MIT, no dependencies).
- 4dgspl_mcp.py — MCP server for Claude Code, Codex and other MCP clients (MIT, no dependencies).
- 4dgspl_yukle.py — upload, submit, wait and download with an agent key (MIT, no dependencies).
- Blender render to 4DGS — every rig script option, scene rules and upload steps on one page.
- Prompt generator — a detailed task brief for the agent (pick camera count, duration, resolution).
- GitHub: snmzzcenk/4dgspl-tools — the tools, an example prompt and agent instructions in one repository.
- llms.txt — the site summary for language models.