Загрузчик Babylon GLTF 2.0 имеет систему расширений, которую можно рассматривать как плагин на основе обещаний для каждого шага процесса загрузки.Вы можете увидеть несколько примеров расширений здесь:
https://github.com/BabylonJS/Babylon.js/tree/master/loaders/src/glTF/2.0/Extensions
Что может быть очень интересным в вашем случае, здесь:
https://github.com/BabylonJS/Babylon.js/blob/master/loaders/src/glTF/2.0/Extensions/KHR_texture_transform.ts
Как видите, это расширение содержит функцию с именем loadTextureInfoAsync
, которая возвращает обещание, когда будет выполнено, после получения информации о текстуре, которая должна быть загружена.
В зависимости от варианта использования вы можете полностью заменитьзагрузить функциональность текстуры или расширить ее (как в примере выше).Чтобы переопределить его, вам нужно просто реализовать функцию самостоятельно:
public loadTextureInfoAsync(context: string, textureInfo: ITextureInfo, assign: (babylonTexture: BaseTexture) => void): Nullable<Promise<BaseTexture>> {
const texture = loadTheTextureYourselfWithFallback();
return Promise.resolve(texture);
}
Конечно, функцию загрузки необходимо реализовать в соответствии с вашей логикой.