3D

Форматы 3D для игр: FBX, OBJ и текстуры

Каждый персонаж, каждый ящик и каждая пушка в игре — это связка двух вещей: 3D-модели и натянутых на неё текстур. Но как модель из Blender попадает в Unity? Почему для анимации нужен FBX, а не OBJ? И причём тут UV-развёртка, PBR и загадочные форматы DDS и TGA? Разбираем весь конвейер игровой графики простыми словами.

3D-принтер в мастерской геймдизайнера с яркой RGB-подсветкой в фиолетовых тонах
За каждым игровым объектом стоит конвейер: смоделировать, развернуть UV, наложить текстуры, импортировать в движок. Фото: Pexels

Из чего собран игровой объект

Любой предмет в игре — это, по сути, две сущности, работающие в паре. Первая — 3D-модель (mesh): каркас из вершин и полигонов, задающий форму. Вторая — текстуры: 2D-картинки, которые натягиваются на этот каркас и дают ему цвет, блеск и рельеф. Голая модель выглядит как серая болванка; текстуры превращают её в ржавую бочку, кожаный доспех или блестящий меч.

Чтобы всё это оказалось в игре, художник проходит конвейер: моделирует объект, делает ему UV-развёртку, рисует текстуры, а затем импортирует модель и текстуры в игровой движок — Unity или Unreal. На каждом этапе — свои форматы файлов, и путаница в них ломает результат. Разберём по порядку.

Коротко

Игровой ассет = 3D-модель (обычно FBX) + набор текстур (DDS/TGA/PNG), связанных через UV-развёртку. Движок собирает из них материал и рисует объект на экране в реальном времени.

FBX и OBJ: чем модель едет в движок

Из десятков 3D-форматов в геймдеве закрепились два — и выбор между ними решает одна вещь: нужна ли анимация.

FBX — стандарт индустрии. Этот формат от Autodesk несёт не только геометрию, но и всё, что делает персонажа живым: скелетную анимацию, риггинг (кости и скиннинг), морф-таргеты, камеры и целую иерархию сцены. Поэтому анимированный герой, враг или машина с открывающимися дверями едут в движок именно в FBX — без потерь.

OBJ проще: он хранит только геометрию и ссылку на материалы, но не умеет в анимацию. Его удел — статичные объекты: камни, здания, реквизит окружения. Если вещь не двигается, OBJ подойдёт; если двигается — только FBX. Подробнее о различиях — в нашем сравнении OBJ, FBX, STL и glTF.

ФорматАнимацияРиг / костиКогда брать
FBXДаДаПерсонажи, всё анимированное
OBJНетНетСтатичное окружение, реквизит
glTF/GLBДаДаВеб-игры, лёгкие ассеты, Unreal

Импорт в Unity и Unreal

Оба главных движка принимают эти форматы, но с нюансами. Unity поддерживает OBJ и FBX, причём FBX — рекомендованный формат. Unreal Engine работает с OBJ, FBX и GLB, и для него GLB часто удобнее.

Ключевой момент при импорте — не забыть про текстуры. Движки ищут их по соглашению: например, Unity сначала смотрит в подпапку Textures рядом с моделью, а если не находит — сканирует проект целиком. Поэтому текстуры кладут в понятную папку рядом с FBX, иначе модель приедет «голой» и серой. Полезный совет от практиков: при импорте отключайте «Recompute Normals» и «Recompute Tangents», если художник уже подготовил их правильно.

Стол 3D-принтера Prusa с сеткой координат и пиктограммами предупреждений
Как принтер работает по координатной сетке, так и текстура ложится на модель по «сетке» UV-координат. Фото: Pexels

UV-развёртка: как текстура ложится на модель

Вот момент, который сбивает с толку новичков: как плоскую 2D-картинку аккуратно натянуть на трёхмерную фигуру? Ответ — UV-развёртка (UV unwrapping). Представьте, что вы разрезали картонную коробку по рёбрам и разложили её в плоский чертёж. Ровно это делают с 3D-моделью: её поверхность «разворачивают» в двумерную выкройку, где каждой точке модели соответствует координата на текстуре.

Буквы U и V — это просто оси на плоскости текстуры (аналог X и Y, только названия свободные, ведь XYZ уже заняты в 3D). Без корректной UV-развёртки текстура ляжет с растяжениями, некрасивыми швами или вовсе не появится. Именно UV — тот невидимый мост, что связывает пиксели картинки с гранями модели.

Частая ошибка

Текстура «плывёт», тянется или показывает швы? Почти всегда виновата плохая UV-развёртка, а не сама картинка. Проверять нужно UV, а не перерисовывать текстуру. Кривые UV — причина №1, по которой «текстура не накладывается».

PBR: набор карт вместо одной картинки

