1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wangerzi-model-convert-to-gltf

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_ZH.md 13 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 25.11.2024 11:18 de1d980

3DModelConvertToGltf: инструмент для преобразования моделей в единый формат GLTF

Документ

Китайский | Английский (README.md)

Основной причиной создания этого проекта стала необходимость демонстрации моделей STEP и IGES в веб-среде. Однако существующие веб-библиотеки 3D не поддерживают эти форматы, а прямая загрузка файлов STL приводит к значительному использованию полосы пропускания или трафика CDN. Преобразование в сжатый формат GLTF представляется более эффективным решением.

Примеры результатов сжатия представлены в таблице:

Тип файла Имя файла Время преобразования Исходный размер Размер после преобразования
STL assets/test.stl 2368.890 мс 7.6 МБ 86 КБ
IGES assets/test.iges 1641.226 мс 1 МБ 111 КБ
STP assets/test.stp 2969.200 мс 5.1 МБ 217 КБ
FBX assets/Samba Dancing.fbx <1000 мс 3.7 МБ 614 КБ

Поддерживаемые входные форматы: STL/IGES/STP/OBJ/FBX

Поддерживаемые выходные форматы: GLTF/GLB

Проект основан на идее, изложенной в блоге: «Преобразование моделей STEP и IGES в формат GLB, подходящий для использования в сети».

Состояние проекта: стабильное обслуживание.

Задачи, требующие завершения:

  • базовое планирование структуры проекта и интерфейса;
  • реализация кода для преобразования и сжатия;
  • добавление поддержки формата obj;
  • связанные API-интерфейсы (не рассматриваются как имеющие большое значение без учёта особенностей функций преобразования);
  • упаковка образа Docker;
  • создание скрипта для однократного преобразования;
  • предварительный просмотр онлайн-преобразования;
  • ошибка: большой размер конечного файла при преобразовании STP в GLTF;
  • ошибка: потеря информации о узлах при преобразовании STL в GLTF (причина: формат STL не содержит информации о узлах);
  • ошибка: потеря информации о узлах при преобразовании STP и IGES в GLTF;
  • поддержка вызовов в форме gRPC;
  • оптимизация RPC-интерфейса с предоставлением конкретной информации об ошибках;
  • требования к RPC: поддержка работы без draco;
  • проблема с журналом сервера RPC.

Пользователи проекта:

  • Lixian Super Manufacture — используйте сканирование QR-кода, чтобы использовать это приложение для предварительного просмотра файлов моделей в чате WeChat и их преобразования.

Версия описания

v1.7 (ожидает публикации)

Конвертер поддерживает опцию no-draco.

v1.6 (2021-10-10 13:08)

Уменьшен размер образа до 1,87 ГБ с 4,42 ГБ, исправлена проблема с невозможностью запуска образа.

v1.5 (2021-07-25 16:06)

Исправлена ошибка, добавлена поддержка преобразования без сжатия draco.

v1.4 (2021-06-11 17:20)

Обновлена поддержка gRPC, очищены aiohttp и конфигурационный код, переработана часть кода преобразования и исправлены ошибки BUG.

v1.3 (2020-06-24 17:19)

Добавлены документы на английском языке, исправлены ошибки, предпринята попытка использования aiohttp для написания интерфейса.

v1.0 (2020-05-21 19:08)

Базовая версия, основные функции разработки завершены, поддерживается вызов скрипта.

Почему не используется Assimp?

Я пробовал использовать Assimp, но результаты тестирования в сценариях преобразования STL/IGES/OBJ были не очень удовлетворительными. Я использовал предварительно упакованную среду Assimp от Dylankenneally/assimp на Docker Hub для тестирования. Если вам интересно, вы также можете попробовать.

Почему API не предоставляется непосредственно в этом проекте?

Преобразование модели является ресурсоёмкой и медленной услугой. Загрузка и скачивание моделей также требуют значительных затрат пропускной способности. Если напрямую развернуть его на собственном сервере, это будет ресурсоёмкая и дорогостоящая работа. Для общего использования больших файлов рекомендуется использовать OSS и CDN в сочетании с очередями и динамическим расширением серверной части. Но затраты на развёртывание и реализацию будут высокими, и коммерческие запросы должны быть направлены на admin@wj2015.com для получения коммерческой поддержки API.

