Могу ли я сделать файл glb меньше? - PullRequest
2 голосов
/ 23 мая 2019

У меня большой obj файл 306 mb.Поэтому я преобразовал его в файл glb, чтобы уменьшить его размер.Размер файла значительно уменьшился до 82 mb, но он все еще большой.Я хочу сделать этот файл меньше.Есть ли способ?Если есть, пожалуйста, дайте мне знать.

Если вы не можете уменьшить файл glb, сообщите мне более эффективные способы уменьшения файла obj.Одна из вещей, которые я уже сделал, - измените файл obj на json, сожмите, размотайте и загрузите его, используя pako.js.Я не выбрал этот метод, потому что он был слишком медленным для распаковки.

1 Ответ

2 голосов
/ 23 мая 2019

Может быть, если это данные вершины, которые делают файл таким большим.В этом случае вы можете использовать библиотеку сжатия DRACO, чтобы уменьшить размер еще больше.

Во-первых, чтобы протестировать компрессор, вы можете запустить

npx gltf-pipeline -i original.glb -d --draco.compressionLevel 10 -o compressed.glb

(вам нужно иметьтекущая версия node.js, установленная для этого, чтобы работать)

Если данные вершины были причиной того, что файл был таким большим, сжатый файл должен быть значительно меньше исходного.

Теперьвам нужно выполнить некоторые дополнительные шаги для загрузки файла, так как обычный GLTFLoader не поддерживает сжатые DRACO сетки.

По сути, вам необходимо импортировать THREE.DRACOLoader и Драко-декодер .Наконец, вам нужно сообщить своему GLTFLoader, что вы знаете, как обрабатывать DRACO-сжатие:

DRACOLoader.setDecoderPath('path/to/draco-decoder');
gltfLoader.setDRACOLoader(new DRACOLoader());

После этого вы можете использовать GLTFLoader, как и раньше.

Единственный недостатокэто связано с тем, что самому декодеру требуются некоторые ресурсы: декодирование не является бесплатным, а сам декодер представляет собой еще 320 КБ данных, которые должны быть загружены браузером.Я думаю, что это все еще стоит, если это сэкономит вам мегабайты меш-данных.

...