Когда я пытаюсь загрузить очень большой файл с помощью соответствующих загрузчиков, представленных в библиотеке, вкладка моего сайта работает в аварийных ситуациях. Я попытался реализовать класс Worker, но он, похоже, не работает. Вот что происходит:Three.js погрузка больших моделей
В главном файла JavaScript У меня есть:
var worker = new Worker('loader.js');
Когда пользователь выбирает один из доступных моделей я проверить для расширения и передать файл URL/путь к рабочему: (в данном случае PCD файл)
worker.postMessage({fileType: "pcd", file: file});
Теперь loader.js имеет соответствующий включает, которые необходимы, чтобы сделать его работу:
importScripts('js/libs/three.js/three.js');
importScripts('js/libs/three.js/PCDLoader.js');
и в методе onmessage он использует подходящий загрузчик в зависимости от расширения файла.
var loader = new THREE.PCDLoader();
loader.load(file, function (mesh) {
postMessage({points: mesh.geometry.attributes.position.array, colors: mesh.geometry.attributes.color.array});
});
Данные успешно передаются на главный javascript, который добавляет его в сцену. По крайней мере, для небольших файлов - большие, как я уже сказал, занимают слишком много времени, и браузер решает, что произошла ошибка. Теперь я думал, что рабочий класс должен работать асинхронно, так что тут дело?
какая ошибка вы получили? Также, какой браузер вы использовали? – Alexus
Я сомневаюсь, что это неправильно. Очень большие файлы моделей приводят к созданию очень больших массивов в объектах JavaScript ТРИ. Распространение этих точечных, нормальных, материальных индексов, UV и лицевых массивов среди многих моделей путем разбивки очень больших моделей на несколько файлов может помочь, в зависимости от того, насколько велики модели. Кроме того, использование bufferGeometry может также улучшить производительность во время выполнения: см. Http://threejs.org/docs/api/core/BufferGeometry.html – Radio
@Alexus Я пробовал хром, опера, firefox и IE. Все, кроме IE, дают очень бесполезную ошибку (сайт разбился, oh snap, ect). IE просто зависает. – VID44R