updateMorphTargets top-level property
@param {Mesh} mesh @param {GLTF.Mesh} meshDef
Implementation
Function updateMorphTargets = (Mesh mesh, Map<String, dynamic> meshDef) {
mesh.updateMorphTargets();
if (meshDef["weights"] != null) {
for (int i = 0, il = meshDef["weights"].length; i < il; i++) {
mesh.morphTargetInfluences[i] = meshDef["weights"][i].toDouble();
}
}
// .extras has user-defined data, so check that .extras.targetNames is an array.
if (meshDef["extras"] != null && meshDef["extras"]["targetNames"] is List) {
final targetNames = meshDef["extras"]["targetNames"];
if (mesh.morphTargetInfluences.length == targetNames.length) {
mesh.morphTargetDictionary = {};
for (int i = 0, il = targetNames.length; i < il; i++) {
mesh.morphTargetDictionary?[targetNames[i]] = i;
}
}
else {
console.warning('GLTFLoader: Invalid extras.targetNames length. Ignoring names.');
}
}
};