Morrowind:Использование на практике спрайтов в TES:CS

Материал из Tiarum
Перейти к: навигация, поиск
Использование на практике спрайтов в TES:CS
45px-Scroll.png

автор: Wraith
редактор: Garin
дата публикации оригинала: 27.12.2004г
ver: 0.1

Авторская Эта страница защищена авторскими правами..
Не редактируйте его без предварительного согласования с автором! Свои изменения и дополнения вы можете предложить непосредственно автору, либо на Форуме, либо на странице Обсуждения


Использование на практике спрайтов в TES:CS



Среди множества достоинств движка Morrowind (измененного NetImmerse) можно выделить то, что некоторые объекты могут быть повернуты всегда одной стороной к камере (т.е. игроку). Данное свойство предоставляет множество возможностей – ведь таким способом можно создавать спрайты из плоскости. К сожалению, сама Bethesda не часто пользуется данной техникой – спрайты применяются в Morrowind только для отображения частиц, в то время как сфера их использования может быть куда шире – и как пример хотелось бы продемонстрировать метод создания «короны» вокруг уличного фонаря.


Результаты Вы сможете увидеть на содержащихся в данной статье скриншотах, а также в плагине «Киорра», который к настоящему времени находится в стадии разработки. Для работы я использовал 3ds Max 5 и плагин tesexporter для 3dsmax 4, а также Photoshop 6.0 с плагином DDS version 2.00.


Первые четыре пункта туториала – ключевое место статьи, поэтому они объяснены досконально, так, чтобы даже новичок смог понять последовательность действий.


Создание спрайта в 3dsMax

Для того, чтобы сделать спрайт, достаточно:

  • Создать плоскость (т.е. примитив Макса Plane),
  • Заглянуть в Utilities panel
  • Выбрать утилиту MaxProperties (данная утилита входит в плагин tesexporter)


LensFlare 01.jpg


  • Далее нажмите кнопку Add


LensFlare 02.jpg


  • Выберите Billboard и нажмите OK (в качестве комментария к Billboard будет указано Object always faces camera – т.е., объект всегда повернут к камере – а это именно то, что нам и надо).

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

Следует учитывать, что в целях экономии полигонов плоскость должна состоть из двух треугольников.


Добавление карты прозрачности в 3dsMax

Как вы понимаете, основная задача – добавить карту прозрачности. Карту вполне возможно нарисовать в Photoshop’e при помощи интуитивно понятного фильтра Render -> Lens Flare, или в 3ds Max при помощи эффекта LensFlare (Modify panel -> Light object -> Atmospheres & Effects rollout -> Add button), а также аналогичного, но более удобного в работе эффекта LensEffect стандартного плагина VideoPost.

При создании карты прозрачности не старайтесь получить слишком вычурные, слишком «навороченные» эффекты – в игре они будут смотреться очень нежизненно, даже будучи примененными в «магических» фонарях. Glow, Ray и Streak – этого вполне достаточно. Причем старайтесь, чтобы Glow был достаточно большого размера, а Streak я бы порекомендовал горизонтальный, а не вертикальный – почему – об этом позже.

Вот то, что получается после рендера картинки с источником света:


LensFlare 03.jpg


Обработка изображения в Adobe Photoshop

Данная картинка нуждается в обработке в Photoshop’e либо другой аналогичной программе. Для начала необходимо обрезать все лишнее и придать изображению форму квадрата для того, чтобы впоследствии можно было сохранить его в DDS формате. Старайтесь, чтобы центр «вспышки» находился в итоговом результате в центре изображения:


LensFlare 04.jpg


Добавление нового слоя

Если внимательно приглядеться к получившемуся результату, а также подрегулировав яркость, контраст или кривые должным образом, можно увидеть, что лучи выходят за пределы изображения – это неприемлемо, так как в игре «обрезанная» в форме квадрата «корона» будет выглядеть очень нереалистично. Поэтому поверх получившегося рисунка следует добавить приблизительно такой слой:


LensFlare 05.jpg


Дополнительная проработка изображения

Не помешает и дальнейшая проработка изображения – например, необходимо сделать свет более «мягким», убрать освещение снизу – ведь освещению мешает дно фонаря (по этой же причине streak лучше делать горизонтальным), а также делать то, чего пожелает Ваша фантазия, в основном это касается регулировок brightness/contrast, curves и hue/saturation. Вот то, что получилось у меня:


LensFlare 06.jpg


Но не спешите закрывать Photoshop – он нам еще понадобится.


Наложение текстуры на созданную плоскость

А теперь рассмотрим непосредственно наложение получившейся текстуры на созданную нами плоскость.

Как известно, Morrowind понимает два типа материала – TES Shader и Blinn. В зависимости от того, с каким материалом мы будем работать, будет различаться и техника работы.

  • TES Shader – хорош тем, что с помощью него можно создавать полупрозрачные полигоны без альфа-канала – с помощью additive transparency. В данном случае прозрачность цвета задается величиной значения цвета. Т.е., черный цвет при additive transparency отображается как прозрачный, серый – как полупрозрачный и белый – как непрозрачный. Лучший формат для сохранения файла в качестве текстуры – DDS DXT1 (без альфы). Но данный метод имеет минусы: получившийся в итоге фонарь вы не сможете поставить в exterior – там additive transparency делает какой-то очень странный глюк – т.е., черный становится не до конца прозрачным, и «проходит» это только после смены фазы дня и ночи, причем после выгрузки ячейки из памяти и попадания в нее вновь глюк повторяется. Так что лучше воспользоваться затемнением Blinn, хотя это и сложнее.
  • Blinn – тут без альфа-канала не обойтись. Причем альфа-канал здесь является основным, поэтому в Photoshop’e копируем все наше изображение в альфа-канал. Канал же RGB должен претерпеть радикальные изменения и превратиться в нечто подобное:


LensFlare 07.jpg


Если RGB-канал оставить без изменений, то вы увидите, что сияние и лучи на периферии выглядят слишком темно – дело в том, что прозрачность по альфе не убирает черный цвет, а просто делает его прозрачнее.

Лучший формат для сохранения файла в качестве текстуры: DDS DXT5. Можно использовать DXT3, если не предполагается плавных переходов альфа-канала.


  • При наложении текстуры на созданную плоскость задействована одна карта, которая содержит в себе информацию для diffuse и одновременно для opacity (просто перетащите карту инстансом с diffuse в opacity). Проследите, чтобы в Mono channel output поставлен на alpha:


LensFlare 08.jpg


  • Не забудьте назвать плоскость No Collision
  • При экспорте «корона» окажется слишком яркой, поэтому поставьте Opacity = 70 или ниже.
  • Необходимо также поставить self-illumination = 100 и ваша «корона» готова к экспортированию. Если Вы сами создавали модель фонаря, то намного удобнее будет экспортировать «корону» вместе с ней.

Старайтесь избегать экспорта одиночных объектов из 3ds Max. При экспорте плоскость НЕ ДОЛЖНА БЫТЬ ВЫДЕЛЕНА – иначе ее будет крутить вверх-ногами.

В результате можно получить приблизительно вот такие фонари:


LensFlare 09 result.jpg


Приведенная выше техника будет использована в плагине «Киорра», поэтому настоятельно рекомендуется использовать текстуры собственного изготовления, а не заимстовать из данного туториала, тем более что здесь они находятся в формате JPEG со значительной потерей качества и в разрешении 256*256.


С пожеланием успехов в создании моделей для Morrowind’a,


Wraith, 2004. (В ред. 2008)