BabylonJS/Babylon.js · error · Error
${extensionContext}/pointer: Interpolation is missing
Error message
${extensionContext}/pointer: Interpolation is missing What it means
After resolving the KHR_animation_pointer JSON pointer to an object, the loader checks that the target info exposes an interpolation mode. If obj.info.interpolation is missing (the pointer resolved to a property the loader cannot animate with an interpolation, or a malformed target), this error is thrown.
Source
Thrown at packages/dev/loaders/src/glTF/2.0/Extensions/KHR_animation_pointer.pure.ts:90
if (channel.target.path !== AnimationChannelTargetPath.POINTER) {
Logger.Warn(`${context}/target/path: Value (${channel.target.path}) must be (${AnimationChannelTargetPath.POINTER}) when using the ${this.name} extension`);
}
if (channel.target.node != undefined) {
Logger.Warn(`${context}/target/node: Value (${channel.target.node}) must not be present when using the ${this.name} extension`);
}
const extensionContext = `${context}/extensions/${this.name}`;
const pointer = extension.pointer;
if (!pointer) {
throw new Error(`${extensionContext}: Pointer is missing`);
}
try {
const obj = this._pathToObjectConverter.convert(pointer);
if (!obj.info.interpolation) {
throw new Error(`${extensionContext}/pointer: Interpolation is missing`);
}
return this._loader._loadAnimationChannelFromTargetInfoAsync(
context,
animationContext,
animation,
channel,
{
object: obj.object,
info: obj.info.interpolation,
},
onLoad
);
} catch (e) {
Logger.Warn(`${extensionContext}/pointer: Invalid pointer (${pointer}) skipped`);
return null;
}
}
}
View on GitHub (pinned to 0592b347b8)
Solutions
- Verify the pointer targets a supported animatable property path
- Fix the pointer string (typos resolve to unexpected objects)
- Use a sampler/target that provides interpolation info (or default linear path on standard node channels)
- Upgrade the loader version if the target property type should be supported
Example fix
// before "pointer": "/nodes/0/unknownCustomProp" // after "pointer": "/nodes/0/rotation"
Defensive patterns
Strategy: type-guard
Validate before calling
const obj = pathToObjectConverter.convert(pointer);
if (!obj?.info?.interpolation) console.warn(`Pointer ${pointer} is not animatable`); Type guard
function isAnimatable(target: { info?: { interpolation?: unknown } }): target is { info: { interpolation: string } } {
return !!target.info && typeof target.info.interpolation === 'string';
} Try / catch
try {
await BABYLON.SceneLoader.LoadAsync('./', 'anim.gltf', engine);
} catch (e) {
if (e instanceof Error && e.message.includes('Interpolation is missing')) {
console.error(`Animation pointer target has no interpolation info: check pointer path`);
} else throw e;
} Prevention
- Point only at properties known to be animatable (node TRS, material factors)
- Test pointer paths against the Babylon.js glTF loader docs
- Avoid deep/custom pointers not covered by the path converter
When it happens
Trigger: A KHR_animation_pointer channel whose pointer resolves to an object/property without interpolation info — e.g. pointing at a node property the converter cannot bind, or a pointer to something that exists but lacks the expected animatable metadata.
Common situations: Pointing at unsupported properties (wrong path depth, array index out of range resolving to wrong object); pointers targeting custom/user properties not backed by animation info; exporter bugs writing incomplete target info.
Related errors
- ${extensionContext}: Pointer is missing
- ${extensionContext}: Invalid area light type (${light.type})
- ${context}: Irradiance coefficients are missing
- ${extensionContext}/attributes: Instance buffer accessors do
- ${context}: Unsupported mode ${primitive.mode}
AI-assisted analysis of BabylonJS/Babylon.js@0592b347b8 (2026-08-30).
Data as JSON: /api/errors/b1b1b532bf0d1f08.
Report an issue: GitHub.