Broken meshes
AI-generated geometry arrives with no mesh or primitive sanity check, so defects reach the game.
Wisent Glina
Glina turns a text prompt into a verified, game-ready GLB. A Brama-routed model writes Blender Python and runs it in a live Blender MCP session. A structural gate passes or fails the result before it counts as done.
A game project needs hundreds of modeled, budgeted GLB assets. Hand-modeling them is slow, and raw AI output arrives broken.
AI-generated geometry arrives with no mesh or primitive sanity check, so defects reach the game.
Nothing enforces a budget. Glina's gate checks a default of 6000 triangles, plus or minus 100 percent.
Materials, skins, and animation presence go unchecked unless a gate verifies them before the asset counts as done.
Every generation follows the same path: prompt, model, Blender, gate.
Describe the prop, weapon, or character you need as plain text.
Model access goes only through Brama, the Wisent model router. There is no direct provider API code in the package.
The Brama-routed model writes bpy code for the asset.
The code runs in a live Blender session through a Blender MCP server, uvx blender-mcp by default. Never hand-rolled sockets.
The gate checks a valid glTF container, mesh sanity, the triangle budget, materials, file size, and an optional render smoke. It fails the job and never warns.
Captured terminal output from the Glina CLI: install, config validation, verification, and session health.
$ npm install -g @wisent-ai/glina
added @wisent-ai/glina
$ glina check-config
config: valid
skarbiec:// refs: resolved
inline secrets: rejected (none present)
$ glina verify assets/models/kamien.glb
glTF container: valid
mesh/primitives: sane
triangles: within 6000 ±100%
materials: present
file size: within bounds
gate: PASS
$ glina blender-health
blender-mcp session: connected
$ glina weles-tools
weles-mcp tools: listedThese are the only generations this page presents as evidence.
| Asset | Description | Gate-verified |
|---|---|---|
| kamien.glb | Granite boulder with moss patches, 12 bpy rounds through Brama and Blender MCP | 2026-07-27 |
| krasnolud-wojownik.glb | Dwarven warrior, generated through local Brama | 2026-07-28 |
Only in Skarbiec. Config holds skarbiec://<item>/<field> references, and the loader rejects inline secrets and credential-shaped environment variables.
Only through Brama, the Wisent model router. Direct provider API paths were deleted at the owner's demand, not gated.
Only through a Blender MCP server, uvx blender-mcp by default. Never hand-rolled sockets.
Only the Weles MCP stdio server, weles-mcp. Never a local Chromium profile.
One npm install ships two bins: glina for the command line and glina-mcp as an MCP stdio server for agent hosts. Glina started as the asset pipeline of the browser RTS simple-rts-unity and now ships as a standalone Wisent product with a CLI and a macOS desktop app.