moeru-ai/airi · error · Error
Godot Stage currently supports VRM models only.
Error message
Godot Stage currently supports VRM models only.
What it means
Thrown by assertGodotSceneInputSupportedDisplayModel when the resolved DisplayModel's format is not DisplayModelFormat.VRM. The Godot stage scene input path (G1.1 baseline) only loads VRM models; Live2D, MMD/PMX, or unknown formats are rejected before model bytes are read and sent to Electron main.
Source
Thrown at apps/stage-tamagotchi/src/renderer/pages/settings/models/godot-scene-input.ts:36
export function isGodotSceneInputSupportedDisplayModel(model: DisplayModel): boolean {
return model.format === DisplayModelFormat.VRM
}
/**
* Rejects display models that the Godot stage G1.1 scene input path cannot load.
*
* Use when:
* - A renderer side-effect is about to read model bytes and invoke Electron main
*
* Expects:
* - The display model has already been resolved from the selected model id
*
* Returns:
* - Nothing when the model is supported
*/
export function assertGodotSceneInputSupportedDisplayModel(model: DisplayModel): void {
if (!isGodotSceneInputSupportedDisplayModel(model))
throw new Error('Godot Stage currently supports VRM models only.')
}
View on GitHub (pinned to 27111382b4)
Solutions
- Switch the active display model to a VRM (.vrm) model before enabling the Godot stage.
- If a VRM was intended, re-import it so the store classifies format as DisplayModelFormat.VRM.
- Use the Three.js/pixi stage renderer for Live2D/MMD models.
- Gate the Godot-stage UI so non-VRM models cannot be selected for it.
Example fix
// before
assertGodotSceneInputSupportedDisplayModel(model)
// after
if (!isGodotSceneInputSupportedDisplayModel(model)) {
// disable Godot stage input, surface a user-facing message
return
} Defensive patterns
Strategy: type-guard
Validate before calling
import { DisplayModelFormat } from '@proj-airi/stage-ui/stores/display-models'
function canUseGodotSceneInput(model: DisplayModel): boolean {
return model.format === DisplayModelFormat.VRM
} Type guard
import { DisplayModelFormat } from '@proj-airi/stage-ui/stores/display-models'
function isVrmDisplayModel(model: DisplayModel): boolean {
return model.format === DisplayModelFormat.VRM
} Try / catch
try {
assertGodotSceneInputSupportedDisplayModel(model)
} catch (e) {
// disable Godot stage input, show 'VRM only' message, keep current renderer
} Prevention
- Filter the model picker to VRM-only when Godot stage is the active renderer.
- Call isGodotSceneInputSupportedDisplayModel (non-throwing) to drive UI gating.
- Document that Live2D/MMD require a different stage renderer.
When it happens
Trigger: User selected a Live2D or MMD display model and switched to the Godot stage renderer; a display model resolved to a non-VRM format; the format enum on the stored model is missing or unknown.
Common situations: Mixing renderer backends — Godot stage selected while a Live2D model is active; imported a .pmx/.pmd that the display-model store classified as MMD; model record missing format field defaulting to a non-VRM value.
Related errors
- Invalid Godot stage scene input payload.
- Workflow error: ${errorBody.slice(0, 200)}
- ComfyUI returned no prompt_id
- No image data returned from Nano Banana
- prompt is required for image_journal.create
AI-assisted analysis of moeru-ai/airi@27111382b4 (2026-08-12).
Data as JSON: /api/errors/2a214632932342d0.
Report an issue: GitHub.