Morph Targets
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);
});
}
});