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

  1. Verify the pointer targets a supported animatable property path
  2. Fix the pointer string (typos resolve to unexpected objects)
  3. Use a sampler/target that provides interpolation info (or default linear path on standard node channels)
  4. 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

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


AI-assisted analysis of BabylonJS/Babylon.js@0592b347b8 (2026-08-30). Data as JSON: /api/errors/b1b1b532bf0d1f08. Report an issue: GitHub.