Эта статья является переводом сразу двух статей от Simon Schreibt. Обе статьи на одну тему и являются взаимодополняющими. Не пугайтесь того, что в начале все набрано большими буквами, это стилистика автора и я постарался максимально её сохранить.
То, что вы видите тут
это сносшибательные фоны
одной из наиболее прекрасных научно-фантастических игр.
H o m e w o r l d 2
Благодарю за прочтение.
Шучу, разумеется. Конечно же у меня есть что рассказать на эту тему. В нашей компании мы время от времени смотрим на арт из Homeworld и преклоняемся мастерству его создателей. Теперь, после того, как мы обсудили как здорово выглядит фон и как интересен этот набросочный стиль (скетч), остаётся что-то… некоторые детали кажутся… специально для нас.
Я упомянул, что это выглядит немного как… градиентное раскрашивание по вершинам. Но они же не будут рисовать фон геометрией, верно? Я имею ввиду… что в этом случае это должна быть довольно сильно тесселированная сфера. Обсуждения были закончены, но я не был удовлетворен результатом и хотел, хотябы, увидеть текстуры. Поэтому я использовал некоторые утилиты для извлечения из Homeworld 2 Demo данных, однако текстур там не было. Только некоторое количество .HOD файлов. Погуглив я нашел тему о том, как генерировать эти .HOD файлы из .TGA. Она гласила:
“…сканирует каждый пиксель изображения и затем на основе контраста
решает добавить или нет новую вершину и цвет…”
ЧТО?
Может ли это действительно быть раскраской вершин? Благо можно посмотреть на .HOD файл с помощью CFHodEdit. Другая утилита может включить принудительный режим отображения сетки. Смотрите, что получается вытащить на свет:
Это одно
из самых смелых
решений для игрового арта, который я когда-либо видел.
И здесь вы можете заметить как это влияет на геометрию небесной сферы в игре. Видите как мало разрешение в неконтрастных областях? И какая гладкая сфера в местах, где имеется много деталей?
Никогда даже не думал, что таким образом можно получить такие хорошие результаты. Ой, и не забудьте, что такой подход решает две большие проблемы.
#1 Нет никаких проблем с артефактами от сжатия текстур DDS форматом.
#2 Более важно со стороны композиции: из-за того, что нельзя получить сильную детализацию (в обучении сказано, что исходная TGA не должна содержать множество четких деталей), фон остается где он и должен быть:
НА ФОНЕ.
Очень часто я вижу игры, где фон содержит слишком много шума и деталей, которые правда очень трудно отличить от среднего и ближнего плана.
Последний раз я видел идеальную комбинацию технологии и композиции в Diablo 3. Я говорю о моей статье «Деревья в Diablo 3».
Конец первой статьи. Вторая часть.
Некоторые спрашивают в теме на Polycount как эти сферы в Homeworld были сделаны. Давайте сделаем её вместе! Ну, мы-то будем использовать для этого утилиты для модов. И я не имею ни малейшего представления о том насколько это близко к оригинальному подходу Relic в данном вопросе.
Download
Скачайте эту коллекцию утилит для модов и используйте инструмент “HW2BGBuilder”. Здесь также есть “HW2 – Spookysoft – HOD Tool 1.5.0.1″ но для меня он не особо подошел.
HOD Viewer
Для просмотра .HOD файлов нужно использовать “CFHodEdit 3.1.5″ (откройте ваш .HOD файл, затем в нижней части программы найдите закладку “Miscellaneous” и нажмите “HOD Preview”).
Поехали!
Хорошо, сначала мы создадим тестовую .TGA чтобы увидеть чего нам ожидать. Думаю это должно неплохо сработать (1024×512, 24bit):
Создадим ярлык для HW2BGBuilder.exe и перетащим на него нашу текстуру. Дадим утилите рассчитать необходимое и потом нажмем “Space” (игра слов от автора. Подразумевается и кнопка пробел и космос одновременно. Прим. пер.) для старта процесса. Почувствуем себя хакером Матрицы пока числа будут бежать вниз по командной строке.
И вот как это выглядит в “CFHodEdit”. Вы можете очень четко видеть UV развертку сферы. Так, теперь мы знаем три вещи:
- Не следует добавлять детализации сверху и снизу текстуры, так как она очень сильно сожмется там.
- Левая и правая стороны текстуры должны совпадать друг с другом, чтобы избежать видимого шва.
- Цвет получаются ярче, чем на оригинальной текстуре.
Чуть подробнее обо всем этом в паре предложений ниже.
Касательно последнего пункта: в Homeworld они рисуют только гладкие градиенты на полюсах сферы и избегают любой видимой деформации. Вершины также редки в этих областях, что приводит к гладким градиентам цветов вершин.
Посмотрите, как распределена геометрия вокруг полюса:
Я считаю это просто круто. Из-за ограничения на использования детализации только в горизонтальных областях вы достигаете еще и того (надеюсь), что игрок никогда не потеряет ориентацию в пространстве.
Теперь давайте перейдем к “реальной” текстуре. Но до этого давайте уменьшим уровень (яркости прим. пер.) с 255 до 128 (Photoshop > Image > Adjustments > Levels).
Уровень яркости: 255
Уровень яркости: 128
После генерации вы найдете “_ref.TGA” текстуру, которая представляет собой карту границ, используемую программой для создания сферы. Мне кажется она выглядит действительно интересно. Я думаю что квадраты это части, которые программа считает одну за другой.
Карта граней:
И вот как это выглядит в программе просмотра В некоторых местах, особенно на вершине большой горы можно увидеть “подтекание” цвета. Я не особо игрался с настройками “HW2BGBuilder”. Возможно здесь есть место для маневра и можно улучшить результат, но в целом результат очень хороший.
Надо заметить, разрешение исходной текстуры заметно ударило по количеству полигонов в результате.
Последние мысли будут немного техническими. Поправьте меня если я объясняю неверно. В том что я сказал “пока” числам и пошел путем графики есть смысл.
- 1 пиксель требует 24 бита 3 Байта чтобы быть сохраненным (RGB, каждый канал 8 бит)
- 1 вершина нуждается в позиции (XYZ) и цвете (RGB)
Это значит, что если исходная текстура содержит слишком много контраста и деталей повсюду, то данных будет больше чем при использовании текстуры. Но фоны в Homeworld состоят большей частью из цветов и градиентов, а также небольшого количества деталей. Так что для этих целей оптимизация клёвая.
Пока я писал эту статью, здесь были дискуссии о том, как добиться уменьшения количества полигонов в zBrush. Computron разместил свои результаты тут. Ой и poopinmymouth дал отличную ссылку где описывается утилита создания сфер со всеми её параметрами.
И вот теперь уже действительно благодарю за прочтение.
Автор: Darthman