Lode's All About Terrain Tutorial For Unreal 2
Подготовка карты для создания в ней местности
Если Вы хотите создать местность (terrain) в Вашей карте, Вам понадобится большое пространство под нее. Для этого вырежьте (subtract) очень большой куб, например, размером 65536*65536*65536. Хотя UnrealEd теперь поддерживает размеры вплоть до 524288*524288*524288, не стоит создавать такие огромные пространства.
Для того, чтобы движок "понял", что внутри куба будет располагаться территория (terrain), необходимо указать для него Территориальную Зону (TerrainZone). Для этого Вам понадобится актер ZoneInfo. Откройте Браузер Актеров (Actor Class Browser), перейдите к разделу Info и в нем выберите ZoneInfo:
Установите актер ZoneInfo в центре куба. Если Вы нажмете правой кнопкой мыши в середине Top окна 2D вида, и в появившемся меню выберите Add ZoneInfo Here, то ZoneInfo появится как раз в центре куба.
Теперь нажмите правой кнопкой мыши на ZoneInfo актере и в контекстном меню выберите ZoneInfo Properties. В окне свойств перейдите к разделу ZoneInfo и установите значение bTerrainZone в положение True. Теперь едитор будет знать, что эта зона будет содержать местность (terrain). Затем перейдите к пункту ZoneLight и установите для AmbientBrightness значение равное 128. Это позволит Вам позже, при создании территории (terrain), видеть ее поверхность, в случае если Вы еще не создали солнечный свет. Никогда не устанавливайте в свойствах LevelInfo значение bTerrainZone в положение True, иначе едитор вылетит с ошибкой после ребилда (rebuild).
Непосредственно сама территория (terrain) создается с помощью другого актера: TerrainInfo. Вернитесь к окну Браузера Актеров (Actor Class Browser) и выберите теперь TerrainInfo. Установите его также в центре куба:
TerrainMap для Вашей территории не что иное как "карта уровней высот" (height map), которая указывает, где на территории расположены возвышенности, низменности и пр. Она определяет холмы, горы, каньоны, долины и т.д. для Вашей местности. TerrainMap представляет собой 16-битную текстуру, но Вы также можете импортировать для этого и 8-битную картинку. При этом, когда Вы будете создавать поверхность территории, текстура все равно преобразуется в 16-битный формат. В текстуре, которую Вы используете в качестве TerrainMap, черный цвет (первый цвет в палитре) отвечает за самые низкие участки местности, в то время как белый цвет (последний цвет в палитре) - за самые высокие. В основном Вы будете использовать 8-битные или 16-битные черно-белые текстуры для TerrainMap, но, вполне можно использовать и цветные текстуры с 8-битной палитрой. Теоретически, Вы можете использовать текстуры размером до 2048*2048, но просчет поверхности территории с TerrainMap такого разрешения займет больше времени, чем просчет освещения для огромной карты. В большинстве случаев, Вам достаточно будет TerrainMap текстуры размером не более 256*256.
Примеры: эта текстура с мягким переходом от черного цвета к белому создаст гору с острым пиком на верхушке. Эта текстура создавалась со значением Hardness кисточки (brush) равным 0 в PaintShopPro (PSP):
Эта текстура нарисованная кисточкой с Hardness раной 50, создает более "плоскую" гору:
Если текстура не имеет мягких переходов, то склон горы будет вертикальным:
Текстуры, подобные этой, создают тонкие пики, похожие на траву:
В последних двух примерах поверхность местности имеет очень "резкие" вершины, при этом вероятность получить BSP дыру достаточно высока. В действительности, для получения более или менее сложной TerrainMap, используйте вот такие текстуры:
В недрах интернета можно найти несколько неплохих программ по созданию таких текстур (карт уровней высот). Например, Terragen Вы можете бесплатно загрузить с http://www.planetside.co.uk/terragen:
Также, Вы можете найти неплохие TerrainMap в текстурном паке Terrain.utx. Откройте его в Текстурном Браузере (Texture Browser) и выберите одну из черно-белых текстур, например, Mountains2. Затем откройте окно свойств актера TerrainInfo и перейдите к разделу TerrainInfo. Здесь выберите пункт TerrainMap и нажмите на появившуюся кнопку Use. При этом имя выбранной Вами текстуры появится в поле TerrainMap:
После того, как Вы выбрали текстуру и указали ее в качестве TerrainMap, едитор сохраняет ее вместе с файлом карты в 16-битном TerrainMap формате, а про исходную картинку в Текстурном Браузере "забывает". Таким образом, Вы можете позже изменить ее в Едиторе Местности (Terrain Editor). Тем не менее, на "карты прозрачности" (alphamaps) для слоев (layers) это не распространяется. На данном этапе поверхность местности не видна в едиторе, т.к. для нее необходимо еще указать текстуру.
Установка текстуры для местности
Откройте окно свойств актера TerrainInfo и перейдите к разделу TerrainInfo. Здесь откройте пункт Layers и в нем разверните свойство [0]. Установите здесь следующие значения:
В главе Слои (Layers) будет объяснено значение этих свойств. Говоря простым языком - Вы сейчас выбрали текстуру для поверхности Вашей местности.
Если Вы сделали все правильно и перестроили (rebuild) Ваш уровень, то Вы увидите поверхность местности (terrain). Убедитесь при этом, что камера находится над поверхностью, т.к. снизу местность не видно.
Если Вы нажмете кнопку Always Show Terrain? (она находится рядом с командной строкой, внизу едитора), Вы также сможете наслаждаться видом местности и в Top окне 2D вида (если камера при этом находится в пределах TerrainZone):
Сохранение и тестирование карты
Теперь у Вас есть рабочая местность (terrain), но выглядит она все еще не очень презентабельно. Тем не менее, Вы ее уже можете протестировать. Установите сперва PlayerStart (он находится в Браузере Актеров, в разделе NavigationPoint). Убедитесь, что он находится над поверхностью.
Если Вы сохраняете Вашу карту не давайте ей имена terrain.unr или terrain2.unr. Дело в том, что здесь существуют текстурные паки (packages) с такими же именами, и движок может "перепутать" их с Вашим уровнем.
Когда Вы разгуливаете по Вашей местности, Вы можете ускорить шаг, набрав в консоле "slomo 8" (без кавычек). Это включит 8-микратное ускорение, позволив тем самым быстро перемещаться из одной точки в другую - очень удобно при тестировании. Для того, чтобы вернуться к нормальной скорости наберите "slomo 1" (без кавычек).
Для того, чтобы изменить размер территории (terrain), воспользуйтесь настройкой TerrainScale в свойствах актера TerrainInfo (раздел TerrainInfo). Значение переменных X и Y указывают значения ширины местности, Z - отвечает за ее высоту. Величина одной единицы (unit) в шкале TerrainScale зависит от выбранной TerrainMap: если Вы использовали TerrainMap текстуру разрешением 256*256, то 1 единица по X или по Y равна 256 единицам в сетке (grid) едитора. Величина 1 единицы для Z фактора всегда равна 256 единицам в сетке едитора, но значение Z также зависит от самого TerrainMap.
Актер TerrainInfo всегда находится по центру местности (terrain) и на высоте, соответствующей 128 цвету в 8-битной текстуре. Поэтому, если Ваша территория ограничена по высоте 16384 единицами (это означает, что значение Z равно 64), самая возможно низкая точка местности будет находиться на 8192 единицы ниже актера TerrainInfo, а самая высокая точка - на 8192 единицы выше. Имейте это в виду, если Вы не хотите устанавливать актер TerrainInfo слишком низко или слишком высоко. Иначе, пики местности будет частично отсечены на потолке или полу.
Если Вы используете куб размером 65536*65536 (длина*ширина) и TerrainMap текстуру разрешением 256*256, то установите значения X и Y равные 256. Таким образом, Вы получите местность равную по ширине размерам куба.
Особенно, когда Вы желаете добавить солнце для освещения местности, скайбокс (skybox) играет очень важную роль. Для его создания, вырежьте (subtract) небольшой куб где-то вне Вашей основной карты. Добавьте внутрь него SkyZoneInfo актер (он находится в Браузере Актеров, в разделе Info), а также добавьте источники света и наложите необходимые текстуры:
Теперь вернитесь к Вашему большому кубу, выберите все его стены и откройте окно свойств поверхности. Здесь поставьте галочку напротив Fake Backdrop:
Если Вы перестроите Ваш уровень, то Вы сможете наблюдать параллакс скайбокса на указанные поверхности (говоря простым языком, вместо поверхностей с включенным Fake Backdrop будут отображаться поверхности скайбокса с эффектом их недосягаемости/отдаленности)
Если размер Вашей местности превышает размеры куба (в этом примере, 65536*65536*65536), т.е. местность выходит за пределы куба, и, при этом, для поверхностей некоторых его стен указано Fake Backdrop, то Вы сможете видеть местность "за стенами", но не сможете по ней ходить. В игре это будет выглядеть как невидимое препятствие.
Кстати, текстуры скайбокса сделаны Adam W. Stiles (muad@twcny.rr.com).
Для того, чтобы местность выглядела реалистичнее, необходимо добавить один или более актеров солнечного света: Sunlight. Солнечный свет - это свет, который идет от бесконечно удаленного и огромного источника. Таким же образом его и обрабатывает едитор. Это означает, что лучи такого источника параллельны. При просчете освещения уровня такие лучи могут быть остановлены любой стены на их пути, даже стенами огромного куба, если конечно для них не включено свойство Fake Backdrop. Для этого Вы и создали скайбокс.
Выберите актер Sunlight в Браузере Актеров (он находится в разделе Light). Не играет никакой роли, где Вы установите его. Убедитесь только, что он находится в пределах Вашего большого куба. После того, как Вы добавили его, сделайте пересчет освещения (rebuild lighting) и Ваша местность преобразится: на левом скрине нет солнечного света, на правом - присутствует:
Возможно, теперь Вы захотите уменьшить значение AmbienBrightness в свойствах ZoneInfo и, наоборот, увеличить значение яркости (Brightness) у актера Sunlight, чтобы лучше увидеть эффект солнца. Вы можете указать цвет для Sunlight как для любого обычного источника света. Тем не менее, световые эффекты, подобные LT_Pulse или LT_Flicker будет проигнорированы данным актером.
Для того, чтобы изменить направление "солнечных" лучей, используйте инструмент для вращения . Вы можете крутить Sunlight в любом окне 2D вида. Стрелка показывает Вам направление света. Кручение вверх/вниз в одном из окон бокового вида (Front или Side) вызовет эффект расположения солнца выше/ниже. Кручение в окне Top отвечает за направление света (Север, Восток и т.п.)
Обратите Ваше внимание на тот факт, что стрелка актера Sunlight показывает направление, откуда идут солнечные лучи, а не куда они направляются:
Вы можете иметь несколько Sunlight в одном уровне, их свет может также иметь различные цвета:
Солнце (Sunlight), на самом деле, представляет собой обычный источник света с некоторыми специальными настройками. Если Вы хотите создать солнце, используя обычный источник света, или если в едиторе по каким то причинам отсутствует класс Sunlight, добавьте обычный источник света и установите для него в разделе Lighting свойство LightEffect в положение LE_Sunlight. Также в разделе Advanced укажите для bDirectional значение равное True.
Если в Вашем уровне есть несколько зон, Sunlight будет освещать только ту зону, в которой он установлен. По этой причине каждая зона должна иметь свое собственное солнце.
Солнечный свет освещает не только местность (terrain), но и все полигоны на уровне. Нормальные источники света, в свою очередь, также освещают местность независимо от солнечного света, что и показано на скрине ниже:
Только что созданная местность содержит всего лишь один слой: Layer[0] с "травой". Вы можете установить для поверхности территории до 32 различных слоев. Каждый слой имеет свою текстуру и карту прозрачности (AlphaMap). Текстура является "повторяемым" узором поверхности (т.е. одна и та же текстура размножается по всем направлениям, покрывая, таким образом, всю поверхность), как, например, трава в данном примере. AlphaMap представляет собой большой альфаканал (alphachannel), указывающий в каком месте территории текстура ее поверхности будет присутствовать (будет видна), не будет присутствовать или будет что-то среднее. В качестве текстуры можно указать любую не-анимированную картинку. Для AlphaMap можно использовать черно-белые (greyscale) текстуры, текстуры с 8-битной палитрой или RGBA текстуры. На данный момент используйте черно-белую текстуру. Для нулевого слоя (layer[0]) желательно использовать абсолютно белую текстуру, если конечно Вы не захотите сделать так, чтобы в некоторых местах местность (terrain) была невидима. Для других слоев используйте карты прозрачности (AlphaMap) с вариациями из черного, оттенков серого и белого цветов, для получения различной прозрачности (видимости) конкретного слоя. Например, при создании снежных вершин у гор, используйте "снежную" текстуру, а в качестве AlphaMap - абсолютно черную текстуру за исключением тех мест, где находятся вершины гор в Вашей TerrainMap.
Лучшее место для хранения этих текстур - это пак MyLevel. Данный пак не хранится в отдельном *.utx файле, а внедрен прямо в *.unr файл Вашего уровня. Для сохранения в этот пак необходимой картинки, во время импорта текстуры в поле с именем пака введите MyLevel. Причина, по которой это желательно делать, заключается в удобстве, т.к. AlphaMap часто подвергается коррекции, и все что Вам необходимо будет при этом делать - это заменять текстуру, которую Вы используете в качестве AlphaMap. Если Вы указали другое имя паку, в который Вы импортировали текстуру, то Вам необходимо будет сохранять этот пак при каждой коррекции AlphaMap текстуры. Также, используйте разные текстуры для AlphaMap отдельного слоя, т.к. в случае если два слоя используют одну и ту же текстуру, и Вы отредактируете одну из них, то измениться и вторая.
Если Вы хотите добавить новый слой к Вашей местности, откройте окно свойств TerrainInfo и в разделе Layers перейдите к пункту [1]. Установите для него текстуру, например, SDirt2, для AlphaMap создайте свою черно-белую текстуру. Если Вы хотите воспользоваться готовой AlphaMap текстурой из пака Terrain.utx и сохранить ее в пак MyLevel, то, сперва, сделайте ей экспорт, а затем импортируйте ее назад, в Ваш уровень. После перестройки (rebuild) уровня Вы сможете посмотреть, как выглядит Ваша "новая" местность. Заметьте, что на скрине ниже, текстура SDirt2 видна только в тех местах, где AlphaMap1 имеет белые или серые участки:
Для создания последующих слоев используйте [2], [3] и т.д. Чем больше слоев Вы используете, тем менее "шаблонной" (повторяемой) будет выглядеть Ваша местность.
Для каждого слоя Вы можете настроить следующие свойства:
Если Вы собираетесь позже воспользоваться услугами инструмента Terrain Edit, то с его помощью все эти свойства могут быть настроены намного легче.
Вместо черно-белых (greyscale) текстур и других текстур с 8-битной палитрой, Вы можете в качестве AlphaMap использовать текстуру в формате RGBA8. Такие текстуры имеют четыре 8-битных канала: красный (Red), зеленый (Green), синий (Blue) и дополнительный канал, отвечающий за прозрачность - альфаканал (AlphaChannel). Вы можете создавать такие текстуры, например, в PhotoShop, если добавить 4-й канал и сохранить файл в формате *.tga с 32 битами/пиксель. Если Вы укажете такую текстуру в качестве AlphaMap, то информация о прозрачности местности будет вычисляться исходя из информации альфаканала (AlphaChannel), а "цветные" каналы (Red, Green, Blue) добавят соответствующий оттенок текстуре местности. Таким образом, Вы сможете придать некоторое разнообразие местности, даже если будете использовать всего лишь один слой.
Конечно, Вы можете использовать это более искусно, чем на вышеприведенном скрине:
Или для того, чтобы выдержать уровень и скайбокс в одной тематике: согласитесь, очень трудно отличить горы на текстурах скайбокса от реальных 3D гор:
Слои имеют свою иерархию: layer[1] находится "над" layer[0], layer[2] - "над" layer[1] и т.д. Поэтому, если layer[0] и layer[1] оба используют абсолютно белый AlphaMap, то будет виден только layer[1]. На скрине ниже Вы можете наблюдать как layer[1] с коричневой текстурой перекрывает "зеленый" layer[0], а layer[2], в свою очередь, перекрывает оба предыдущих слоя, т.к., в данном примере, layer[2] является самым "высоким" слоем в иерархии:
Также, имейте в виду, что если у Вас отсутствует layer[1] (т.е. для него не установлены текстура и AlphaMap), но в то же время есть layer[2], то layer[2] виден не будет. Вы должны создавать слои в правильном порядке, и не оставлять между ними "дыры". Перед созданием, например, layer[3], у Вас, сперва, должны быть layer[0], layer[1] и layer[2].
Ориентация текстуры (TextureMapAxis)
Для текстуры в каждом слое, Вы можете, также, задать вдоль какой оси будет происходить ее выравнивание (align). Для этого откройте окно свойств актера TerrainInfo, перейдите к разделу TerrainInfo и здесь зайдите в Layers. Выберите нужный Вам слой и укажите ему необходимое значение TextureMapAxis:
Значение TEXMAPAXIS_XY равняет текстуру относительно пола. Это означает, что если Вы установите камеру над местностью и посмотрите на нее сверху, то она будет выглядеть "прямо". TEXMAPAXIS_XZ и TEXMAPAXIS_YZ выравнивают текстуру, соответственно, вдоль XZ и YZ стены. Таким образом, при YZ она будет выглядеть "прямо", если смотреть в восточном/западном направлении, при XZ - в северном/южном направлении.
Примеры: вид сверху на текстуру местности с TextureMapAxis равными: XY, XZ и YZ
На следующей серии скринов, камера "смотрит" в западном направлении. Значения TextureMapAxis те же: XY, XZ и YZ:
Все, чем Вы занимались прежде - это изменяли некоторые настройки актера TerrainInfo: устанавливали текстуры, TerrainMap и пр. Но все это можно делать и в реальном времени с помощью так называемого режима редактирования местности (Terrain Editing Mode). Для того, чтобы активировать этот режим, нажмите кнопочку с изображением гор на панели инструментов слева:
Вы теперь сможете видеть местность в Top окне 2D вида, а курсор мыши теперь будет выглядеть в виде двух желтых окружностей с красной точкой посередине. Также появится новое окно: Terrain Editing Window (окно редактирования местности).
Здесь есть кнопка Undo (Отмена), но Вы можете отменять только последнее изменение местности. Иногда эта кнопка безбожно глючит, так что не стоит ей особо доверять! К сожалению, основная Undo кнопка в едиторе не способна отменять действия редактора местности.
Окно редактирования местности разбито на несколько частей:
Далее Вы можете ознакомиться с более детальной информацией об этих опциях.
Убедитесь, что в окне Terrain Editing, там, где отображаются слои, выбрана HeightMap текстура, т.к. сейчас Вы будете редактировать TerrainMap, а не AlphaMap слоя. Ниже приведено детальное описание каждого инструмента для редактирования местности.
Редактирование вершин (Vertex Editing)
Если Вы выберите этот инструмент, курсор мыши станет выглядеть в виде двух желтых окружностей с красной точкой в центре. Желтые кольца и есть Ваш инструмент. В окне Terrain Editing Вы можете установить значения радиусов для них: Inner Radius (внутренний радиус) и Outer Radius (внешний радиус). Внутренняя окружность инструмента отвечает за его "резкую" часть, внешняя - за более "мягкую". Значение Strength (%) определяет насколько "сильно" действие инструмента. Внутренняя часть инструмента будет иметь такое точно значение. Внешняя же часть "смягчает" действие внутренней его части: чем дальше от центра, тем слабее будет его действие.
Нажатие любой кнопкой мыши на местности в Top окне 3D вида произведет выбор нескольких вершин. Вы можете выбирать вершины с различным значением "силы" (strength) Вашего инструмента. При этом белым цветом будут отображаться наиболее "резкие" вершины, более темным - "помягче". Все вершины, находящиеся в пределах внутренней окружности будут белые, остальные (внутри внешней окружности) будут темнее. Это работает, только при установленной опции Soft Selection в положение Automatic, поэтому убедитесь, что она активирована.
Вы можете изменить радиус внутренней и внешней окружностей воспользовавшись соответствующими опциями в окне Terrain Editing. Например, если Вы установите внутренний радиус равным 512, а внешний - 2048, Ваш инструмент будет выглядеть примерно так:
Там же Вы можете изменить значение "силы" (strength) инструмента, например, если Вы установите его равным 50, то выбранный Вами участок местности будет выглядеть так:
Зажав кнопку Ctrl, Вы можете выбирать сразу несколько участков поверхности. Но из-за переведенной в автоматический режим опции Soft Selection, при каждом последующем выборе предыдущая выбранная часть местности будет расти:
Если Вы отключите автоматический режим Soft Selection, Вы сможете выбирать только по одной вершине за один раз в не зависимости от размера инструмента. Удерживая Ctrl, можно как выбирать вершины, так и отменять выбор предыдущих. "Cила" выбранной вершины теперь будет зависеть сугубо от значения установленного в поле Strength (%):
Если теперь Вы нажмете кнопку Select в Soft Selection опциях, выбранные участки преобразятся:
Радиус и "сила" участков, выбранных с помощью кнопки Select, могут быть определены теми же ползунками, которые Вы использовали для настройки инструмента. Цель Soft Selection опции - создание более гладких холмов вместо резких пиков.
Смысл всей этой выборки вершин, заключается в том, что Вы можете управлять их "высотой", создавая тем самым холмы и впадины на местности. Для этого, после того, как Вы произвели выбор некоторых вершин, зажмите Ctrl и обе кнопки мыши, и перемещайте ее в нужном направлении. Белые вершины будут двигаться вниз/вверх быстрее, чем их более темные собратья.
Если Вы хотите поднять/опустить выбранный участок местности, сначала зажмите одновременно обе кнопки мыши, а уже потом нажмите Ctrl. Иначе едитор может "подумать", что Вы хотите расширить выборку.
Этот инструмент позволяет сделать прямоугольную выборку местности. Зажмите для этого Ctrl и левую кнопку мыши, затем тащите мышь в нужном направлении:
Если Вы будете перетаскивать мышь с зажатой правой кнопкой мыши, то один угол прямоугольной выборки автоматически установится ровно по центру местности. Вам это пригодится при использовании Генератора местности (Terrain Generator).
С помощью Painting инструмента Вы можете нарастить или утрамбовать местность. Нажмите Ctrl и левую кнопку мыши, и двигайте мышью по поверхности - таким образом, Вы можете нарастить (приподнять) местность:
Если Вы зажали Ctrl и правую кнопку - местность при движении будет проседать:
При помощи опций Adjust и Strength (%), Вы можете управлять эффективностью инструмента. Например, если установить Adjust равным 5, то Вам придется дольше "рисовать" чтобы добиться тех же результатов, что и при одиночном "мазке" инструмента с Adjust значением 50. Размеры пиков, в свою очередь, зависят от размера инструмента. Его величиной можно управлять при помощи настройки внутреннего и внешнего радиусов.
Используя этот инструмент, Вы легко можете создать BSP дыру, особенно, если Вы "нарисовали" резкие пики. Не забывайте обработать их при помощи "Шлифовального" инструмента (Smoothing).
"Шлифовальный" инструмент (Smoothing)
Если Вы зажмете Ctrl и левую кнопку мыши, а затем будете двигать ее над пиками, они станут намного глаже:
Опять же, опции Adjust и Strenght (%) отвечают за силу эффекта инструмента. Скрины ниже показывают шлифовку с силой (Strength) равной 24%:
Инструмент создает случайным образом шум на поверхности, при перемещении мыши с зажатым Ctrl и любой ее кнопкой. Чем больше значение Adjust, тем больший разброс высот будет при этом генерироваться:
Если Вы зажали Ctrl и кнопку мыши, и начали "рисовать", все точки поверхности, по которым Вы "рисуете" станут такой же высоты, как и исходная точка (точка, с которой Вы начали процесс "рисования"). В результате Вы получаете плоскую поверхность на местности. Таким образом, легко создавать плато (если Вы начали "рисовать" на высоте) или каньоны (если исходная точка лежала низко):
При помощи этого инструмента Вы можете редактировать так называемый слой видимости (visibility layer), для того, чтобы сделать все нормальные слои видимыми/твердыми или, наоборот, невидимыми/не-твердыми. Более подробно об этом будет рассказано ниже.
Используйте Ctrl+правая кнопка мыши для того, чтобы сделать невидимый участок местности, и Ctrl+левая кнопка мыши - соответственно, для возврата видимости невидимым частям.
Стыки невидимой и видимой частей выглядят коряво, поэтому их нужно "спрятать" при помощи нормальных или хардовых брашей (hardware brushes), например, стеной пещеры.
Tex Pan, Tex Scale, Tex Rotate
Эти инструменты не работают на TerrainMap. С их действием Вы познакомитесь при редактировании AlphaMap.
При редактировании местности Вы можете встретиться с проблемами, очень схожими с BSP дырами, особенно, когда Вы создаете очень резкие пики. В большинстве случаев об их существовании Вы узнаете только при тестировании Вашей карты непосредственно в самой игре. На скринах ниже изображен один и тот же пик, но с разных точек. Под некоторыми углами, холм может частично "выпадать":
Также очень крутые склоны могут послужить (гарантированно) причиной дыр:
Лучшее лекарство от подобных дыр - это использование "Шлифовального" инструмента (Smoothing): он позволит Вам избавиться от резких пиков и склонов. После его работы обычно не остается дыр.
Генератор местности (Terrain Generator)
Terrain Generator, как и следует из названия, создает случайным образом местность. Он "умеет" это делать как полностью для всей территории, так и для выбранного Вами участка местности. Для этого, сперва, выберите необходимую ее часть при помощи инструмента Select, затем перейдите к закладочке Misc в окне Terrain Editing:
Если Вы теперь нажмете кнопку Build, то генерация местности на выбранной Вами территории произойдет только в том случае, если отключена опция Use Entire Heightmap? В противном случае произойдет генерация полностью всей территории.
В Вашем распоряжении две настройки: Height Seed указывает средний разброс высот при генерации: на скрине слева изображена местность с Height Seed равным 10000, справа - Height Seed равен 75000. Оба скрина "сняты" со значением Scaling равным 0.3:
Значение атрибута scaling определяет размеры вершин: на скрине слева генерация происходила со Scaling равным 0.1, справа - Scaling равен 10, поэтому холмы на втором скрине в 100 раз шире, чем на первом. В обоих случаях применялся Height Seed со значением 75000:
В Terrain Generator присутствуют некоторые баги (bugs): если Вы захотите сгенерировать местность для всей территории, он Вас все равно попросит сделать выборку участка, а если Вы потом отменили эту операцию, то она будет отменена только для выбранного участка, даже, если при этом изменилась вся местность. Также опция Move Actors похоже никак не действует. После генерации, любая местность на любой карте будет выглядеть так, как будто в ней полно BSP дыр. Если Вы закроете и снова запустите едитор - проблема исчезает.
До этого момента Вы использовали все инструменты для редактирования TerrainMap, Вы изменяли ландшафт местности. Вы можете также использовать эти инструменты и для редактирования AlphaMap для любого слоя, т.е. Вы можете вручную рисовать тропинки, траву, снег, болота и пр.
Для этого выберите необходимый слой в Terrain/Layers части окна Terrain Editing. не выбирайте первый слой, т.к. скорее всего он у Вас будет всегда 100% белый и не будет требовать изменений.
При редактировании AlphaMaps, убедитесь, что они находятся в паке MyLevel, иначе Вам придется каждый раз отдельно сохранять пак после очередного изменения. Вы можете использовать различные инструменты для редактирования AlphaMap.
Эти инструменты применимы только при редактировании TerrainMap, т.е. они будут действовать абсолютно так, как и было описано ранее, даже если при этом выбран для редактирования слой, а не TerrainMap. более подробно см. главы Редактирование вершин (Vertex Editing) и Select.
Этот инструмент в буквальном смысле позволяет Вам рисовать на Alphamap: если Вы зажмете Ctrl и левую кнопку мыши, то, перемещая ее по поверхности, Вы будете "осветлять" участки. Таким образом, текстура в этих местах станет более "видима". Например, Вы можете нарисовать пыльную тропинку, отредактировав слой с текстурой SMud1:
Тем не менее, иногда в результате рисования, могут появиться некоторые артефакты на местности. Вы можете избавиться от них при помощи "Размывки" (Smoothing). Если Вы будете рисовать с зажатой правой кнопкой мыши, то участки будет, наоборот, затемняться, что повлечет за собой уменьшение видимости "отрисованных" участков:
Внутренний радиус (Inner Radius), внешний радиус (Outer Radius), Strength (%) и Adjust определяют "поведение" рисования: больше/меньше размер инструмента, размытее/резче действие, мягче/сильнее эффект.
Если Вы рисуете с нажатой правой кнопкой мыши на нулевом слое (layer[0]), местность станет прозрачной/невидимой в "отрисованных" местах, если при этом нет других слоев над нулевым:
Если зажать Ctrl и нажать любой кнопкой мыши на AlphaMap, то все что находится в радиусе инструмента "размоется":
Если уменьшить значение Strength инструмента, то уменьшится и "сила" его эффекта:
При помощи этого инструмента Вы можете создавать различные "вкрапления" текстуры случайным образом:
Этот инструмент не имеет ничего общего с AlphaMaps. Он предназначен для редактирования только TerrainMap. Более подробно см. главу Flatten (в разделе Редактирование TerrainMap).
По причине того, что этот инструмент делает одновременно все слои невидимыми/не-твердыми, то его действие здесь ничем не отличается от описанного выше в главе Видимость (Visibility) (раздел Редактирование TerrainMap). Более подробно этот инструмент будет рассмотрен позже.
Tex Pan, Tex Scale, Tex Rotate
Эти инструменты на самом деле не редактируют AlphaMap. Они управляют ориентацией текстуры выбранного Вами слоя. Инструмент Tex Pan "прокручивает" текстуру слева на право (в горизонтальном направлении), если Вы зажали Ctrl и левую кнопку мыши, и сверху вниз (в вертикальном направлении) при зажатой правой кнопкой мыши
Инструмент Tex Rotate, соответственно, отвечает за кручение текстуры (по/против часовой стрелки):
Tex Scale инструмент масштабирует текстуру: по ширине - при помощи левой кнопкой мыши, по высоте - при помощи правой. Вы также можете с помощью Tex Scale зеркально отобразить текстуру. Например, если Вы хотите отобразить ее зеркально относительно горизонтали, то сначала начните ее скалировать по ширине (т.е. сделайте ее очень "тонкой"), а затем, если Вы будете продолжать движение - она "вывернется":
Кнопки на панели Terrain/Layers в окне Terrain Editing позволяют Вам удалять, добавлять и менять порядок слоев.
Эта кнопка добавляет новый слой. Она делает то же самое, что и при добавлении нового слоя в свойствах актера TerrainInfo. Но на этот раз, у Вас есть дополнительные возможности. Также автоматически будет создан и AlphaMap для этого слоя. Перед тем как нажать эту кнопку, выберите сначала необходимую текстуру для слоя в Текстурном Браузере (Texture Browser). Затем, смело нажимайте кнопку. После этого появится окно New Layer:
В поле Package впишите имя пака, в котором Вы хотите, чтобы хранилась данная текстура. В большинстве случаев - это будет MyLevel. Можете использовать поле Group для указания тематики текстуры. В качестве Name используйте уникальное имя. Также Вы можете указать размеры AlphaMap, которая будет автоматически создана, при помощи атрибутов AlphaHeight и AlphaWidth. В разделе AlphaFill используйте свойство A для определения "силы" альфаканала (AlphaChannel) всей текстуры. В ColorFill Вы можете указать оттенок, который будет иметь вся текстура (например, для создания голубой травки 8). При этом все пикселы AlphaMap будут иметь указанный цвет, но Вы можете его изменить при помощи инструментов. Используйте значения UScale и VScale для указания масштаба текстуры у слоя;
Слой видимости (Visibility Layer)
Слой видимости - это дополнительный 1-битовый слой: видимый/невидимый. Для того, чтобы сделать часть местности невидимой, используйте инструмент Видимости (Visibility). Невидимые части этого слоя "делают" невидимыми все слои в этом месте, а также, помимо невидимости, делает их заодно и не-твердыми (т.е. Вы можете проходить сквозь). Основное использование этого инструмента - создание ниш в местности, для того, чтобы игрок мог зайти "внутрь" местности - в подземный бункер или пещеру.
Например, Вы хотите создать пещеру в горе, то для этого, сперва, необходимо сделать дыру на лицевой части горы, чтобы игрок мог проходить "внутрь" горы:
После того, как Вы позаботились об игроке, необходимо воспользоваться брашами, хардовыми брашами (hardware brushes) или другой местностью (terrian) для создания внутренней обстановки. Также, если Вы находитесь "под" местностью, Вы не сможете ее видеть изнутри, т.к. поверхность ее односторонняя. По этой причине Вам нужно будет добавить внутренние стены и потолок. На уровне, изображенном на скрине ниже, было использовано большое количество брашей, для создания длинной пещеры ведущей к другому участку карты, где, в свою очередь, сделан еще один невидимый/не-твердый проход. Второй скрин: вид изнутри пещеры:
DistanceFog создает реалистичный туман по всей территории или в пределах определенной зоны. Дымка может заставить работать уровень быстрее, т.к. туман "прячет" отдаленные полигоны. Для того, чтобы его "включить" откройте окно свойств актера ZoneInfo, перейдите к разделу ZoneInfo и здесь установите bFogZone в положение True. Затем перейдите в раздел ZoneLight и воспользуйтесь приведенными ниже свойствами:
DistanceFogEnd - указывает максимальный радиус (предел) видимости в тумане. Все, что будет лежать за ее границей, будет невидимо. Если радиус больше чем Ваша местность, никакого эффекта не будет, но если радиус меньше, то полигоны вне его пределов отображаться не будут, как на скрине справа:
Если Вы не хотите, чтобы стык был так явно выражен, как на скрине, то укажите скайбоксу такой же цвет. Самый легкий способ это сделать - установить в окне свойств скайбокса атрибут bDistanceFog также в положение True, и указать тот же цвет (DistanceFogColor). Значение DistanceFogEnd и DistanceFogStart для него сделайте равными 1. Таким образом, Вы не сможете определить, что некоторые полигоны не отображаются:
Использование нескольких TerrainInfo и Зон
Вы можете добавлять столько актеров TerrainInfo в одну зону, сколько Вам необходимо. Если Вы установите их слишком близко друг к другу, то они пересекутся, как на этом скрине:
Если Ваш уровень состоит из нескольких зон, и Вы находитесь при этом вне зоны с местностью, то Вы не будете видеть местность другой зоны, даже если у зоны, в которой Вы находитесь в данный момент, также установлено свойство bTerrainZone в положение True. Поэтому, если у Вас есть здание с окнами, расположенное на местности, убедитесь, что комнаты с окнами "входят" в ту же зону, что и сама местность.
Местность, которую Вы создавали до этого, использовалась для открытых пространств: гор, пустынь, каньонов и т.д., но Вы также можете ее использовать и для создания "эффектного" пола. Например, Вы можете сделать пол с объемными плиточками. На скрине, все выглядит несколько преувеличено для того, чтобы подчеркнуть эффект:
Если Вы сравните изображение скринов, то Вы увидите, что пол с эффектом DisplacementMap выглядит намного красивее:
Для создания подобного эффекта, используйте растровую текстуру в качестве TerrainMap. На каждую плиточку - приходится одна копия текстуры. Т.к. каждая плиточка имеет свое место в текстуре TerrainMap, то Вы можете индивидуально настроить вид (высоту) каждой плиточки, например, для создания выщербленных плиточек.
В свойствах TerrainScale, значение Z нужно установить равным очень маленькому значению, например, 0.05. Если Вы оставите значение по умолчанию: 1, то плиточки получатся высотой 256 юнитов. Используйте текстуру, предназначенную для пола, сместите ее и отскалируйте если это необходимо.
Выглядит это очень впечатляюще. Тем не менее, Вы не можете проделать то же самое и для стен, например, для создания объемных кирпичей торчащих из стены. Возможно, в более поздних билдах движка появится поддержка настоящих DisplacementMap или BumpMap, предоставив более широкий спектр возможностей.
Статус местности (Stat Terrain)
Если Вы наберете в консоли едитора или игры "stat terrain" (без кавычек), то на экране отобразится информация о статусе местности:
© 2000-2002 Lode Vandevenne
Перевод сделан 32_Pistoleta