Обрабатывает и отслеживает загруженные и ожидающие загрузки данные. Глобальный экземпляр этого класса по умолчанию создается и используется загрузчиками, если не задан вручную - см. DefaultLoadingManager.
В общем, этого должно быть достаточно, однако бывают случаи, когда полезно иметь отдельные загрузчики — например, если вы хотите показать отдельные полосы загрузки для объектов и текстур.
В этом примере показано, как использовать LoadingManager для отслеживания хода выполнения процесса GLTFLoader.
const manager = new v3d.LoadingManager();
manager.onStart = function(url, itemsLoaded, itemsTotal) {
console.log('Started loading file: ' + url + '.\nLoaded ' + itemsLoaded + ' of ' + itemsTotal + ' files.');
};
manager.onLoad = function() {
console.log('Loading complete!');
};
manager.onProgress = function(url, itemsLoaded, itemsTotal) {
console.log('Loading file: ' + url + '.\nLoaded ' + itemsLoaded + ' of ' + itemsTotal + ' files.');
};
manager.onError = function(url) {
console.log('There was an error loading ' + url);
};
const loader = new v3d.GLTFLoader(manager);
loader.load('file.gltf', function(gltf) {
// your code goes here
});
Помимо наблюдения за ходом выполнения, менеджер LoadingManager можно использовать для переопределения УРЛ-адресов ресурсов во время загрузки. Это может быть полезно для ассетов, поступающих из событий drag-and-drop, WebSockets, WebRTC или других API. Ниже приведен пример загрузки модели in-memory с использованием УРЛ-адресов Blob.
// Blob or File oбъекты, созданные при перемещении файлов на страницу
const blobs = {'fish.gltf': blob1, 'diffuse.png': blob2, 'normal.png': blob3};
const manager = new v3d.LoadingManager();
// инициализируем менеджер с URL-коллбеком
const objectURLs = [];
manager.setURLModifier((url) => {
url = URL.createObjectURL(blobs[url]);
objectURLs.push(url);
return url;
});
// загружаем как обычно, очищаем УРЛ блобов по окончании
const loader = new v3d.GLTFLoader(manager);
loader.load('fish.gltf', (gltf) => {
app.scene.add(gltf.scene);
objectURLs.forEach((url) => URL.revokeObjectURL(url));
});
Создает новый LoadingManager.
Эта функция будет вызвана, когда начнется загрузка. Аргументы следующие:
По умолчанию undefined.
Эта функция будет вызвана, когда вся загрузка будет завершена. По умолчанию она не определена, если она не передана в конструкторе.
Эта функция будет вызвана, когда элемент будет завершен. Аргументы следующие:
По умолчанию undefined.
Эта функция будет вызвана при ошибке любого элемента, с аргументом:
url — УРЛ элемента, в котором произошла ошибка.
По умолчанию undefined.
Регистрирует загрузчик с заданным регулярным выражением. Может использоваться для определения того, какой загрузчик должен использоваться для загрузки определенных файлов. Типичный случай использования - перезаписать загрузчик по умолчанию для текстур.
// add handler for TGA textures
manager.addHandler(/\.tga$/i, new TGALoader());
file — путь файла.
Может использоваться для получения зарегистрированного загрузчика для заданного пути к файлу.
regex — регулярное выражение.
Удаляет загрузчик для заданного регулярного выражения.
url — УРЛ для загрузки.
Учитывая УРЛ, использует обратный вызов модификатора УРЛ (если таковой имеется) и возвращает разрешенный УРЛ. Если модификатор УРЛ не задан, возвращается оригинальный УРЛ.
callback — обратный вызов модификатора УРЛ. Вызывается с аргументом url, и должен выдавать resolvedURL.
Если указано, то обратный вызов будет передаваться каждому УРЛ ресурса перед отправкой запроса. Обратный вызов может вернуть исходный УРЛ или новый УРЛ, чтобы переопределить поведение загрузки. Это поведение можно использовать для загрузки ассетов из .ZIP-файлов, API перетаскивания и данных URI.
Следующие методы предназначены для внутреннего вызова загрузчиками. Вы не должны вызывать их напрямую.
url — УРЛ для загрузки.
Должен вызываться загрузчиком, использующим менеджер, когда загрузчик начинает загрузку УРЛ-адреса.
url — загруженный УРЛ.
Должен быть вызвано загрузчиком, использующим менеджер, когда загрузчик завершил загрузку УРЛ-адреса.
url — загруженный УРЛ.
Должен вызываться загрузчиком, использующим менеджер, когда загрузчик выдает ошибку при загрузке УРЛ-адреса.
О том как получить исходный код этого модуля читайте тут.