Перейти к содержанию
Публикация AiManual

TRELLIS.2 вместо Tripo и Meshy: как сделать светильник из картинки на домашней RTX 5060 Ti 16 ГБ

Разбираем авторский кейс: бесплатная TRELLIS.2 от Microsoft на RTX 5060 Ti 16 ГБ. Почему 1536_cascade не влез в память, что дал прогон в 1024_cascade за 181 сек

Коротко

Что будет в материале

  1. 01

    Зачем менять Tripo и Meshy на локальный TRELLIS.2

  2. 02

    Режимы 1536_cascade и 1024_cascade: что влезает в 16 ГБ

  3. 03

    От сырого меша к печатному телу: почему обычное замыкание убивает лицо

  4. 04

    Когда нейросеть не нужна: планету-литофанию считаем формулой

Зачем менять Tripo и Meshy на локальный TRELLIS.2

TRELLIS.2 от Microsoft превращает картинку в 3D-модель прямо на домашнем ПК. В кейсе на Habr она работает на машине с RTX 5060 Ti 16 ГБ, и число прогонов ограничено только вашим терпением, а не балансом аккаунта. Этого хватило, чтобы напечатать два светильника: орочий череп, который светится изнутри, и планету-литофанию на подставке из корней.

Экономика простая. У Tripo тариф Pro стоит около $20 в месяц и даёт примерно 200 моделей, у Meshy примерно $20 за 1000 кредитов, то есть до 100 моделей. Локальный запуск убирает счётчик генераций, зато переносит на пользователя доводку меша: без обработки результат редко становится готовым файлом для печати.

Два светильника в кейсе показывают два разных сценария. Череп отвечает на вопрос, где нейросеть нужна: органика со сложным силуэтом и мелкими отверстиями. Планета показывает обратное: гладкую сферу с рисунком проще посчитать формулой. В обоих случаях основное время уходит на инженерию, а не на саму генерацию.

Что умеет TRELLIS.2 и где её предел на 16 ГБ VRAM

Модель принимает изображение и выдаёт трёхмерную геометрию, все вычисления идут локально. Верхнюю границу здесь задаёт не желание, а видеопамять: режим 1536_cascade не уместился в 16 ГБ на этапе декодирования. Это не ошибка установки и не сломанный конфиг, а честный лимит железа. Рабочий вариант в кейсе - 1024_cascade.

Источник не называет точную версию TRELLIS.2 и полную конфигурацию ПК помимо видеокарты и объёма VRAM. Условия лицензирования тоже не раскрыты: слово «бесплатно» в кейсе относится к запуску на своём железе, а не к любым сценариям применения. Перед коммерческим использованием модели лицензию стоит проверить отдельно.

Сколько реально экономит отказ от подписки

Считайте не абстрактную выгоду, а свой объём работы. Подписка Tripo Pro за ~$20 в месяц покрывает около 200 моделей, Meshy за те же ~$20 даёт 1000 кредитов, то есть до 100 моделей. Если делать один светильник в месяц, локальный путь окупается не деньгами, а свободой экспериментов: можно перебрать десять вариантов формы и не смотреть на тариф.

Второй фактор - время. Генерация занимает минуты, обработка меша и подготовка к печати могут съесть вечер. Локальная схема выигрывает, когда вы печатаете регулярно и готовы разбираться с вокселизацией. Подписка выигрывает, когда нужен готовый результат без ручной возни.

Как устроены платные конвейеры и где в них остаётся ручная работа, видно на соседнем материале проекта: путь 10 лоуполи-ассетов от Seedream 5.0 Pro до 3D в Meshy и Neural4D. Генератор отвечает за стиль, доработка всё равно ложится на человека.

Режимы 1536_cascade и 1024_cascade: что влезает в 16 ГБ

Цифры из кейса дают ориентир для планирования. Прогон в 1024_cascade без текстур занял 181 секунду с пиком 12 ГБ, на выходе получилось около 24 млн треугольников. На карте с 16 ГБ остаётся запас в 4 ГБ, и он не бесконечный: часть памяти забирают система и сам пайплайн.

Почему 1536_cascade упирается в память на декодировании

Генерация идёт по этапам, и память расходуется неравномерно. Пик приходится на декодирование, когда промежуточные представления разворачиваются в геометрию высокого разрешения. Режим может не влезть даже при свободной памяти на предыдущих шагах: на декодировании её уже не хватает.

