Здравствуйте. Вы находитесь на сайте Unreal Level.
Данный ресурс посвящен редакторам карт игр серии Unreal, UT и Gears of War.
Основная цель сайта , помочь всем желающим освоить любой из редакторов вышеперечисленных серий. Наибольшим приоритетом на этом сайте, обладает редактор UnrealED for Unreal Engine 3 и редактор движка Unreal Engine 3.5, входящий в комплект разработки UDK, поскольку это наиболее актуальная на сегодняшний день технология.
ВНИМАНИЕ!Данный способ хорошо подойдет лишь при создании ландшафта больших размеров, в остальных случаях результат может быть удручающим и потребует доработки в редакторе, а лучше вообще его делать в редакторе.
Насколько Вы знаете, на форуме вопрос о переносе ландшафта из 3ds Max в UDK далеко не редкость. Кому-то не нравятся стандартные средства, кому-то нужно перенести старые наработки или, как в случае одной из тем - перенести террейн из другой популярной игры. Кто-то без лишних премудростей импортирует ландшафт как static mesh, с удивлением проваливаясь сквозь него в игре из-за проблем с коллизией... Неприемлемо. :-) Итак, что же такое height map? По большому счету, увидев ее вживую, можно сразу заметить, что она представляет собой не что иное, как черно-белое изображение. Действительно, все просто: высоту точки плоскости определяет градация серого - чем ниже точка, тем темнее она на карте, соответственно наивысшая точка будет белее всех остальных.
Урок логически можно разделить на 2 части, первая - моделирование ландшафта (сомнительное удовольствие, но прошу заметить, что под Макс существуют вменяемые плагины для моделирования ландшафта), вторая - снятие карты высоты, поэтому, если нужно перенести уже готовый ландшафт в UDK, то читайте вторую часть, если первая окажется знакомой. Приступим!
Часть первая. Моделирование ландшафта.
Конечно, если плагинов для этого у Вас нет, как в моем случае, то можно обойтись встроенными средствами Макса.
МОДЕЛИРОВАТЬ МОЖНО ТОЛЬКО ВДОЛЬ ОСИ Z.
Никаких пещер, кротовых нор, нависающих скал, тоннелей. Это можно, но лишь несколькими ландшафтами, что не рекомендуется. Такое делается статическими мешами или ландшафтом целиком, но со своей особой коллизией!
Первое, что мы создадим - плоскость. Размер я выставил в 2048*2048, количество сегментов 100*100.
Важно учесть, что размеры этой плоскости к размерам карты высоты, которая будет снята потом, не имеет, тут главноеудобство для моделлера. Большое количество сегментов позволяет добиться большей детализации. Моделирование ландшафта производится после преобразования плоскости в Editable Poly, т.к. этот инструмент обладает функцией Smooth Selection.
РассмотримпараметрыSmooth Selection.
Falloff - "спад". Чем больше величина, тем выше спад и размер в области выделения (три примера, спад везде одинаков); Pinch - крутизна, чем выше значение, тем круче будет кривая выделения (он отображается под этими тремя параметрами, всегда можно видеть "сечение" выделения); Bubble - "куполообразность", сложно перевести. Короче говоря - чем выше, тем более округлой становится кривая, при значении больше единицы получаем нечто вроде купола с углублением в центре.
В общем, тут проще попробовать самому, чем понять со слов... двигаем полигоны, меняем значения выделения, не забываем про Shring и Grow вкладки Selection... Стараемся избавиться от повторения и однородности (если только это не входит в задумку, конечно). Я сильно утруждаться не стал, можно сделать лучше, если потратить немного времени. Создание пародии на ландшафт заняло где-то 3-4 минуты. Чтобы избавиться от прилизанности и плавности - местами использовал модификатор Noise, для резкости граней добавил разбиение (кнопка "tessellate" в Editable Poly).
Кстати, осторожнее с Noise - по Z - спокойно можно добавлять, а по другим осям можно получить перекрытие (помните начало?).
Если Noise был применен, то после Collapse All (можно повторно конвертнуть в Editable Poly) крайние грани ландшафта сравняйте между собой (выделяем грань, жмем Loop, масштабируем по нужной оси). В результате получаем ландшафт с идеально ровными краями. ВАЖНО! Присвоить модификатор UVWMapping ко всему объекту (выделите все полигоны).Без него ничего не выйдет. Тут все просто, присваиваем Planar Mapping по оси Z. Жмем Fit. Практически уже Profit, осталось два шага.
Часть вторая. Снятие карты высоты.
Жмем «М», открываем редактор материалов, выбираем материал, в канал Diffuse кидаем Gradient. Вот и применение этой бесполезной карте нашлось. :-) Смотрим...3 цвета, нам нужно 2 (с центрального снимаем галочку). Сейчас для удобства ставим красный и зеленый, например... Включаем отображение материала во вьюпорте. Видим, что сейчас градиент идет не по той оси, по которой нам надо, а нам нужно по вертикали (Z). Это печальное обстоятельство исправляем в настройках градиента: сверху видим возможность выбора между осью UV, VW, WU. Смотрим, как ведет себя градиент. VW подходит, значит, тот цвет, который сверху меняем на белый, нижний - на черный:
Кислотная расцветка веселее, но алгоритм она не устроит. После замены цветов остается только сделать на основе модели карту. Делается это с помощью Render To Texture. Render>Render To Texture или просто «0» (нуль) на клавиатуре.
Открываем RtT. Сначала настроим рендер. Начну с того, что для корректного снятия карты нам нужно выбрать стандартный Scanline рендер (выбран по умолчанию). Заходим в настройки рендера, нажав Setup на вкладке Render Settings.
Далее, нужно включить Суперсэмплинг и выбрать алгоритм Max 2.5 Star. Должно быть так:
Закрываем настройки рендера. Далее установим Padding на 3, на всякий случай. Padding повторяет крайние пиксели карты на фиксированную длину, то есть на 3 пикселя.
Кстати, 2048*2048 – не максимальный. Просто большее значение вводится от руки и все. Но в данном случае для нас это не играет никакой роли, т.к. в UDKразмеры карты высоты невелики, но об этом ниже.
Вводим путь сохранения, выбираем формат выходного файла. Жмем Render.
То, что отображается в окне рендера - не карта. Просто не обращайте внимания на это:
Для того, чтобы показать пред-финальный результат я создал плоскость 100*100 сегментов и накинул модификатор Displace.
Вопрос о размере карты высоты
Важно понимать, что Displace в Максе это совершенно другой алгоритм, нежели тот, который используется в UnrealEd припостроении террейна. Если модификатор смещения в 3DsMax смещает уже имеющиеся точки объекта, то в редакторе ландшафта UDK дело обстоит другим образом. Согласно документации
UDN:
«Карта высот должна быть создана с разрешением (размером) равным - желаемому количеству клеток (patch) ландшафта + 1. Другими словами, 128x128 ландшафт требует карту высот 129x129; 256x256, ландшафт требует карту высот 257x257. Число клеток ландшафта определено в свойствах actor-а ландшафта Terrain.NumPatchesX и Terrain.NumPatchesY, оно будет выставленно автоматически после импорта ландшафта».
Поэтому при выборе размера карты высоты для редактора террейна необходимо исходить из этой формулы. Формат карты высот для импорта в UnrealEd должен быть 16-битным "*.bmp".
Ниже представлен ландшафт из карты высоты 257*257. Учитывая размеры карты, результат плачевный.
На UDNдают совет по исправлению подобных огрехов. Но каждое нужное ребро воротить в подобном ландшафте - не то что долго... Поэтому я просто сгладил все в редакторе.
Заключение
Конечно, метод идеально результата не дает, именно из-за алгоритма построения ландшафта «нереальным» редактором. Если бы мы имели дело с дисплейсментом, то вариант был бы идеален – накинул карту, добавил поверхности разбиений и получил желаемый результат, но такого счастья нет.
Фактически, эта статьяболее полезна тем, что она затрагивает тему запекания в текстуру, а это важнейший пласт, без которого становится невозможным создание вменяемого пользовательского контента для UDK, так как normalкарты, карты ambientocclusion получают тоже запеканием в текстуру. Естественно процесс получения таких карт сложнее на порядок, но это уже, как говорится, тема другой статьи.
В итоге, там, где надо сделать быстро или надо сделать много, а также при переносе ландшафта с другого движка метод будет работать.
Спасибо FACHза помощь с последней частью статьи в построении ландшафта и доведении его до приемлемого вида.
Он переводит обычный 8-битный серый "*.bmp" в понятный для редактора. Т.к. обычный "*.bmp" редактор отказывается читать. Сам с этим полдня возился. В итоге у меня всё работает.
НАСЧЁТ СГЛАЖИВАНИЯ: Я просто взял текстуру "height map" и применил к ней фильтр "сглаживание" ( 10 раз ) в редакторе изображений ( например: GIMP ). После этого ландшавт стал гладким. Вот только высота ландшавта немного изменилась.
В CryEngine Editor-е намного легче и быстрее работать с ландшавтом ( проверено на себе ! )
Че? А что там не написано, что 16 бит надо ему? Аж Выделено! Нахрен полдня 8 бит сувать? Мы проверяли тутор - сразу все работало, только с размером мудрили...
Сори В статье "Использование созданных карт высот для ландшафтов" нету ссылки на прогу "G16Ed". Напишите.
ЕСЧЁ из статьи "Использование созданных карт высот для ландшафтов":
"... она должна быть конвертирована в TIF-16 и отредактирована в графическом редакторе, который поддерживает 16 битное черно-белое"
Я полдня возился с этим. Делал в : GIMP, PHOTOSHOP, PAINT, PAINT.NET, xnview Но всеравно редактор не смог прочитать "мою" текстуру. Так что единственный выход - это "G16Ed" !
Не по теме: Сайт не грузился, когда вы писали последние коменты тут. Я перезапустил сеть ( ip изменился ), вот тогда сайт заработал. Вы меня забанили что-ли ?
1. Список конвертеров есть - этого достаточно - есть google - и если давать ссылку, то на сайт 'производителя'.
Цитата: AntonioModer
Я полдня возился с этим. Делал в : GIMP, PHOTOSHOP, PAINT, PAINT.NET, xnview Но всеравно редактор не смог прочитать "мою" текстуру. Так что единственный выход - это "G16Ed" !
Возился с чем? Выход для чего? PHOTOSHOP, PAINT.NET, xnview отлично работают с TIF-16
А для конвертации в g16 кроме G16Ed, есть, как минимум, еще и HMCS - так что это не 'единственный выход' - из чего он не был бы.
Нахрен полдня 8 бит сувать? Мы проверяли тутор - сразу все работало, только с размером мудрили...
Может я нуб. Научите в обычном редакторе конвертировать в 16-битную текстуру. Я делал в фотошопе "текстуру 16 бит", но потом смотрел в просмоторщике текстуру, а там написано 8 бит.
Это не совсем то - мы получим RGB изображение где 16 бит на все 3 канала, а нам надо черно-белое - где 16-бит полностью отданы на 1 канал - в 1 случае мы получим ужасный ландшафт =S
-----------------
Вот скрин для сравнения - http://ib1.keep4u.ru/b/2010/07/09/39/39751c049f79469fddece32aa85d5ac0.jpg
Видно в этом туторе и итог не очень - не тот формат импортировали ;)
P.S. Кажись, AntonioModer был прав, что подметил это =)
Фотошоп тогда не даст сохранить в .bmp - он не поддерживает g16 (grayscale - 16)- надо в raw-16 сохранять и конвертить или G16Ed или HMCS..
P.S. Это правильно - изображение должно быть grayscale (черно-белое, градация серого) и 16 бит на канал и далее, как я сказал выше, а не так как было сказано выше:
Цитата: RCM_Mafiozy
Конвертировать в фотошопе - значит, нажать save as, а при сохранении выбрать .bmp - 16 bit. Всё. И незачем плодить конвертеры и т.п.
Придется до завтра отложить. Сейчас духи разгневались на меня, и я не могу переснять карту высот\переконвертировать старую. Если завтра получиться и результат будет отличаться - напишу.
Не может такого быть, я из скрина в туторе получил более качественную равнину (горы не удобоваримы) - скинь нормальную, экспортированную карту,хочу посмотреть.