日本語 · English · 简体中文 · 繁體中文 · 한국어 · Deutsch
Turn a MuJoCo sim scene into a 3D Gaussian Splatting model and produce a GIF you can spin all the way around plus novel-view images. Camera poses come from the sim’s ground truth, so no COLMAP is needed.
In the imgevolve folder:
3dgs go2 --open
That alone turns go2 (a quadruped robot) into 3DGS and automatically opens the finished full-turn GIF.
3dgs cassie / 3dgs apollo / 3dgs anymal / 3dgs spot3dgs <your local working path>\path\to\scene.xml3dgs --list3dgs go2 --quality fast :: 128px / 8k Gaussians (a few seconds, for a quick look)
3dgs go2 --quality balanced :: 256px / 20k Gaussians (default)
3dgs go2 --quality high :: 384px / 45k Gaussians (the cleanest)
3dgs go2 --quality high --densify --open
With --densify, training grows the number of Gaussians automatically to raise detail
(native gsplat only). On go2 it grows from about 8k to about 50k, and the body and legs come
out smoother. It finishes in a few to a dozen or so seconds.
--backend torch / --backend gsplatThe launcher sets up the environment (CUDA / compiler) automatically, so you don’t have to worry about vcvars and the like.
Launch spikes/studio_app.py → in the “View sim model in 3D / make 3DGS” panel, pick the
scene name (click a chip or type it) and the quality, then “3DGS train 🎇” → when it’s done
the full-turn GIF opens.
Under out/3dgs_<scene>/ (or wherever --out points):
turntable.gif … full-turn previewnovelview.png … left = ground truth / right = novel-view rendergaussians.npz … trained Gaussians (npz)gaussians.ply … standard 3DGS .ply (with native). Drag and drop it into a web viewer such
as SuperSplat to open itreport.json … metrics such as PSNR.venv-gsplat (torch cu128).gsplat-cuda (CUDA 12.8) plus the C++ tools of VS BuildTools. Details and
reproduction steps are in docs/GSPLAT_NATIVE_WINDOWS.mdHonest note: how much
--densifyhelps is scene-dependent. A solid mass like go2 comes out clean, but a thin biped like cassie can overfit to the training views so the hold-out gets a little soft. The recommendation is to try without it first and add it if you want more.
3dgs go2 --motion --open
Instead of a still, this makes a 3DGS of a moving robot. How it works:
motion.gifBecause a robot is a set of rigid links, it moves naturally without full 4D-GS. Change the
number of frames with --frames N.
Honest: the default motion is a demo sine wave (not an actual walking policy). Since the sim’s poses are ground truth it never falls apart, but slight noise can appear near the feet (the boundary of body assignment for the initialization points).
3dgs go2 --motion --gait trot --open
--gait trot auto-generates and plays a quadruped trot gait (diagonal legs stepping in
phase). It detects the legs automatically from the joint names (FL/FR/RL/RR or LF/RF/LH/RH +
thigh/calf), so it works on go2 and anymal. Models it can’t detect fall back to a sine wave. To
use the output of an actual walking policy, use --motion-file traj.npy (a qpos trajectory
(F,nq)).