Практический вывод: начинайте с 1024_cascade, следите за пиком памяти и не гонитесь за максимальным разрешением. Для печати светильника сверхплотная сетка выигрыша не даёт, а время и VRAM расходует заметно. Бенчмарков других видеокарт источник не приводит, так что переносить эти цифры на другую GPU без собственной проверки не стоит.

24 млн треугольников: что с этим делать дальше

24 млн треугольников для печати избыточны. Такой меш тяжело открыть в слайсере, он тормозит булевы операции и плохо поддаётся ремонту. Это сырьё для следующего шага: вокселизации и перестроения поверхности в тело с нужной толщиной стенки.

Простое уменьшение полигонов задачу не решает. Если меш не замкнут, слайсер не понимает, где внутренняя сторона, и печатает стенку непредсказуемо. Дальше в кейсе как раз решается задача, как получить замкнутую оболочку и при этом сохранить лицо.

От сырого меша к печатному телу: почему обычное замыкание убивает лицо

Первый светильник - орочий череп, который светится изнутри. Нейросеть дала форму, дальше началась инженерия. Наивный путь выглядит логично: взять сырой меш и замкнуть его в сплошное тело, чтобы получить замкнутый объём для печати.

На черепе этот приём сработал плохо. Замыкание закрыло глазницы и височные отверстия плоскими заплатками, и лицо стало чужим. Для светильника это критично: пустоты в черепе и есть то, через что проходит свет и что делает силуэт узнаваемым.

Как работает build_preserved_shell.py

Скрипт меняет логику обработки. Вместо заливки внутреннего объёма он вокселизует только поверхность: вокруг исходной геометрии наращивается узкая полоса материала, и из неё заново извлекается сетка. Внутренняя полость не заполняется, поэтому глазницы и височные окна остаются открытыми.

Последовательность такая:

  1. Сырой меш от TRELLIS.2 загружается как источник поверхности.
  2. Поверхность вокселизуется: вокруг геометрии строится объёмное представление.
  3. Вокруг поверхности наращивается узкая полоса материала заданной ширины.
  4. Из полученного объёма заново извлекается сетка, уже замкнутая и пригодная для нарезки.

Конкретные параметры вокселизации в источнике не разобраны, их придётся подбирать под масштаб модели. Слишком крупный шаг съест мелкие детали, слишком мелкий даст тяжёлую сетку и долгую обработку. Логика для светильника правильная: нужна оболочка с открытыми деталями, а не сплошная масса. Скрипт лежит на GitHub вместе с инструкцией, так что последовательность можно повторить на своей модели.

Если геометрию после генерации нужно править вручную, пригодятся приёмы из кейса про 3D-модель, собранную в Blender через Claude и GPT: там разобраны итерации правки формы и сжатие готового файла.

Ошибка с уходом оболочки ниже нуля и обрезка по плоскости

После утолщения вылезла другая проблема. Часть оболочки ушла ниже нуля, и при переносе модели на стол опорное кольцо поднялось примерно на 1,2 мм. Принтер начинал бы печать не с него, и первый слой лёг бы в воздух или в случайную точку.

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

Когда нейросеть не нужна: планету-литофанию считаем формулой

Второй светильник строится противоположным способом. Планета-литофания: рисунок меняет внутреннюю поверхность гладкой сферы, а снаружи остаётся ровный шар. Генерировать такую форму нейросетью бессмысленно, её проще посчитать.

Формула толщины стенки из яркости

В кейсе заявлен подход, где толщина стенки считается из яркости карты по формуле:

0.8 + (1.0 - brightness) * (3.0 - 0.8)

Диапазон получается от 0.8 до 3.0 мм. Проверим на краях: при brightness = 1.0 множитель обнуляется и остаётся 0.8 мм, при brightness = 0.0 выходит 0.8 + 3.0 - 0.8 = 3.0 мм. Светлый участок карты даёт тонкую стенку и пропускает больше света, тёмный даёт толстую стенку и держит свет.

Формулу из описания кейса текст источника не подтверждает: в доступном фрагменте её нет. Воспринимайте выражение как заявленный автором подход и подбирайте диапазон под свой материал и принтер. Для PLA и PETG рабочие толщины различаются, а слишком тонкая стенка на большой сфере начнёт просвечивать раньше, чем хотелось бы.

Почему для гладкой сферы генерация избыточна

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

