Подготовка модели в 3ds max

Материал из Light Stream (RU)
Версия от 15:54, 3 сентября 2026; LumiBot (обсуждение | вклад) (Задача №1089 (LS Dev Hub))
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Эта статья — о том, какой должна быть модель, чтобы она встала в сцену Light Stream нужного размера, нужной стороной вверх и без потерь. Речь идёт о 3ds max, но требования одинаковы для любого 3D-редактора: программе важно не в чём модель сделана, а что записано в файле *.obj. О самом импорте рассказывает статья Импорт моделей OBJ.

Готовить модель для Light Stream нужно не «покрасивее», а «понятнее». Красивого рендера здесь не будет: программа показывает объект простой заливкой с одной текстурой. Зато по вершинам модели работает привязка, а её объекты становятся строками списка, который вы будете листать весь проект, — поэтому важнее всего правильный масштаб, чистая геометрия и осмысленные имена.

Что переносится в Light Stream, а что нет

Переносится Не переносится
  • Геометрия — треугольники и четырёхугольники
  • Разбивка на объекты и их имена
  • Нормали (светотень и сглаживание)
  • Линии — они становятся сплайнами
  • Развёртка (координаты текстуры)
  • Основной цвет материала и основная текстура
  • Модификаторы, история построения, кости и анимация
  • Слои, группы, связи «родитель — потомок»
  • Группы сглаживания сами по себе
  • Все карты, кроме основной текстуры: рельеф, отражение, прозрачность, самосвечение
  • Второй и следующие материалы одного объекта
  • Источники света и камеры — из *.obj они не приходят
  • Вершинные цвета

Единицы и масштаб

Координаты берутся из файла как есть: окна с масштабированием при импорте нет, и подогнать размер «на входе» не получится.

Сцена Light Stream измеряется в миллиметрах: одна единица длины файла — это один миллиметр. Фасад высотой 30 м должен занимать в файле 30 000 единиц, а отдельный пиксель светодиодной линейки — три-четыре десятка. Проверить масштаб проще всего кубом, созданным в самой программе: задайте ему в окне Свойства (раздел Куб) Ширину, Высоту и Длину по 1000 — это метровый кубик, поставьте его рядом с моделью и сравните.

В 3ds max удобнее всего работать так: задайте системные единицы в миллиметрах и моделируйте в реальных размерах — тогда при экспорте ничего пересчитывать не нужно и коэффициент масштаба остаётся равным 1. Если сцена собрана в других единицах, задайте коэффициент масштаба при экспорте: из метров — 1000, из сантиметров — 10, из дюймов — 25,4.

Ошибка в единицах — самая частая причина того, что после импорта «ничего не видно». Модель, экспортированная в метрах, оказывается в тысячу раз мельче нужного и теряется среди приборов; модель, случайно увеличенная в тысячу раз, уезжает на километры от начала координат, и камера показывает пустоту.

Ориентация

Вверх в сцене Light Stream смотрит ось Z — как и в 3ds max. Поэтому в настройках экспорта OBJ флажок Flip YZ-axis (перестановка осей под Y-вверх) нужно снять: с ним модель ляжет в сцене на бок. Если модель всё же легла, переключите этот флажок и экспортируйте заново.

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

Разбивка на объекты и имена

Файл разбирается на отдельные объекты, и каждый из них становится строкой в окне 3D Объекты со своим флажком видимости, своим материалом и своим замком. Правила простые:

  • Вся геометрия должна лежать в именованных объектах. То, что записано в файл до первого объекта, не импортируется.
  • У каждого объекта должно быть имя. Безымянный объект или группа обрывают чтение файла: то, что записано ниже, в сцену уже не попадёт, и модель придёт наполовину.
  • Имена — латиницей, без кириллицы. Это касается и имён объектов, и имён файлов, на которые ссылается модель, — файла материалов и текстур. Русские буквы в них превращаются при импорте в набор вопросительных знаков, а текстура с таким именем просто не находится.
  • Не называйте объект light. Это служебное имя: геометрия объекта с таким именем считается не декорацией, а светящейся частью — она рисуется не своим материалом, а светом, и в сцене её не видно, пока объект не выделен.
  • Разбивайте по смыслу: «facade», «roof», «column_left». Модель из одной сплошной детали будет одной строкой в списке — спрятать или перекрасить её часть уже не выйдет.
  • Не увлекайтесь и обратным: несколько сотен мелких объектов превращают список 3D Объекты в бесконечную ленту, по которой неудобно искать.

Полигоны

Light Stream читает треугольники и четырёхугольники. Грани с пятью и более вершинами пропускаются молча — на их месте в сцене будут дыры.

Поэтому в настройках экспорта в группе Faces выбирайте Triangles или Quads, но не Polygons. Перед экспортом сверните модификаторы и переведите объекты в полигональную сетку: NURBS, патчи, тела с булевыми операциями и прочие непросчитанные объекты в OBJ либо не попадут, либо попадут не тем, чем выглядели в окне проекции.

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

Нормали

Нормали в файл записывать обязательно — в настройках экспорта это флажок Normals. По ним программа считает светотень: без нормалей объект не подсвечивается вовсе и остаётся в сцене ровным чёрным силуэтом без объёма.

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

