moeru-ai/airi · warning
No VRM found
Error message
No VRM found
What it means
clipFromVRMAnimation(vrm, animation) takes both parameters optional on purpose, but if vrm is undefined it warns 'No VRM found' and returns undefined — you cannot build an AnimationClip from a VRMAnimation without the target VRM rig. The animation parameter is then never even examined.
Source
Thrown at packages/stage-ui-three/src/composables/vrm/animation.ts:39
// load VRM Animation .vrma file
const gltf = await loader.loadAsync(url)
const userData = gltf.userData as GLTFUserdata
if (!userData.vrmAnimations) {
console.warn('No VRM animations found in the .vrma file')
return
}
if (userData.vrmAnimations.length === 0) {
console.warn('No VRM animations found in the .vrma file')
return
}
return userData.vrmAnimations[0]
}
export async function clipFromVRMAnimation(vrm?: VRMCore, animation?: VRMAnimation) {
if (!vrm) {
console.warn('No VRM found')
return
}
if (!animation) {
return
}
// create animation clip
return createVRMAnimationClip(animation, vrm)
}
// Set initial positions for animation
export function reAnchorRootPositionTrack(clip: AnimationClip, _vrm: VRMCore) {
// Get the hips node to re-anchor the root position track
const hipNode = _vrm.humanoid?.getNormalizedBoneNode('hips')
if (!hipNode) {
console.warn('No hips node found in VRM model.')
return
}View on GitHub (pinned to 677329427f)
Solutions
- Ensure the VRM is fully loaded (await the VRM loader) before creating the clip.
- Check the model-load path for a silently swallowed error upstream.
- Guard the call site and skip animation setup when vrm is absent.
Example fix
// before const clip = await clipFromVRMAnimation(vrmRef.current, animation) // vrmRef.current may be undefined // after if (!vrmRef.current) return // model not ready; skip or await model load first const clip = await clipFromVRMAnimation(vrmRef.current, animation)
Defensive patterns
Strategy: type-guard
Validate before calling
if (!vrm) { /* model not loaded yet: skip or await */ } Type guard
function isLoadedVRM(v: VRMCore | undefined | null): v is VRMCore {
return !!v
} Prevention
- Await model load before animation load; order dependencies explicitly.
- Do not swallow model-load errors upstream — undefined vrm is usually an earlier failure leaking through.
- Make optional-parameter helpers fail loud in dev via assert helpers.
When it happens
Trigger: Calling clipFromVRMAnimation(undefined, anim) after the VRM model failed to load, is still loading, or the variable was never assigned; wiring animation loading before model loading and not awaiting the model.
Common situations: Race between model load and animation load in onMounted; a model-load failure swallowed earlier so undefined propagates; refactoring that renamed the vrm variable.
Related errors
- No hips node found in VRM model.
- No Hips.position track of type VectorKeyframeTrack found in
- No VRM animation loaded
- VRM model loading failure!
- [mmd] playAction skipped: "${name}" is not registered
AI-assisted analysis of moeru-ai/airi@677329427f (2026-08-18).
Data as JSON: /api/errors/4446ab151fcd9cb3.
Report an issue: GitHub.