Правило простое. Органика и сложные силуэты (череп, листва, фактуры) - территория TRELLIS.2. Регулярная геометрия (сфера, цилиндр, плашка с рисунком) - территория формулы и параметрического скрипта. В кейсе оба подхода соседствуют, и это самая полезная часть материала: инструмент выбирается под форму, а не наоборот.

Инженерные ловушки светильника: посадка, поддержки, нарезка

Печать светильника отличается от печати статуэтки. Здесь важны посадочные места, путь света и отсутствие лишних опор внутри тонкой стенки. В кейсе собрано несколько решений, которые стоит разобрать отдельно.

Посадка шара между корнями через smoothstep

Планета сидит на подставке из корней, и стык двух форм требует аккуратности. smoothstep даёт плавный переход вместо резкой границы: ветви разводятся вокруг сферы без разрывов и артефактов, поверхность остаётся непрерывной. Без такого сглаживания в месте контакта появляются ступеньки и тонкие стенки, которые ломаются при печати.

Точные коэффициенты в источнике не приводятся. Общий принцип: параметр сглаживания задаёт ширину зоны перехода, и подбирать его нужно по масштабу модели, чтобы корни не сходились у шара в комок.

Отдельный приём - вычитание объёма движущегося шара при установке. Деталь садится в посадочное место без пересечений: из подставки вычитается объём, соответствующий траектории шара, и он входит в паз без натяга. Способ удобен, когда нужен зазор под клей или свободную посадку.

Наклонная полка вместо поддержек и проверка sparse infill

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

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

Чек-лист перед печатью:

  • опорная плоскость ровная, модель стоит на столе без смещения по Z;
  • стенка плафона нарезана сплошной, sparse infill в ней отсутствует;
  • поддержки не попадают на видимые поверхности и внутрь полости;
  • толщина стенки выдержана в выбранном диапазоне по всей высоте;
  • посадочные места дают нужный зазор, деталь собирается без натяга.

Эти решения взяты из одного авторского кейса, а не из отраслевого стандарта. Проверяйте их на своей геометрии и своём принтере.

Повторяем кейс: скрипты, STL и инструкция на GitHub

Скрипты, пример карты и инструкция выложены на GitHub, готовые STL - в релизе. Главная проблема повторения снята: последовательность не нужно восстанавливать по тексту, файлы уже собраны. Подготовить стоит картинку с чётким силуэтом, локальную установку TRELLIS.2 и слайсер.

Пошаговый маршрут от картинки до печати

  1. Подготовьте изображение с читаемым силуэтом. Для органики важен ракурс, где видны отверстия и мелкие детали.
  2. Запустите TRELLIS.2 локально в режиме 1024_cascade. Ориентир по RTX 5060 Ti 16 ГБ: около 181 секунды и пик 12 ГБ.
  3. Прогоните меш через build_preserved_shell.py, чтобы получить замкнутую оболочку с открытыми деталями.
  4. Проверьте минимальную координату по Z и при необходимости обрежьте модель плоскостью: после утолщения опорное кольцо может уехать вверх примерно на 1,2 мм.
  5. Нарежьте модель и проверьте стенку на отсутствие sparse infill, а также расположение поддержек.
  6. Напечатайте, установите деталь в посадочное место и проверьте подсветку.

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

Кому подходит локальный TRELLIS.2, а кому проще остаться на подписке

Локальный путь имеет смысл, если есть GPU с запасом видеопамяти, как RTX 5060 Ti 16 ГБ в этом кейсе, и вы готовы доводить меш скриптами. Второе условие важнее первого: без вокселизации и проверки геометрии сырой результат редко доходит до принтера в приличном виде.

Подписка Tripo или Meshy проще, когда нужны готовые модели без ручной инженерии, а объём работы невелик. Платите ~$20 в месяц, получаете свой лимит генераций и не думаете о декодировании, пиках VRAM и вокселизации.

Ограничения локального варианта стоит назвать прямо. 1536_cascade не уместился в 16 ГБ, сырой меш требует обработки, а часть деталей кейса (точные параметры обрезки по плоскости, коэффициенты smoothstep, формула толщины) в источнике не раскрыта или не подтверждена. TRELLIS.2 - рабочий бесплатный инструмент, но не кнопка «сделать светильник». Он убирает счётчик генераций и оставляет инженерию вам.

Начать проще с одного объекта и одного режима: 1024_cascade, затем build_preserved_shell.py, затем нарезка с проверкой стенки. Когда маршрут пройден на черепе, планета по формуле собирается уже за вечер.

Подписаться на канал