Быстрое начало работы

Из-за проблем с настройкой среды командный режим по-прежнему требует зависимости от Docker. Командный режим подходит для простого вызова серверных приложений. Процесс преобразования блокирует процесс синхронизации и не может быть распределён для увеличения параллелизма. Рекомендуется использовать gRPC в сочетании с контейнеризацией для вызова, который может работать синхронно или асинхронно и легко расширяться.

Примечание: существует риск того, что сервер, предоставляющий услуги, будет заблокирован при одновременном преобразовании слишком большого количества моделей или одной очень большой модели.

Онлайн-предварительный просмотр

Вы можете использовать Modelbox-SDK для онлайн-преобразования моделей (<100 МБ). Ссылка: https://wangerzi.gitee.io/modelbox-sdk/examples/index.html.

Режим gRPC

На основе gRPC реализована внутренняя связь RPC для сервисов. Построение динамически расширяемого кластера служб становится более удобным. Поддерживается загрузка zip-файлов и исходных файлов моделей. Учитывая совместимость различных моделей, все ответы представляют собой zip-файлы, которые необходимо распаковать самостоятельно.

Сначала необходимо запустить сервер RPC с помощью Docker. Команда запуска выглядит следующим образом. Обратите внимание, что порт 8999 не должен использоваться и образ wj2015/3d-model-convert-to-gltf:latest должен быть последним.

$ docker pull wj2015/3d-model-convert-to-gltf:latest
$ docker run -d -p 8999:8999 wj2015/3d-model-convert-to-gltf:latest

При использовании скопируйте server/rpc/protos/converter.proto и сгенерируйте шаблоны на выбранном вами языке на основе вызова. Официальный сайт: поддерживаемые языки.

Примеры реализации

Если этот проект полезен для вас, вы можете продолжить добавлять другие примеры и отправлять PR, такие как часто используемые PHP, Golang и Nodejs.

Пример имени Каталог Примечание
Python вызывает пример server/examples/python/rpc_client.py Вызов упаковки и сохранения

Командный режим

Скачайте файл convert.sh в коде и предоставьте ему разрешения на выполнение. Выполните следующую команду, где второй параметр может поддерживать stl|stp|iges|obj|fbx в зависимости от типа файла.

Сценарий зависит от среды Docker и использует функцию сопоставления томов Docker для импорта чертежей и моделей в контейнер для выполнения преобразования, поэтому он не принимает сжатые пакеты и требует прямого указания файлов модели для преобразования.

convert.sh stl inputpath.stl outputpath.glb # Создать двоичный файл glb
convert.sh stl inputpath.stl outputpath.gltf # Недвоичный файл gltf

В каталоге assets есть пять тестовых файлов test.stl, test.stp, test.igs, E 45 Aircraft_obj.obj и Samba Dancing.fbx. Скопируйте их в каталог проекта и выполните указанные выше команды, чтобы увидеть результаты. Текст запроса:

  • Выполнение:
    • 
      

docker pull wj2015/3d-model-convert-to-gltf


    * *В контейнере:*
        * ```shell
conda run -n pythonocc python convert.py stl input.stl out.glb
  • Docker 运行

    • На хост-машине при условии, что установлен Docker, выполните команду для получения образа (около 4 ГБ):
    • 
      

docker pull wj2015/3d-model-convert-to-gltf

    * В контейнере выполните:
    * ```shell
conda run -n pythonocc python convert.py stl input.stl out.glb
для синхронного преобразования файла.

Перевод:

Выполнение:

  • 
    

docker pull wj2015/3d-model-convert-to-gltf


**В контейнере:**

* ```shell
conda run -n pythonocc python convert.py stl input.stl out.glb

Запуск в Docker

На хост-компьютере при условии установки Docker выполните команду для загрузки образа (примерно 4 ГБ).

docker pull wj2015/3d-model-convert-to-gltf

В контейнере выполните следующую команду:

conda run -n pythonocc python convert.py stl input.stl out.glb

для синхронного преобразования файлов.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wangerzi-model-convert-to-gltf.git
git@api.gitlife.ru:oschina-mirror/wangerzi-model-convert-to-gltf.git
oschina-mirror
wangerzi-model-convert-to-gltf
wangerzi-model-convert-to-gltf
master