VibeUE

Agentic Development in Unreal Engine

πŸ†• NEW PLUGIN Β· FOR UNREAL ENGINE 5.8

VIBE3D

Procedural 3D modeling as an AI Editor Toolset

Vibe3D exposes the operators behind Unreal's Modeling Mode β€” primitives, booleans, lofts, remeshing, UVs, baking, rigging, collision, LODs β€” as one AICallable service on the engine's native MCP endpoint, with a companion agent skill that teaches the workflow.

An agent builds, unwraps, bakes, rigs and saves meshes without a viewport: meshes live in an in-editor session as integer handles, and every call returns evidence it can read.

120+ AI-CALLABLE TOOLS
12 AUTOMATION SUITES GREEN
ONE SKILL, FULL PYTHON API

WHAT IT IS

Unreal 5.8 ships a serious modeling kernel β€” GeometryScript and the operators behind Modeling Mode β€” but only a person with a mouse could drive it. Vibe3D wraps that kernel as a single Vibe3D.ModelingService toolset and registers it with the engine's own ToolsetRegistry, so any MCP client that already talks to the editor (Claude Code, Codex, Gemini CLI, Cursor, Copilot…) gets it for free. The same functions are one line away in editor Python as unreal.ModelingService.*, and get_dynamic_mesh(handle) hands the raw UDynamicMesh to any unreal.GeometryScript_* library for the long tail.

It is an independent plugin: it does not require VibeUE, and runs happily alongside it. Where it shines is procedural and pipeline work β€” props and blockouts, kitbash merges, clean unwraps, baked detail maps, collision and LOD chains, rigging control surfaces β€” anything you'd rather describe than click through.

INSTALL

cd <YourProject>/Plugins
git clone https://github.com/kevinpbuckley/Vibe3D.git

Build the project β€” the plugin is enabled by default and pulls in GeometryScripting, ToolsetRegistry, Python and Editor Scripting Utilities as dependencies. UE 5.8 only.

TEACH YOUR AGENT

Vibe3D.GenerateAgentConfig All

One console command writes the bundled guide into CLAUDE.md, GEMINI.md and AGENTS.md inside a marked block (re-run to refresh). The modeling skill is registered as a native AgentSkill and reloads with Vibe3D.ReloadSkills.

WHAT'S IN THE TOOLSET

🧱

Primitives & Solids

Boxes, spheres, cylinders, cones, capsules, tori, discs, stairs, extruded and revolved polygons, open sweeps and capped lofts that always come out closed and outward-facing.

βœ‚οΈ

Booleans & Cuts

Union / subtract / intersect, self-union for kitbash merges, plane cuts, mirror, grooves along any polyline, and an orientation check that catches inside-out parts before they vanish.

🎯

Named Selections

By normal angle, box, sphere, material, polygroup, or whole connected piece β€” stored per mesh, refused once stale, and the input to every poly-edit and rigging call.

πŸ”§

Poly-edit & Processing

Extrude, inset, outset, offset, bevel, shell, remesh, simplify (count / tolerance / planar), subdivide (PN, Catmull-Clark, Loop), smooth, weld, repair, hidden-triangle removal.

🌊

Deform & Voxel

Bend, twist, flare, Perlin noise, texture displacement, voxel solidify and dilate / contract / open / close morphology for topology you can trust.

πŸ—ΊοΈ

UVs You Control

Auto unwraps, projections, polygroup-driven conformal islands, per-selection layout, per-material packing, and stats that measure islands, coverage, overlap and texel density.

πŸ–ΌοΈ

Bakes & Images

Tangent / object normals, AO, curvature, position, height, vertex-colour and material-ID masks, UV shells, texture transfer between unwraps, plus noise textures, image import and drawing in UV space.

🦴

On-mesh Rigging

Author a bone hierarchy and skin weights directly on the session mesh, bind pieces to bones, and save a SkeletalMesh with its Skeleton created for you.

πŸ“¦

Assets & Placement

Static and skeletal mesh writes, material slots, convex / box / sphere / capsule collision, LOD chains, actor spawning, plus ray casts, surface sampling and mesh-to-mesh distance checks.

ONE ROUND-TRIP, ONE CRATE

Everything an agent needs is a static call on unreal.ModelingService, so a whole task β€” build, select, edit, unwrap, verify, save, collide, LOD β€” batches into a single execute_python_code call:

import unreal
svc = unreal.ModelingService
h = svc.create_mesh().handle
svc.append_box(h, unreal.Transform(), 120, 80, 60)
svc.select_by_normal_angle(h, "top", unreal.Vector(0, 0, 1), 5)
svc.inset_faces(h, "top", 4); svc.extrude_faces(h, "top", -2)
svc.auto_uv(h, "XAtlas"); print(svc.get_uv_stats(h).message)        # islands, coverage, overlap, texel density
r = svc.save_mesh_to_static_mesh(h, "/Game/Props/SM_Crate", True, True, False, True); print(r.message)
svc.generate_collision("/Game/Props/SM_Crate", "ConvexHulls", 4)
svc.set_lods("/Game/Props/SM_Crate", [1.0, 0.5, 0.25])
svc.release_all_meshes()

EVIDENCE, NOT VIBES

Every mutating call returns success, message and counts; get_mesh_info, get_uv_stats and list_bones let the agent check closedness, overlaps and bindings between stages instead of trusting a green result.

TESTED LIKE CODE

Twelve self-provisioning automation suites (Automation RunTests Vibe3D.Modeling) and an exercise script that calls every public function and prints RESULT: PASS.

OPEN SOURCE, BETA

Early days: the toolset is broad and green, the workflows are still being shaped by real builds. Issues, prompts and PRs on GitHub; show what you made in #vibe3d on Discord.