Светотень считается только для деталей, окрашенных цветом. Объект с текстурой рисуется ровно, без затенения, — на него нормали не влияют.

Отсечения задних граней в Light Stream нет — грань видна с обеих сторон, поэтому вывернутая наружу деталь не исчезнет. Но нормаль, направленная от света, гасит светотень: такая грань будет заметно темнее соседних. Если после импорта на модели тёмные пятна, проверьте направление нормалей в редакторе.

Линии под приборы

Линии, записанные в файл, приходят в сцену готовыми сплайнами — по ним сразу можно расставлять приборы, не обводя рёбра вручную. Это самый удобный способ передать в Light Stream трассы линеек, гирлянд и контурной подсветки: рисуете их сплайнами в 3ds max по месту, и в программе остаётся только связать их с маппингом.

Чтобы линии дошли:

  • включите их экспорт — флажок Shapes/Lines в настройках экспорта OBJ;
  • переведите сплайны в ломаные с нужным числом точек: кривые записываются в файл отрезками, и чем меньше шаг, тем больше точек придёт в сцену;
  • соедините сегменты в одну линию. Каждая линия файла становится отдельным сплайном, поэтому трасса, собранная из несоединённых отрезков, придёт россыпью коротких сплайнов;
  • отключите экспорт текстурных координат, если сплайны не появились: некоторые экспортёры дописывают их и в строки линий, а такие строки Light Stream пропускает.

Имя сплайна берётся не у самой линии, а у объекта, внутри которого она записана, — поэтому линии стоит собирать в отдельные осмысленно названные объекты: «line_roof», «contour_window». Сам такой объект в списке 3D Объекты не появится: если в нём нет граней, в сцену приходят только сплайны.

Отдельного объекта для приборов делать не нужно: источники света из 3ds max в OBJ не сохраняются вовсе. Если хочется передать в программу и расставленные светильники, экспортируйте модель в *.fbx — оттуда, кроме объектов и сплайнов, приходят и одиночные приборы.

Материалы и текстуры

Материалы OBJ хранит в отдельном файле рядом с моделью, а текстуры — это ещё и отдельные картинки, поэтому включайте экспорт материалов и всегда переносите модель целиком, всей папкой.

Что нужно знать про материалы заранее:

  • Один объект — один материал. Многокомпонентный материал (Multi/Sub-Object) переносится только одной своей частью — той, что упомянута в файле последней, и она достаётся всему объекту. Если части детали должны быть разного цвета, разделите деталь на объекты по материалам.
  • Из материала берутся только основной цвет и основная текстура. Прозрачность, отражения, рельеф, самосвечение и любые процедурные карты игнорируются — их лучше «запечь» в обычную картинку или не рассчитывать на них.
  • Текстуры — обычные картинки JPG, PNG, BMP или GIF. Кладите их рядом с моделью или во вложенную папку: программа ищет файл по имени рядом с моделью и во всех вложенных папках. Имена файлов — латиницей.
  • Для текстуры нужна развёртка. Объект без развёртки получит текстуру, размазанную одним цветом.
  • Самосветящихся материалов в Light Stream нет. Если деталь должна выглядеть светящейся — вывеска, экран, световая линия, — включите ей после импорта флажок Свечение в разделе Материал окна Свойства.

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

Сложность модели

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

Разумный минимум подготовки перед экспортом:

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

Порядок экспорта

  1. Соберите в сцене 3ds max только то, что должно уехать в Light Stream: саму модель и линии под приборы.
  2. Сверните модификаторы, переведите объекты в полигональную сетку, удалите скрытое и лишнее.
  3. Проверьте имена объектов: они должны быть, и они должны быть латиницей.
  4. Проверьте размеры и приведите модель к масштабу «одна единица — один миллиметр».
  5. Экспортируйте выделенное в *.obj.
  6. В настройках экспорта: FacesTriangles или Quads; Normals — включить; Texture coordinates — включить, если есть текстуры; Shapes/Lines — включить, если в сцене есть линии под приборы; Flip YZ-axis — снять; экспорт материалов — включить.
  7. Сохраните модель, файл материалов и текстуры в одну папку и импортируйте оттуда.

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

Что проверить после импорта

  1. Нажмите Z в окне 3D Просмотр, ничего не выделяя, — камера впишет всю сцену. Создайте рядом куб и задайте ему Ширину, Высоту и Длину по 1000: если метровый кубик рядом с фасадом выглядит как метровый кубик, масштаб верен.
  2. Посмотрите список 3D Объекты: на месте ли все детали, читаемые ли у них имена, пришли ли сплайны с линий.
  3. Обойдите модель камерой и поищите дыры на месте сложных граней и тёмные пятна на месте вывернутых нормалей.
  4. Убедитесь, что объекты не серые, если вы экспортировали материалы: ровный серый цвет означает, что ни материал, ни текстура не нашлись.

Всё, что не сошлось, надёжнее исправить в 3ds max и импортировать заново: доводить геометрию средствами Light Stream нельзя, а модель, исправленную в редакторе, вы сможете использовать и в других проектах.

Что ещё пригодится