[Перевод] Как сделаны фоны в Homeworld2 изнутри

Эта статья является переводом сразу двух статей от Simon Schreibt. Обе статьи на одну тему и являются взаимодополняющими. Не пугайтесь того, что в начале все набрано большими буквами, это стилистика автора и я постарался максимально её сохранить.То, что вы видите тут8a35e3dd7bc044c595577ac6ff50d10b.jpgэто сносшибательные фоны 98ba12467af3434595b10a1dfa4bde42.jpgодной из наиболее прекрасных научно-фантастических игр. 3398b406dfc3447dbdcabbd88c7be100.jpgБлагодарю за прочтение.Шучу, разумеется. Конечно же у меня есть что рассказать на эту тему. В нашей компании мы время от времени смотрим на арт из Homeworld и преклоняемся мастерству его создателей. Теперь, после того, как мы обсудили как здорово выглядит фон и как интересен этот набросочный стиль (скетч), остаётся что-то… некоторые детали кажутся… специально для нас.

0a3b8b86e90546ea8b22329496109a85.jpg

Я упомянул, что это выглядит немного как… градиентное раскрашивание по вершинам. Но они же не будут рисовать фон геометрией, верно? Я имею ввиду… что в этом случае это должна быть довольно сильно тесселированная сфера. Обсуждения были закончены, но я не был удовлетворен результатом и хотел, хотябы, увидеть текстуры. Поэтому я использовал некоторые утилиты для извлечения из Homeworld 2 Demo данных, однако текстур там не было. Только некоторое количество .HOD файлов. Погуглив я нашел тему о том, как генерировать эти .HOD файлы из .TGA. Она гласила:

»…сканирует каждый пиксель изображения и затем на основе контрастарешает добавить или нет новую вершину и цвет…»

Может ли это действительно быть раскраской вершин? Благо можно посмотреть на .HOD файл с помощью CFHodEdit. Другая утилита может включить принудительный режим отображения сетки. Смотрите, что получается вытащить на свет: Это одно 523f5db8b4d5422fb39213b01317744e.gifиз самых смелых 50715e5a66a941fc903e9bc86a072e6e.gifрешений для игрового арта, который я когда-либо видел. 51aba2fcc406417785201fe438b17faf.gifИ здесь вы можете заметить как это влияет на геометрию небесной сферы в игре. Видите как мало разрешение в неконтрастных областях? И какая гладкая сфера в местах, где имеется много деталей?

a10e767ac79f449b8182968d298e754d.gif

Никогда даже не думал, что таким образом можно получить такие хорошие результаты. Ой, и не забудьте, что такой подход решает две большие проблемы.

#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):

7283e85ac90c40fa9975f4e9353f25cc.jpg

Создадим ярлык для HW2BGBuilder.exe и перетащим на него нашу текстуру. Дадим утилите рассчитать необходимое и потом нажмем «Space» (игра слов от автора. Подразумевается и кнопка пробел и космос одновременно. Прим. пер.) для старта процесса. Почувствуем себя хакером Матрицы пока числа будут бежать вниз по командной строке.

1397af2a34694b199a58a920ca259d93.gif

И вот как это выглядит в «CFHodEdit». Вы можете очень четко видеть UV развертку сферы. Так, теперь мы знаем три вещи:

Не следует добавлять детализации сверху и снизу текстуры, так как она очень сильно сожмется там. Левая и правая стороны текстуры должны совпадать друг с другом, чтобы избежать видимого шва. Цвет получаются ярче, чем на оригинальной текстуре. Чуть подробнее обо всем этом в паре предложений ниже.c29bff48f3944880a9f405e78867c17c.gif

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

Посмотрите, как распределена геометрия вокруг полюса:

cb58ef40b46e417ea1da1830c55394a7.jpg

Я считаю это просто круто. Из-за ограничения на использования детализации только в горизонтальных областях вы достигаете еще и того (надеюсь), что игрок никогда не потеряет ориентацию в пространстве.Теперь давайте перейдем к «реальной» текстуре. Но до этого давайте уменьшим уровень (яркости прим. пер.) с 255 до 128 (Photoshop > Image > Adjustments > Levels).

Уровень яркости: 25550ad20075d3c48a5a9c75a0e03c94298.jpg

Уровень яркости: 128dc16f7096728410cac79a082b7b6e414.jpg

После генерации вы найдете »_ref.TGA» текстуру, которая представляет собой карту границ, используемую программой для создания сферы. Мне кажется она выглядит действительно интересно. Я думаю что квадраты это части, которые программа считает одну за другой.

Карта граней:

86e627aa718a4812ae012a6e0bbd56d8.jpg

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

5b93bb7d468b45fda775d7ac827a764e.gif

Надо заметить, разрешение исходной текстуры заметно ударило по количеству полигонов в результате.

b20596c5bca54271927ffe0cc174b703.jpgefbe36914ab340fcb21f5b1aeac0266c.jpg

Последние мысли будут немного техническими. Поправьте меня если я объясняю неверно. В том что я сказал «пока» числам и пошел путем графики есть смысл.

1 пиксель требует 24 бита \ 3 Байта чтобы быть сохраненным (RGB, каждый канал 8 бит) 1 вершина нуждается в позиции (XYZ) и цвете (RGB) Это значит, что если исходная текстура содержит слишком много контраста и деталей повсюду, то данных будет больше чем при использовании текстуры. Но фоны в Homeworld состоят большей частью из цветов и градиентов, а также небольшого количества деталей. Так что для этих целей оптимизация клёвая.

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

И вот теперь уже действительно благодарю за прочтение.

© Habrahabr.ru