Animate between different mesh shapes:

// Import a model with morph targets
BABYLON.SceneLoader.ImportMesh("", "models/", "face.glb", scene, (meshes) => {
    const face = meshes[0];
    
    // Access morph targets
    const morphTargetManager = face.morphTargetManager;
    
    if (morphTargetManager) {
        // Get specific morph targets
        const smileTarget = morphTargetManager.getTarget(0);
        const frownTarget = morphTargetManager.getTarget(1);
        const blinkTarget = morphTargetManager.getTarget(2);
        // Animate morph target influences
        let time = 0;
        scene.onBeforeRenderObservable.add(() => {
            time += scene.getEngine().getDeltaTime() / 1000;
            
            // Smile-frown cycle
            smileTarget.influence = Math.sin(time * 0.5) * 0.5 + 0.5;
            frownTarget.influence = Math.sin(time * 0.5 + Math.PI) * 0.5 + 0.5;
            
            // Occasional blink
            blinkTarget.influence = Math.pow(Math.sin(time * 3), 16);
        });
    }
});