ComfyUI-3D-Пакет
Сделайте генерацию 3D-ресурсов в ComfyUI хорошей и удобной, поскольку она генерирует изображения/видео!
Это обширный набор узлов, который позволяет ComfyUI обрабатывать 3D-входы (сетки и UV-текстуры и т. д.) с использованием передовых алгоритмов (3DGS, NeRF и т. д.) и моделей (InstantMesh, CRM, TripoSR и т. д.).
Возможности — Установка — Дорожная карта — Разработка — Советы — Поддержка Установить:
Можно ли установить напрямую из ComfyUI-Manager?
- Предварительные сборки доступны для:
- Windows 10/11, Убунту 22.04.
- Питон 3.10/3.11/3.12
- КУДА 12.1/11.8
- факел 2.3.0+cu121/cu118, torchvision 0.18.0+cu121/cu118
- install.py автоматически загрузит и установит предварительные сборки в соответствии с вашей средой выполнения. Если соответствующие предварительные сборки не найдены, сценарий сборки запустится автоматически. Если автоматическая сборка у вас не работает, ознакомьтесь с Semi -Автоматическое руководство по сборке
- Если у вас есть какой-либо недостающий узел в любом открытом рабочем процессе Comfy3D, попробуйте просто нажать «Установить недостающие пользовательские узлы» в ComfyUI-Manager.
- Если по какой-то причине ваш comfy3d не может загрузить предварительно обученные модели автоматически, вы всегда можете загрузить их вручную и поместить в нужную папку в каталоге Checkpoints, но НЕ перезаписывайте существующие файлы .json.
- Установите Docker, проверьте DOCKER_INSTRUCTIONS.md
- Примечание. На данный момент вам все равно необходимо установить Visual Studio Build Tools для Windows и установить
gcc g++
для Linux, чтобы InstantNGP & Convert 3DGS to Mesh with NeRF and Marching_Cubes
работали, поскольку эти два узла использовали JIT torch cpp. расширение, которое создается во время выполнения, но я планирую вскоре заменить эти узлы
Функции:
Варианты использования см. в разделе Примеры рабочих процессов. [ Последнее обновление: 01 августа 2024 г. ]
- Примечание: вам необходимо поместить примеры входных файлов и папок в корневой каталог ComfyUIComfyUIinput, прежде чем вы сможете запустить пример рабочего процесса.
- Рабочий процесс tripoSR-layered-diffusion от @Consumption
StableFast3D : Stability-AI/stable-fast-3d
- Одно изображение в 3D-сетке с текстурой RGB
- Примечание: вам необходимо согласиться с условиями использования Stability-AI, прежде чем вы сможете загрузить веса модели. Если вы загрузили веса модели вручную, вам нужно поместить их в раздел Checkpoints/StableFast3D, в противном случае вы можете добавить свой токен объятия в Configs/. system.conf
- Вес модели: https://huggingface.co/stabilityai/stable-fast-3d/tree/main
2024-08-01.19-21-58.mp4
Генератор символов : zjp-shadow/CharacterGen
- Одиночный вид спереди персонажа в произвольной позе
- Можно комбинировать с рабочим процессом Unique3D для достижения лучшего результата.
- Вес модели: https://huggingface.co/zjpshadow/CharacterGen/tree/main.
zQ4Kb8kXr7QBxkY5.mp4
Unique3D : AiuniAI/Unique3D
- Четырехэтапный конвейер:
- От одного изображения до 4 изображений с несколькими изображениями с разрешением: 256X256.
- Согласованные изображения в нескольких изображениях. Повышение разрешения до 512X512, суперразрешение до 2048X2048.
- Мультипросмотр изображений на картах нормалей с разрешением: 512X512, суперразрешением до 2048X2048.
- Изображения с несколькими представлениями и карты нормалей в 3D-сетке с текстурой
- Чтобы использовать рабочий процесс Unique3D на всех этапах, загрузите модели:
- sdv1.5-pruned-emaonly и поместите его в
Your ComfyUI root directory/ComfyUI/models/checkpoints
- настроил плитку controlnet и поместил ее в
Your ComfyUI root directory/ComfyUI/models/controlnet
- ip-adapter_sd15 и поместите его в
Your ComfyUI root directory/ComfyUI/models/ipadapter
- OpenCLIP-ViT-H-14, переименуйте его в OpenCLIP-ViT-H-14.safetensors и поместите в
Your ComfyUI root directory/ComfyUI/models/clip_vision
- RealESRGAN_x4plus и поместите его в
Your ComfyUI root directory/ComfyUI/models/upscale_models
- Вес модели: https://huggingface.co/spaces/Wuvin/Unique3D/tree/main/ckpt
2024-06-0711-51-27-ezgif.com-resize-video.mp4
Модель Era3D MVDiffusion : pengHTYX/Era3D
- От одного изображения до 6 изображений с несколькими изображениями и карт нормалей с разрешением: 512X512.
- Примечание: для запуска этой модели вам потребуется не менее 16 ГБ видеопамяти.
- Вес модели: https://huggingface.co/pengHTYX/MacLab-Era3D-512-6view/tree/main
2024-06-0711-56-48-ezgif.com-resize-video.mp4
Модель реконструкции InstantMesh : TencentARC/InstantMesh
- Редкие многопросмотровые изображения с белым фоном в 3D-сетку с текстурой RGB
- Работает с произвольными моделями MVDiffusion (вероятно, лучше всего работает с Zero123++, но также работает и с моделью CRM MVDiffusion)
- Вес модели: https://huggingface.co/TencentARC/InstantMesh/tree/main.
2024-05-23.17-35-22.mp4
2024-05-23.17-32-31.mp4
Zero123++ : SUDO-AI-3D/zero123plus
- Одно изображение для просмотра 6 изображений с разрешением: 320X320.
Модель сверточной реконструкции : thu-ml/CRM
- Трехэтапный трубопровод:
- От одного изображения до 6 изображений для просмотра (спереди, сзади, слева, справа, сверху и снизу)
- Одно изображение и 6 изображений для просмотра в 6 одинаковых представлениях CCM (канонические координатные карты)
- 6 просмотров изображений и CCM в 3D-сетке
- Примечание. Если на компьютере с низким энергопотреблением вы не можете поместить все три модели для каждого этапа в память графического процессора, вы можете разделить эти три этапа на разные удобные рабочие процессы и запускать их отдельно.
- Вес модели: https://huggingface.co/sudo-ai/zero123plus-v1.2
2024-03-12.22-05-10.mp4
TripoSR : VAST-AI-Research/TripoSR | ComfyUI-Flowty-TripoSR
- Создайте представление NeRF и используйте марширующий куб, чтобы превратить его в 3D-сетку.
- Вес модели: https://huggingface.co/stabilityai/TripoSR/tree/main
2024-03-05.22-38-36.mp4
Wonder3D : xxlong0/Wonder3D
- Создавайте пространственно согласованные 6 изображений и карты нормалей из одного изображения.
- Вес модели: https://huggingface.co/flamehaze1115/wonder3d-v1.0/tree/main
Большая многовидовая гауссовская модель : 3DTopia/LGM
- Преобразование одного изображения в 3D по Гауссу менее чем за 30 секунд на графическом процессоре RTX3080, позже вы также сможете преобразовать 3D по Гауссу в сетку.
- Вес модели: https://huggingface.co/ashawkey/LGM/tree/main
2024-02-08.23-36-31.mp4
Трехплоскостные гауссовы трансформаторы : VAST-AI-Research/TriplaneGaussian
- Преобразование одного изображения в 3D по Гауссу менее чем за 10 секунд на графическом процессоре RTX3080, позже вы также сможете преобразовать 3D по Гауссу в сетку.
- Вес модели: https://huggingface.co/VAST-AI/TriplaneGaussian/tree/main
2024-02-08.23-57-37.mp4
Предварительный просмотр 3DGS и 3D Mesh : 3D-визуализация внутри ComfyUI:
- Использование gsplat.js и Three.js для визуализации 3DGS и 3D Mesh соответственно.
- Настраиваемая фоновая база на базе JS-библиотеки: mdbassit/Coloris.
2024-02-04.19-20-17.mp4
Stack Orbit Camera Poses : автоматически генерирует все комбинации поз камеры.
Вы можете использовать его для настройки StableZero123 (сначала вам необходимо загрузить контрольную точку) с полным набором поз камеры за один проход.
Вы можете использовать его для создания поз орбитальной камеры и непосредственного ввода в другие узлы 3D-процессов (например, GaussianSplatting и BakeTextureToMesh).
Пример использования:
Система координат:
- Азимут: При виде сверху из угла 0 поверните на 360 градусов с шагом -90 и получите (0, -90, -180/180/180, 90, 0), в этом случае камера вращается по часовой стрелке, и наоборот.
- Высота: 0, когда камера направлена горизонтально вперед, направление вниз на землю является отрицательным углом, и наоборот.
FlexiCubes : nv-tlabs/FlexiCubes
- Глубина и маска нескольких представлений (дополнительные карты нормалей) в качестве входных данных
- Экспорт в 3D-сетку
- Руководство по использованию:
- voxel_grids_solve : определить разрешение/качество сетки.
- глубина_мин_дистанция глубина_макс_дистанция : расстояние от объекта до камеры, части объекта при рендеринге, которые находятся ближе (дальше) к камере, чем глубина_мин_дистанция(глубина_макс_дистанция), будут отображаться с чисто белым (черным) значением RGB 1, 1, 1(0, 0, 0)
- Mask_loss_weight : Управляет силуэтом реконструированной 3D-сетки.
- deep_loss_weight : Управляет формой реконструированной 3D-сетки. Эта потеря также повлияет на детали деформации сетки на поверхности, поэтому результат зависит от качества карты глубины.
- нормальный_лосс_вес : Необязательно. Используйте для уточнения деталей деформации сетки на поверхности.
- sdf_regularizer_weight : помогает удалить плавающие элементы в областях фигуры, которые не контролируются целью приложения, например, на внутренних гранях при использовании только контроля изображений.
- Remove_floaters_weight : его можно увеличить, если вы наблюдаете артефакты на плоских участках.
- Cube_stabilizer_weight : не оказывает существенного влияния при оптимизации одной формы, однако в некоторых случаях помогает стабилизировать тренировку.
2024-04-12-16-21-24.mp4
Мгновенный NGP : nerfacc
- Изображения с несколькими представлениями в качестве входных данных
- Экспорт в 3D-сетку с использованием марширующих кубов.
3D гауссово пятно
- Улучшенная дифференциальная гауссовская растеризация
- Улучшенный метод уплотнения на основе компактности от Gsgen,
- Поддержка инициализации гауссианов из заданной 3D-сетки (необязательно).
- Поддержка мини-пакетной оптимизации
- Изображения с несколькими представлениями в качестве входных данных
- Поддерживается экспорт в стандартный формат 3DGS .ply.
Средство визуализации орбиты гауссовского сплаттинга
- Рендеринг 3DGS в последовательности изображений или видео с учетом файла 3DGS и поз камеры, созданных узлом Stack Orbit Camera Poses.
Средство рендеринга орбит сетки
- Рендеринг 3D-сетки в последовательности изображений или видео с учетом файла сетки и поз камеры, созданных узлом Stack Orbit Camera Poses.
Fitting_Mesh_With_Multiview_Images
- Запекайте многовидовые изображения в UVTexture заданной 3D-сетки с помощью Nvdiffrast, поддерживает:
- Экспорт в .obj, .ply, .glb
Сохранить и загрузить 3D-файл
- .obj, .ply, .glb для 3D-сетки
- .ply для 3DGS
Переключение оси для 3DGS и 3D-сетки
- Поскольку разные алгоритмы, вероятно, используют разные системы координат, возможность повторного сопоставления оси координат имеет решающее значение для передачи сгенерированного результата между разными узлами.
Настраиваемый файл конфигурации системы
- IP-адрес индивидуального клиента
- Добавьте свой токен пользователя Huggingface
Дорожная карта:
Разработка
Как внести свой вклад
- Форкнуть проект
- Внести улучшения/добавить новые функции
- Создание запроса на включение в ветку разработки
Структура проекта
узлы.py :
Содержит код интерфейса для всех узлов Comfy3D (т. е. узлов, которые вы действительно можете видеть и использовать внутри ComfyUI). Здесь вы можете добавлять свои новые узлы.
Gen_3D_Модули :
Папка, содержащая код для всех генеративных моделей/систем (например, многовидовых диффузионных моделей, моделей 3D-реконструкции). Сюда следует добавить новые генерирующие 3D-модули.
MVs_Алгоритмы :
Папка, содержащая код для всех многоракурсных стереоалгоритмов, т.е. алгоритмов (например, Gaussian Splatting, NeRF и FlexiCubes), которые принимают многовидовые изображения и преобразуют их в трехмерное представление (например, Gaussian, MLP или Mesh). Сюда следует добавить новые алгоритмы MVS.
сеть :
Папка, содержащая файлы и код (html, js, css) для всех вещей, связанных с пользовательским интерфейсом браузера (например, макет HTML, стиль и основная логика для предварительного просмотра 3D-сетки и гауссианов). Здесь следует добавить новый веб-интерфейс.
веб-сервер :
Папка, содержащая код для связи с браузером, т.е. для обработки запросов веб-клиента (например, отправка 3D-сетки клиенту по запросу с определенными URL-маршрутами). Сюда следует добавить новые функции, связанные с веб-сервером.
Конфигурации :
Папка, содержащая разные файлы конфигурации для разных модулей. Сюда следует добавить новую конфигурацию. Используйте подпапку, если для одного модуля имеется более одной конфигурации (например, Unique3D, CRM).
Контрольно-пропускные пункты :
Папка, содержащая всю предварительно обученную модель и некоторые файлы конфигурации архитектуры модели, необходимые для диффузоров. Новые контрольные точки, если они могут быть загружены автоматически узлом Load_Diffusers Pipeline
, тогда их следует добавить сюда.
установить.py :
Основной сценарий установки автоматически загрузит и установит предварительные сборки в соответствии с вашей средой выполнения. Если не удалось найти соответствующие предварительные сборки, автоматически запустится сценарий сборки, вызываемый ComfyUI-Manager сразу после установки зависимостей, перечисленных в требованиях. .txt с использованием pip
Если для новых модулей, которые вы пытаетесь добавить, требуются дополнительные пакеты, которые невозможно просто добавить в файл require.txt и build_config.remote_packages, вы можете попробовать добавить их, изменив этот скрипт.
_Pre_Builds :
Папка, содержащая файлы и код для сборки всех необходимых зависимостей. Если вы хотите предварительно создать некоторые дополнительные зависимости, проверьте _Pre_Builds/README.md для получения дополнительной информации.
Советы
- OpenGL (Three.js, Blender) система координат мира и камеры:
World Camera
+y up target
| | /
| | /
|______+x |/______right
/ /
/ /
/ /
+z forward
z-axis is pointing towards you and is coming out of the screen
elevation: in (-90, 90), from +y to +x is (-90, 0)
azimuth: in (-180, 180), from +z to +x is (0, 90)
- Если вы столкнулись с ошибками OpenGL (например,
[F glutil.cpp:338] eglInitialize() failed
), установите force_cuda_rasterize
значение true на соответствующем узле. - Если после установки ваш ComfyUI зависает при запуске или работе, вы можете следовать инструкциям по следующей ссылке, чтобы решить проблему: Код зависает на неопределенный срок при оценке моделей нейронов на графическом процессоре.
Сторонники