Veduta

Models from Blender

Model in Blender, export glTF, import once: the game draws your meshes with their materials and textures, and plays your armature's actions as animations. After that, exporting again to the same file is enough: the game reads it at every build.

In Blender

Blender's axes: Z up, and the front view looks at the model's front from −Y. Veduta turns the model so its front faces the game's forward (−Z); keep these habits:

Export: File → Export → glTF 2.0, format glTF Binary (.glb), the default settings (+Y Up on, Apply Modifiers on, Animation on). Leave compression (Draco) off.

Into the game

veduta import ~/Desktop/knight.glb

(or ask Claude: the MCP import tool does the same.) It writes:

FileWhat
assets/models/src/knight.glbthe file itself (export straight here next time)
assets/materials/knight_<material>.vmatone material per Blender material, its color as Blender shows it
assets/textures/knight_<material>.vtex and textures/src/knight_<material>.pngthe image of a material's texture
assets/models/knight.vmodelthe model, which imports the file

and reports the triangles, bones, animations and anything left out. The model source:

{
  "veduta": "model/1",
  "import": {
    "file": "models/src/knight.glb",
    "loop": ["idle", "walk"],
    "materials": { "Armor": "knight_armor", "Skin": "knight_skin" },
    "rotation_deg": [0, 180, 0]
  }
}

Edit it for what Blender cannot say: "next": {"attack": "idle"} to go back to idle after an attack, another animation in loop, "pivot": "bottom-center", or your own parts, bones and animations on top (a hat bone under head). Change the materials freely: the import never overwrites them.

Then place and play it like any model:

{ "name": "knight", "kind": "static", "model": "knight", "anim": "idle" }
knight.anim_fade = 0.15
knight.anim = moving and "walk" or "idle"
scene.spawn{model = "sword", parent = knight, bone = "hand_r"}

Check it with veduta inspect model knight --sheets summary,poses: the poses sheet shows every animation at four moments. See Skeletons and Animation for playing, blending and posing bones from Lua, and the model reference for every field.

When something looks wrong

Looks likeWhy, and what to do
The model faces the camera when it should face awayits front was not −Y in Blender: turn it there, or set rotation_deg
Holes at the knees and elbowssmooth weights: weight each piece to one bone
A part stands stillit is not weighted or parented to a bone
All whitethe material's color comes from a node Veduta does not read: use Base Color
Too dark or too flatlight is per vertex: a big flat face shades flat; add a few edge loops
requires extension KHR_draco_mesh_compressionexport without compression

Veduta (Lua games). This wiki is built from wiki/ in the engine's repository, where its examples are tested, and published with every engine release on https://veduta.roomve.it/docs/.