Текстуры, файлы и паки · 3 мин чтения

Как добавить мипмапы в YTD: розовые или мерцающие текстуры вблизи

Читать на:: English · Español · Français · Deutsch · Português · Italiano · Polski · Türkçe

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

Почему текстура без мипмап создаёт проблемы

Почти всё в игре имеет мипмапы. Мы просмотрели 1500 собственных .ytd GTA V: из их 3534 цветовых текстур только 65 имеют один уровень, и только 2 из них больше 64 пикселей, оба — значки машин. Текстуры, которые игра оставляет на одном уровне, оставлены так намеренно: tint-палитры, render targets скриптов (script_rt_…), карты воды, значки и некоторые изображения интерфейса.

У текстуры без меньших уровней у игры нет способа её понизить. Когда памяти текстур не хватает, скорее всего, она будет выглядеть розовой или размытой, внезапно появляться вблизи, а издалека мерцать. Именно это мы увидели у аддон-педа клиента: вблизи в игре розовый, хотя все текстуры были на месте. Текстура его тела — 2048 × 2048 DXT5, сохранённая с одним уровнем.

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

Найдите текстуры без мипмап

Три инструмента перечисляют их по одному правилу (один уровень, больше 64 пикселей и не один из тех типов, которые игра держит на одном уровне):

  • Missing Textures Check: весь ресурс; раздел Size and format перечисляет текстуры без мипмап.
  • Asset Optimizer: перетащенные файлы с надписью "N textures with no mipmaps" (N текстур без мипмап) у каждого.
  • Model Inspector: одна модель и её .ytd, с разделом No mipmaps.

Перестройте их с мипмапами

  1. Перетащите .ytd в Asset Optimizer вместе с моделями, которые его используют (.ydr, .yft, .ydd). Когда модели рядом, обычные карты распознаются по тому, как модели их используют.
  2. Оставьте Add missing mipmaps включённым (по умолчанию так и есть).
  3. Выберите Largest texture size (максимальный размер текстуры). Текстуры больше него уменьшаются до этого размера; остальные сохраняют свой размер (округлённый до степени двойки) и получают только мипмапы.
  4. Нажмите Download the lighter files (.zip) и верните файлы в stream/ под теми же именами.
  5. Прочитайте What was done to each texture (что сделано с каждой текстурой): по строке на текстуру, с размером и форматом до и после.
Asset Optimizer после запуска: таблица файлов с размером после обработки и заметки по каждой текстуре, например 2048 DXT5 без мипмап, пересозданная в 1024 с 9 мипмапами
Тестовый .ytd с шестью текстурами, сохранёнными без мипмап, после запуска: каждая создана заново со своими уровнями.

Каждая перестроенная текстура получает все уровни вплоть до 4 пикселей. Сжатые цветовые текстуры становятся DXT1, если ни один пиксель не прозрачен, и DXT5, если некоторые прозрачны (несжатые остаются несжатыми). Карты нормалей остаются картами нормалей и на каждом уровне снова приводятся к единичной длине. Палитры, render targets и другие типы с одним уровнем не трогаются, а форматы, которые инструмент не может перестроить (например, BC7), остаются как есть, с пометкой.

Texture Editor для этого не подходит: он уменьшает и заменяет текстуры, но не добавляет мипмапы текстуре, которую вы оставляете как есть. Текстура, которую вы там заменили, вернётся с мипмапами.

Проверьте в игре

Игроки сохраняют старый .ytd, пока не переподключатся, поэтому переподключитесь к серверу, а не только перезапускайте ресурс. Затем посмотрите на модель вблизи и издалека.

Вопросы

Должны ли все текстуры иметь мипмапы?
Почти все в GTA V их имеют. Исключения — текстуры, которые игра намеренно держит на одном уровне (tint-палитры, render targets скриптов, карты воды), и инструменты оставляют их в покое.
Мипмапы увеличивают мои файлы?
Примерно на треть. Если из-за этого файл превысит предупреждение FiveM в 16 MiB, одновременно уменьшите максимальный размер текстуры.

Инструмент для этого

Asset Optimizer

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

Открыть Asset Optimizer

Пригодится также: Missing Textures Check · Model Inspector

Другие руководства

Все руководства →

Каждый инструмент можно попробовать бесплатно: 5 экспортов в день. Войдите через Discord, чтобы пользоваться ими.