что такое бампы в сталкере
Создание, описание особенностей и объяснение работы карт рельефа
Материал из S.T.A.L.K.E.R. Inside Wiki
В этой статье я постараюсь объяснить создание правильных карт bump и bump# с помощью Adobe Photoshop и X-ray SDK. Думаю, с этими дополнительными составляющими текстурами много кто сталкивался, много кто искал пути правильного их создания. На самом деле, чтобы правильно создать бамп-карты, необходимо освоить как техническую сторону вопроса (делать, так сказать, «по науке»), так и практическую (различные методики работы в фотошопе, обработка текстуры, исправление возможных косяков и т. д.). В данной статье больше всего внимания будет уделяться именно первому пункту, ведь в любом деле лучше сначала выучить основы, а потом, в том числе, самостоятельно обучаясь, получить опыт в практике, улучшить свое мастерство.
При их «смешивании», получаем нормальную окраску изображения. В общем, указания по каналам в данной статье будут даваться в виде, как блок выше. Иногда в RGB каналов больше (можете сами попробовать добавлять в фотошопе). В игре используется канал Альфа 1 (его еще просто «Альфой» кличут). У него есть, разумеется, свои особые функции. Итого, вот так будут выглядеть указания по каналам:
Содержание
Теория
Для начала попытаюсь объяснить структуру основных карт и разобрать основные понятия статьи. Всё ниже написанное не обязательно верно на все 100%.
Height Map (карта высот)
Normal Map (карта нормалей)
Карту нормалей можно получить следующими способами:
— сгенерировать с высокополигональной модели в 3д-редакторе, в роде 3ds Max, zBrush.
— сгенерировать с ранее созданной карты высот с помощью одного из плагинов для Photoshop (плагин NVIDIA, плагин PixPlant, плагин xNormal)
— сгенерировать с ранее созданной карты высот в спец-прогах (xNormal, PixPlant, CrazyBump)
Если разбирать по каналам схематически, то выглядит так:
При включенном RGB на каналах, смотрится как текстура в синих, фиолетовых, сиреневых, даже иногда розовых цветах. Нормал мапу очень и очень рекомендуется создавать для бампа (тем более, если она с хай-поли модели), а не использовать сокращенный вариант с картой высот (об этом узнаете в разделе СДК ниже). Нормал мапа, собственно, и предает текстуре различных объемных черт. В дальнейшем, после сборки в СДК, карта станет частью bump.
Создание текстур рельефа bump
Материал из S.T.A.L.K.E.R. Inside Wiki
Содержание
Создание карт рельефа bump & bump#
Внимание! Уроки рассчитаны на пользователей, уже достаточно хорошо освоивших фотошоп. Различные вопросы типа «а где находится эта кнопачка. » здесь не рассматриваются. Названия функций приведены на русском языке, у кого фотошоп англоязычный, ориентируйтесь по смыслу.
На данном уроке попробую подробно описать порядок создания карт рельефа в игре с помощью фильтра карт нормалей от nVidia. Действия, которые описаны ниже, я не буду называть ни самыми рациональными, ни самыми простыми. Просто так делаю я сам, и не обязую следовать им в точности.
Так вот, большинство текстур в игре имеют по два одноименных собрата с индексами _BUMP и _BUMP#. так вот эти две дополнительных текстуры и являются рельефом, или «бампом».
К примеру, имеем мы текстуру STON.dds:
А сейчас будем делать для нее бампы. Как было сказано ранее, рельеф начинается с карты высоты, фильтр от nVidia здесь пока не нужен.
Карта высот
если возиться с текстурами лень, и результат не важен, то следующий шаг можно пропустить, в противном случае, берем в руки весь инструментарий фотошопа, включаем фантазию и приводим карту высот к более правильному виду. Например черная тень от камней сверху не должна влиять на рельеф, камни должны быть не такими плоскими, да и прослойки не должны быть плоскими, у меня получилось что то вроде этого:
карта высоты готова. сделаем с нее дубликат, переведем в РГБ и найдем фильтр карт нормалей, он находится в самом низу списка фильтров.
Карты нормалей
Для полного счастья сталась только карта интенсивности блика.
Карта интенсивности блика
Ну вот. Теперь все для текстур бампа готово. осталось только разложить все по нужным каналам и сохранить.
Первой проще делать текстуру bump#. Для этого берем карту высоты, копируем изображение на свежесозданную альфу, а каналы РГБ заливаем однородным серым цветом (за серый принимается цвет в середине всего диапазона яркости, т.е. лучше всего брать 127 или 128). Далее остается только сохранить ее:
С текстурой bump все сложнее. По непонятной причине разработчиками игры был выставлен обратный порядок каналов. Т.е. то что фильтр nVidia располагает в порядке RGB(A), в текстуре bump порядок обратный, т.е ABGR. Это составляет определенную сложность и затрату времени при конвертировании «синенькой» текстуры, создаваемой фильтром, в «зелененькую» текстуру bump. Я обычно делаю это так:
с текстуры bump# делается дубликат и сохраняется как bump, далее на нее с помощью копипаста вставляются каналы из «синенькой» текстуры, которая была недавно сгенерирована фильтром. Порядок такой:
а чтобы довести текстуру bump до конца и сделать ее истинно «зелененькой», в канал R нужно вставить карту интенсивности блика. Все, можно сохранять. должно получиться вот так:
Вот и все, карты рельефа для сталкера готовы. Остается только посмотреть, как будет выглядеть в игре:
Дополнение
Кстати, забыл упомянуть, если исходная текстура бесшовная, то необходимо сохранять бесшовность всех карт, из которых состоит рельеф!
Bump mapping
Эта статья [1] о создании правильных карт bump и bump# с помощью Adobe Photoshop и X-Ray SDK. С этими дополнительными составляющими текстурами много кто сталкивался, много кто искал пути правильного их создания. На самом деле, чтобы правильно создать бамп-карты, необходимо освоить как техническую сторону вопроса (делать, так сказать, «по науке»), так и практическую (различные методики работы в фотошопе, обработка текстуры, исправление возможных косяков и т. д.). В данной статье больше всего внимания будет уделяться именно первому пункту, ведь в любом деле лучше сначала выучить основы, а потом, в том числе, самостоятельно обучаясь, получить опыт в практике, улучшить свое мастерство.
При их «смешивании», получаем нормальную окраску изображения. В общем, указания по каналам в данной статье будут даваться в виде, как блок выше. Иногда в RGB каналов больше (можете сами попробовать добавлять в фотошопе). В игре используется канал Альфа 1 (его еще просто «Альфой» кличут). У него есть, разумеется, свои особые функции. Итого, вот так будут выглядеть указания по каналам:
Теория
Для начала о структуре основных карт и основных понятиях статьи. Всё ниже написанное не обязательно верно на все 100%.
Height Map (карта высот)
Normal Map (карта нормалей)
Карту нормалей можно получить следующими способами:
— сгенерировать с высокополигональной модели в 3D-редакторе, в роде 3ds Max, zBrush.
— сгенерировать с ранее созданной карты высот с помощью одного из плагинов для Photoshop (плагин NVIDIA, плагин PixPlant, плагин xNormal)
— сгенерировать с ранее созданной карты высот в спец-прогах (xNormal, PixPlant, CrazyBump)
Если разбирать по каналам схематически, то выглядит так:
При включенном RGB на каналах, смотрится как текстура в синих, фиолетовых, сиреневых, даже иногда розовых цветах. Normal Map очень и очень рекомендуется создавать для бампа (тем более, если она с хай-поли модели), а не использовать сокращенный вариант с картой высот (об этом узнаете в разделе SDK ниже). Normal Map, собственно, и предает текстуре различных объемных черт. В дальнейшем, после сборки в SDK, карта станет частью bump.
Также стоит напомнить, что в своем полном виде карта bump создается из карты нормалей + текстурой с спекуляром на Альфе в SDK. Такая-вот текстурная солянка. Думаю, вы знаете, что она в игре делает, но если вы столкнулись с данными терминами первый раз, то все довольно просто: карта делает текстуру объекта более красивой, объемной, с выпуклостями и впадинами, добавляет или запрещает отражение текстурой света от солнца, лампы, фонарика и т. д. Вот, например, новенькому листу металла было бы неплохо придать возможность отражать блики, а кирпичной текстуре задать впадины между кирпичиками. А вот дереву, допустим, никаких отражений света не надо, хотя высоты (впадины и выпуклости) добавить таки можно. Еще замечу, что бампы не нужны для текстур партиклов, текстур интерфейса и еще ряда специфических изображений. К основной текстуре привязывается через файл текстура.thm. Но по поводу этого не беспокойтесь, ведь файл *.thm появляется при создании бампа/подключении бампа к текстуре в SDK.
Каналы в карте bump |
bump# — очень интересная карта, назначение которой для многих непонятно. Так как найти какую-либо информацию насчет правильного названия не удалось, назовём ее просто «Normal error map«. Неизвестно, используются ли подобные технологии в других играх, но встречать ее где-либо, кроме сталкера, не приходилось. Эта карта «исправляет» ошибки сжатия DXT у бампа и генерируется только с помощью SDK, поэтому всякие непонятные действия некоторых пользователей, вроде вставки вместо нее обычной или обесцвеченной карты нормалей, а также описанного в статье Argus’a заливания серым со вставкой в альфа-канал карты высот, использовать нельзя. Выглядит как серое зашумленное изображение. Еще раз стоит напомнить, bump# создается автоматически при генерировании bump в SDK.
C bump# | Без bump#, заметны артефакты |
Мини-словарь терминов
Здесь будет находиться описание некоторых терминов, которые встречаются в статье.
Diffuse texture aka диффузная текстура ака диффуз — основная исходная текстура, для которой делаются дополнительные карты.
Работа в Photoshop
Здесь также понадобится Normal Map Filter от NVIDIA, если вы уже работали с текстурами, он должен быть у вас установлен, так как поставляется в комплекте с *.dds-плагином или другой удобный плагин (озвучены выше, в теории карты нормалей).
Все файлы сохраняются в tga 24 bits/pixel (если нету альфа-канала) или 32 bits/pixel (если есть альфа-канал). Перед сохранением следует перевести изображение из 16-битного в 8-битное.
Карта высот
Metro 2033 (если кому интересно)
Карта нормалей
Создание происходит следующим образом: берем карту высот, открываем фильтр, задаем настройки по усмотрению. Далее получаем готовую карту нормалей. Нужно осмотреть карту, чтоб там не было мелких не нужных горбиков и прочих недостатков. Скорее всего, все можно будет решить размытием в некоторых местах. Еще, как вариант, чудесная методика размытия, при которой изображение все равно остается более четким:
1. Дублируем фоновый слой.
2. Дубликату выставляем режим «Перекрытие».
3. Применяем один из фильтров размытия (к примеру, «Размытие по гауссу»).
4. Если надо, дублируем этот слой еще пару раз.
Specular Map
Карта нормалей
При наличии уже готовой карты нормалей, изготовленной вами, из другой игры, zBrush или любой другой программы высокополигонального 3D моделирования, остается только добавить ее в SDK. Для чего регистрировать в SDK? Для того, чтоб потом совместить Normal Map с заготовкой для бампа и получить бамп. Параметры:
Type: 2D Texture
Format: 32 bit (8:8:8:8)
MipMap Filter: Kaiser (здесь уже по желанию, рекомендуется Kaiser)
Type: Normal Map
MipMap Filter: Kaiser
С использованием отдельной карты нормалей bump карта изготавливается очень просто (заготовку для бампа лучше назвать текстура_bump.tga и поместить в editors/import):
Параметры добавления в SDK не зависят от версии:
Type: Bump Map, в Special Normal Map указываем добавленную ранее карту нормалей.
В Photoshop | Добавление в SDK |
Это единственный вариант, когда параметр Virtual height действительно влияет на интенсивность получаемого бампа.
В Photoshop | Добавление в SDK |
Видеоурок [2]
Что такое Bump?
Собственно. С некоторых пор интересуюсь у многих разработчиков о том, что такое Bump. Однако никто не может дать вразумительного ответа. Опытным путем было вызнано, что это таже текстурка, только черно белая. и что? И нафиг это надо?
Кто то высказал предположение, что Bump служит для пущей объемности, кто то говорит, что она как то волшебно влияет на детализацию, кто то говорит, что. В общем, кто нибудь может сказать, нафиг нужен Bump?
А то я уже запутался =)))
у разработчиков чего ты об этом спрашивал? я лично не знаю разработчиков игр, которые не знали о том что такое бамп-меппинг. а вообще-то в гугле можно найти огромное количество информации на эту тему. да и статей было написано много, например вот эта http://www.gamedev.ru/articles/?id=30116
edit: все уже и без меня сказали 🙂
CyberZX
-=InQ=-
А откуда вы знаете, вы что не разработчики разве? Я вот разработчик и тоже не знаю.
Бамп обычно только с диагональным программированием используется?
raskolnikoff
Benderrr
читаешь вот вас, и страшно становится за будущее отечественной игроиндустрии. 🙂
>например игровые движки Дум3, ХЛ2, ФарКрай юзают цветной бамп
Убейте меня.
текстуры сине-сиреневого цвета не так сильно раздражают художников во время работы, поэтому сейчас используются повсеместно
не народ, ну скажите что вы прикалыватесь. а то реально стремно уже и не смешно! хы. или хоть смайлы ставьте.
2NecroMENt
как скажешь, приятель. бах. фух [ стоит и пристально рассматривает дымящееся дуло магнума] 🙂
2Gibby
Что собственно говоря Вас так огорчило, дорогой сэр?
кто-то прикалывается, кто-то слишком плохо знает русский, чтобы сказать то, что он хочет
неужели в Интернете так трудно найти информацию про бамп? Даже на русском?
bump это карта высот, ее правильно описал -=InQ=-
то что вы называете «цветным» бампом это normal-map, то есть карта нормалей. в ней в цветовых компонентах записаны упакованые векторы нормалей, которые могут находится как и в пространстве объекта( object-space), так и в пространстве касательных к объекту(tangent-space). в первом случае, цвет карты может бысть абсолютно любым, во втором он обычно сереневый, то есть цвета колеблются относительно компоненты (127, 127, 255)
2JekaX
уффф. странные у вас реакции господа. бам-текстура, или локал-мап, используемая для имитации высокополигональности в играх имеет сине-сиреневый цвет, не верите, откройте папочки с текстурами и гляньте. кстати прога мелоди генерит именно такой бамп. а если у вас в максе бамп серого цвета, то это не повод для вращения пальцем у виска. ИМХО не нужно поспешности в выводах, а то как-то некрасиво смотриться..
Материал из S.T.A.L.K.E.R. Inside Wiki
Содержание
Что это такое и зачем они нужны?
Как их создать? Какие параметры нужны?
В появившемся окошке жмём ОК и видим появившееся окно с текстурами которые вы добавили. На этом скриншоте отмечено то, что нам понадобится изменять (я уже поставил)
Итак, в секции Bump в параметре Mode ставим Use — для различных текстур, а Use parallax — для текстур типа кирпичной кладки, кафеля (как в данной текстуре) и тп. В параметре Texture выбираем тестуру bump — prop_plitka_lab_bump. В секции Detalis в параметрах Use as Diffuse и/или Use as Bump (R2) ставим галочку. Как расставить эти параметры грамотно? Обратимся к textures.ltx. Ищем нашу текстуру в нём, первое что находится:
Значит ставим галочки в параметрах Use as Diffuse и Use as Bump (R2). В параметре Texture под этими пунктами выбираем текстуру detail\detail_tile_det2, предварительно сделав импорт этой текстуры в СДК. И в параметре Scale ставим 6.0. Ищем по файлу дальше, видим:
(нужна картинка, не знаю как вставить)Секция Fade отвечает за закрашивание текстуры определённым цветом или обесцвечивание включая мип уровни, можно настроить на какой процент с каждым мип уровнем будет усиливаться эффект, в первую очередь нужна для детальных текстур и текстур терейна.
Здесь выставлен тип текстуры. Смотря по СДК и файлу textures.ltx, я понял так:
Примечание по СДК 0.4
В СДК версии 0.4 создаются файлы thm, больше размером и с другим форматом, чем в ЧН/ЗП. Поэтому они не работают в них. Но есть способ как превратить эти файлы для ЧН/ЗП (из формата СДК 0.4 перевести в современный): переделать их с помощью утилиты — thmParser, как использовать описано внутри.
Примечание по ошибке thm
Иногда после процессов редактирования текстуры, бампа, thm в игре можно встретить баг: определенная текстура покрывается непонятной сеткой, немного напоминающей шахматную доску. Причиной этому может быть:
Лечение: проверяем наличие бампа, его название. Если что, прогоняем привязку текстуры к бампу через СДК еще один раз, получаем новый thm, копируем с заменой обновленные файлы из СДК в геймдату
За помощь и поддержку спасибо XaK и BuS777