Современные игры рисуют материалы по технологии PBR (physically based rendering, физически корректный рендеринг). Суть в том, что на один объект идёт не одна текстура, а целый набор карт, каждая из которых отвечает за свой аспект поверхности:

  • Base Color / Albedo — базовый цвет без света и теней.
  • Metallic — где поверхность металлическая, а где нет.
  • Roughness — насколько поверхность шероховатая или гладкая (матовая или зеркальная).
  • Normal — карта нормалей, имитирующая мелкий рельеф.
  • Ambient Occlusion — мягкое затенение в углублениях.

Движок смешивает эти карты в один материал, и объект начинает реалистично реагировать на свет: металл бликует, ржавчина матовая, вмятины притеняются. Все карты обязаны быть корректно привязаны к материалу — иначе поверхность выглядит «пластиково» или неправильно.

5+карт в одном PBR-материале
UVсвязывает модель и текстуру
FBXстандарт анимации в геймдеве

Форматы текстур: DDS, TGA, PNG

Теперь про сами картинки-текстуры — и здесь у игр свои любимые форматы. В работе художники держат исходники в PNG и TGA: оба поддерживают альфа-канал (прозрачность), а TGA исторически прижился в геймдеве как надёжный формат с альфой. О нём у нас есть отдельный разбор — TGA в играх и графике.

А вот в готовой игре текстуры чаще всего хранятся в DDS (DirectDraw Surface). Его секрет — блочное сжатие: данные лежат в таком виде, что видеокарта читает их напрямую, без распаковки, экономя видеопамять и держа стабильный FPS. Почему движки его обожают, мы разбирали в статьях что такое DDS и DDS в играх. А для тех, кто лезет в чужие игры, есть гид по моддингу текстур через DDS.

Модель задаёт форму, UV-развёртка задаёт «куда клеить», а текстуры дают жизнь. Сломайте любое звено — и красивый ассет превратится в серую болванку.
Хотенд принтера Ender укладывает нить филамента — метафора послойной сборки сцены
Как принтер собирает деталь слой за слоем, так движок собирает кадр из геометрии, материалов и текстур. Фото: Pexels

Карты нормалей и магия деталей

Отдельного слова заслуживает карта нормалей — приём, без которого современная графика немыслима. Это специальная текстура (обычно сине-фиолетовая на вид), которая хранит не цвет, а направление «микрорельефа» в каждой точке. Видеокарта читает её и подсвечивает поверхность так, будто на плоской грани есть настоящие царапины, поры, заклёпки и швы.

Зачем это нужно? Чтобы низкополигональная модель выглядела детализированной, не нагружая игру миллионами полигонов. Художник лепит высокодетальную скульптуру, «запекает» её рельеф в карту нормалей, а в игру идёт лёгкая модель плюс эта карта. Результат — детализация уровня кино при производительности, которую тянет обычный ПК. Именно связка «лёгкая геометрия + PBR-карты + сжатые DDS-текстуры» и делает современные игры одновременно красивыми и быстрыми.

Готовите текстуры для игрового проекта?

FormatZ конвертирует изображения между PNG, JPG, TGA и другими форматами прямо в браузере — быстро, без установки и регистрации. Идеально для подготовки исходников текстур.

Открыть все форматы

Хотите глубже разобраться в форматах текстур? Начните с что такое DDS, а для выбора формата модели — с обзора OBJ, FBX, STL и glTF.

Чаще всего в FBX — он несёт не только геометрию, но и анимацию, риггинг, камеры и всю сцену, поэтому это стандарт для игровых персонажей. OBJ тоже импортируется, но подходит для статичных объектов без анимации. Unity рекомендует FBX, Unreal хорошо работает с FBX и GLB.
OBJ хранит только геометрию и материалы, но не умеет в анимацию, кости и скиннинг. Для движущегося персонажа с ригом это фатально: OBJ просто не сохранит скелет и ключевые кадры. FBX от Autodesk создавался как раз для полного обмена сценами и без потерь переносит анимацию из Blender или Maya в движок.
UV-развёртка — это «разворачивание» трёхмерной поверхности модели в плоскость, чтобы на неё можно было точно натянуть 2D-текстуру. Без корректных UV текстура ляжет с растяжениями, швами или вовсе не появится. Именно UV связывают точки на модели с пикселями на картинке-текстуре.
Для рабочих файлов и исходников — PNG и TGA (с альфа-каналом), а для готовых игровых текстур движки чаще всего используют DDS: он хранит данные блоками, которые видеокарта читает напрямую, экономя видеопамять. В PBR-материале на один объект идёт набор карт: базовый цвет, металличность, шероховатость и карта нормалей.
Карта нормалей — это специальная текстура, которая имитирует мелкий рельеф поверхности (царапины, поры, швы) без добавления реальной геометрии. Видеокарта использует её, чтобы правильно отразить свет и создать иллюзию объёма на плоской грани. Это ключ к тому, чтобы низкополигональная модель выглядела детализированной и не тормозила игру.