Перейти к содержимому

War Thunder CDK : GC2 / CS6 Часть 2 .


DoUrd

QbznUd.png

 

В первой теме мы научились получать следующие компоненты : splatmap , colormap . Пока мы не приступили к созданию своих классов подготовим почву .

 

1). WarThunderCDK\develop\assets : это наша основная папка .

 1а). Что в ней будем размещать : 1 папку для текстур , 1 папку для colormaps , 1 папку для splatmaps .

2). WarThunderCDK\develop\assets\landclasses\common : это папка куда мы поместим наши классы .

3). War Thunder\WarThunderCDK\levels\location_sample\heightmapLand : папка для масок .

4). War Thunder\content\pkg_local\levels : в файле blk пропишем где и как будет у нас расти трава .

 

Важно : чтобы была возможность использовать новые ресурсы открываем WTAssetViewer и ищем свои ресурсы , правой кнопкой мыши вызываем меню и экспортируем .

Важно : не забывайте создавать ярлыки для папок . Облегчите себе навигацию .

 

Теория о строении карт . Представьте себе квадрат . Первая задача разделить его на сектора . Примерное строение :

 

1). Первый слой можно сделать простым классом или сразу использовать tile .

2). Выбираем местоположение основных зон ( территории где будут проходить задания и т.д. ) .  Если есть цель делать под танки карту то эту область лучше расположить в центре карты .

 2а). Все эти части можно нанести сразу квадратами по маскам .

3). Не забываем прятать недостатки карты мелкими классами по маске . Детали собственно добавляются так же .

4). Добавляем различные статичные объекты на карту как entity .

5). Дороги можно добавлять как spline . Основу для дороги можно нанести при помощи малого класса .

 

Важно : с увеличением размера карты уменьшится и маска сектора .

 

С теорией мы разобрались и переходим к практике . У меня размер карты так и остался стандартным ( 16 ) . Цель у меня фактически одна , разъяснить по классам и слоям . Вообщем решил разделить карту на 4 части по маскам и в добавок разрезать сразу splatmap и colormap .

 

vKZWeF.png

 

Процесс занял меньше минуты .

 

 

Часть 0 : Tile detail texture .

 

Фактически накрывает всю карту , должен быть альфа канал . Всего 2 параметра ;

 

1). Tile X / Tile Y - tile по осям вообщем . Выше 4 не вижу смысла ставить .

2). Окошко для выбора текстуры .

 

Параметр из разряда , выбрал один раз и забыл .

 

 

Часть 1 : маски для классов .

 

Мой вам добрый совет : лучше делайте маски собственными руками в CS6 . Я решил не использовать инструмент в самом CDK , а просто ради теста из heightmap вырезал кусочки . Ещё причина в том что я бы хотел видеть переходы от песка к траве и так далее .

 

wSdVqX.png

 

 

0). Если лень возиться : Properties / Script Parameters / Add new layer / .. Props ... / Mask weight conv As is / --no mask-- жмёте / Выбираете 8 bit / Create mask ... / Даёте ей имя /
 0а). Ставите галочку у Show blue-white mask , выбираете кисть клавиша 1 , жмёте Edit под слоем и рисуете . Не забывайте в -- no land -- выбрать класс .

 

Маски бывают двух типов 1-bit tiff и 8-bit tiff .Методы использования могут быть различными :

 
1). Расположение объектов по маске .
2). Можно нанести часть любого класса .
3). Деревья так же в классах расположены по маске .  
 
Особенности :
 
1). Формат только tiff .
2). Битность  1 или 8 .
3). Маска может быть только размером 2048 pix .
4). Продумывайте размер секторов заранее . Чем больше карта тем меньше область . Отметим ещё такую особенность как размер p2 в классах . Позволите увеличить или уменьшить класс .
5). Если допустили ошибку и создали маску в 4096 pix то автоматически будет уменьшена до 2048 pix . Исключение только для масок деревьев .
 
Как создать маску в CS6 .
 
1). 1bit - это чёрно белая маска без градации серого .
В любом случае создаётся размером в 2048 pix . Colormode : bitmap / 1bit .
2). 8 bit - c градацией серого .
В любом случае создаётся размером в 2048 pix . Greyscale : bitmap / 8bit .
3). Оба варианта сохраняются в формате tiff с параметрами : Compression - NONE , Pixel Order - Interleaved , Byte Order - IBM PC .
 

mHamaG.png

 
 
Часть 2 : малый класс .
 
Самый простой из существующих . Обычно содержит TGA текстуры :
 
1). Обычная 24 bit текстура - это значит что не содержит альфа канала .
2). Эта та же текстура но 32 bit  - это значит что есть альфа канал .
 
Пример класса :
 

className:t="landClass"
 
//this is detail texture
detail { 
  texture:t="./assets/textures/TEXTURE.tga"                                  - путь до текстуры ( 24 bit ) .
  detailmap:t="TEXTURE+ALPHA.tga"                                           - текстура с альфа каналом ( 32 bit ) .
 
  detailSize:r = 23                                                                          - работает для detailmap:t="TEXTURE+ALPHA.tga"  ( уточняется ) .
  size:p2=128,128                                                                         - размер .
}
 

Важно : detailmap оказывает влияние на два типа рендера  , directx 11 и OpenGL .

 

CKc6ye.jpg

 

Важно : directx9ex и winXP , отображается в виде обычной плоскости .

 

Особенности применения :
1). Может быть tile по всей карте . 
2). К примеру можно выделять некоторые области для дорог , рек и прочего .
3). Можно нанести по маске .
 
Важно : название класса должно всегда быть такого вида - имя.land.blk
Важно : расширение файла blk .
Важно : возможно влияние на производительность dx11 и OpenGL ( в зависимости от размера карты и количества слоёв + удалённость от земли ) .
Важно : максимальный лимит 15 слоёв . Исходя из этих параметров учитывайте свои потребности в различных типах поверхностей .
Важно : сильно влияет сама маска , а точнее её градация серого . Отсюда исходит три варианта :
1). Максимум белого в маске = фактически оригинальный вид .
2). Если есть оттенки серого = смешается с тем что под ней .
3). если в том месте где была трава и вы нанесли подобный слой то она пропадёт ( если есть белые участи в маске ) .
 

jd997e.png

 
 
Какие параметры для нанесения слоя использованы :
 
1). Mask weight conv - as is .
2). Маска естественно выбрана .
3). Height / Angel / Curv = 1 .
4). Write weight to DetTex - стоит галочка ( 0.001 ) .
5). Write weight to Land#1 -стоит галочка ( 0.001 ) .
Такие параметры использовал на всех слоях .
 
 
Часть 2 -1 : класс для определённого сектора ( без деревьев ) .
 
Это фактически основа для всей карты . Деревьев не будет из-за нерешённой проблемы с вылетом после экспорта карты .
 
//this is deatil texture
detail { 
  texture:t="./assets/colormaps/COLORMAP.tga"                              - colormap + путь до него .
  splattingmap:t="SPLATMAP.tga"                                                     - это splatmap .
  detailRed:t="TEXTURE1.tga"                                                          - текстура в канале Red ( 24 bit ) .
  detailSizeRed:r=55.3                                                                       - размер .
  detailGreen:t="TEXTURE2.tga"                                                       - текстура в канале Green ( 24 bit ) .
  detailSizeGreen:r=111.5                                                                 - размер 
  detailBlue:t="TEXTURE3.tga"                                                          - текстура в канале Blue ( 24 bit ) .
  detailSizeBlue:r=62.7                                                                      - размер .
  detailBlack:t="TEXTURE4.tga"                                                        - канал Black ( 24 bit ) .
  detailSizeBlack:r=36.1                                                                     - размер .
  detailSize:r=32                                                                                - нужно уточнить .
  size:p2=4096,4096                                                                         - общий размер colormap + splatmap .
  offset:p2=0,0                                                                                   - даёт возможность смещать класс .
}
 
Особенности применения :
 
1). Если используете без маски будет tile по всей карте .
2). Можно нанести по маске в оригинальном размер 2048 или 4096 .
2а). Можно изменить размер в классе при помощи size:p2 .
4). При помощи различного вида масок можно использовать только часть .
 
Важно : название класса должно всегда быть такого вида - имя.land.blk
Важно : расширение файла blk .
Важно : нужно решить всё же вопрос с текстурами 24 или 32 bit предпочтительней .
 
Пример использования .
 

am5yLC.png

 
 
Часть 2 - 2 : класс с деревьями .
 
В данный момент не получается его обуздать из-за ошибки после экспорта . Есть одна хитрость при которой его можно всё таки применить . Суть заключается в том что мы его будем использовать при помощи инструмента Create Polygon .
sLKw2u.png
 
Первая часть класса схожа с 2 - 1 . Вторая половина включает в себя дополнительные параметры : как маска + blk окрашивающий листву ( если не ошибся ) . Выглядит следующим образом :
 
//masked planted forest
 
 
obj_plant_generate{
  place_on_collision:b=yes                                                                                - размещение на коллизии ландшафта .
  density:r=0.9                                                                                                   - плотность .
  intersection:r=0.5                                                                                            - пересечение .
  rseed:i=27613                                                                                                 - случайное расположение .
  include "_island_colors.blk"                                                                             - указывает какой файл будет окрашивать листву ( могу быть не прав , эффект не обнаружил ) .
  placeAboveHt:r=1000                                                                                      
 
  densityMap:t="./assets/mask/island_mask_01"                                                - маска ( обычно находится вместе с классом ) .
  mapSize:p2=4096,4096
  
  colliders{
    use:t="HeightMap"
    use:t="(srv) Prefab entities"
    use:t="(filter) Generated by spline"
    use:t="LoftGeom"
    use:t="SGeometry"
  }
 
 
  object{
    orientation:t="world"
    name:t="tree_palm_large_a"                                                                          - имя дерева .
    weight:r=2
    rot_x:p2=0, 5
    rot_y:p2=0, 180
    rot_z:p2=0, 5
    scale:p2=0.9, 0.35
    yScale:p2=1, 0.2
  }          
 
  object{
    orientation:t="world"
    name:t="tree_palm_large_b"
    weight:r=2
    rot_x:p2=0, 5
    rot_y:p2=0, 180
    rot_z:p2=0, 5
    scale:p2=0.9, 0.35
    yScale:p2=1, 0.2
  }                  
}
 
Важно : в тексте сейчас указано всего два типа деревьев . Если есть желание то можно увеличить до 5 используя фрагмент .
 
  object{
    orientation:t="world"
    name:t="tree_palm_large_b"
    weight:r=2
    rot_x:p2=0, 5
    rot_y:p2=0, 180
    rot_z:p2=0, 5
    scale:p2=0.9, 0.35
    yScale:p2=1, 0.2
  }   
 
Важно : используется только вместе с 2 - 1 .
Важно : после объединения с 2 - 1 , можно использовать как полигон .
Важно : c другой стороны проблема не существенная по скольку полигон можно регулировать по размеру , а раз карту мы делаем по квадратам то и это будет вам только в плюс . Нарисовав подходящую colormap + splatmap вы сможете сразу прикинуть куда разместите свои деревья таким методом . Вообщем дело рук и CS6 .
Важно : главное не перестарайтесь с density .
 

5RXzzb.jpg

 
 
Часть 3 : Vertical textures .
 
Можно сказать это завершающий этап . Параметр добавляет текстуры на склоны .
 
1). Открываем закладку Vertical texture . Как видим параметров чуть больше .
 1а). Use vertical texture - ставите если нужен этот тип текстур .
 1б). Use VT for detailed HMAP            - выбираете если нужно использовать на детальном heightmap .
 1в). Первое окно : выбирается текстура в формате TGA ( " без альфа канала " ) . Второе окно : нужно выбрать normalmap . Третье окно : та же текстура что и первая но с альфа каналом .
 1г). XZ Tile, m / Y Tile, m                     - tile по осям . Оптимально 128 x 128 или 256 x 256 .
 1д). Y Offset, m                                   - смещение по оси Y .
 1е). Start angle, deg                           - угол с которого уже будут видны VT .
 1ё). Full angel, deg                             - угол при котором VT отображаются без смешиваний по краям .
 1ж). Horizontal blend                           - оставляем как есть .
 1з). Det XZ Tile / Det XZ Tile, m           - tile для третьего окна . Оптимально 128 x 128 или 256 x 256 .    
 1b). Det Y Offset, m                             - смещение по Y .
 
Важно : параметры Tile и ( X Z Y Offset ) должны быть одинаковыми .
Важно : старайтесь делать ландшафт как можно более разнообразным ( это касается не реалистичных карт ) . Тогда плохо затайленные текстуры будут менее выделяться на общем фоне .
 
 
Часть 4 : трава . ( Могут быть не точности ) .
 
Вообще маленькая история . Два дня , ломала голову трава . Пока занимался классами совершенно внезапно пришёл зрительный образ с фрагмента видео от разработчиков . Вот как помню был открыт blk карты и сказано на одном моменте : " с травой объясню позже " , а может и не так . Короче что-то тут не ладное . Но не суть важно , вот вам место положение травы :
 
War Thunder\content\pkg_local\levels
 
1). В blk файле нам нужны строчки после - randomGrass . К сожалению я их уже давно заменил все .
2). Всё что вам нужно это заменить 5 строчек на 5 своих классов + splatmap .
 2а). Имя класса и имя colormap используйте одинаковые .
3). Трава будет распределяться по splatmap .
4). Примерный вариант :
 
randomGrass
{
  общее имя:t = "splatmap_1"
  общее имя:t = "splatmap_2"
  общее имя:t = "splatmap_3"
  общее имя:t = "splatmap_4"
  общее имя:t = "splatmap_0"
 
Как видим из этого отрезка что слева мы вписываем общее имя , с правой стороны splatmap . Идём дальше . Получается у нас 5 слоёв ниже :
 
  layer
  {
    maskChannel:p4 = 1, 1, 1, 1  - похоже на канал в splatmap ( R G B Black ) . Значение 0 отключает .
    res:t ="grass_fill_a"                - какая трава будет использована .
    density:r = 0.5                        - плотность .
    horScale:r = 1                        - горизонтальный размер .
    verScale:r = 1                         - вертикальный размер .
    windMul:r = 0.05                     - похоже на параметр ветра .
    radiusMul:r = 1.25                  
  }
 
Важно ; тестируйте используя все каналы на всех слоях .
Важно : со всех 5 layers трава объединяется на каждом классе который прописан ( Частично проверено ) .
Важно : не переборщи с плотностью травы .
Важно ; помни про имена .
Важно : уделяй больше времени splatmap .
 
Не проверено : влияние поверхности на цвет травы .
Не проверено : использование на более простом классе .
Не проверено : скорее всего в splatmap - чёрный влияет на цвет травы .
 
 

CTPplh.jpg

 
 
Итог всего и сразу .
 
По слоям : для всех использовал единые параметры .
 
0). Если забыли как создавать свои маски : Properties / Script Parameters / Add new layer / .. Props ... / Mask weight conv As is / --no mask-- жмёте / Выбираете 8 bit / Create mask ... / Даёте ей имя /
 0а). Ставите галочку у Show blue-white mask , выбираете кисть клавиша 1 , жмёте Edit под слоем и рисуете . В окне --no land-- не забываем что нибудь выбрать .
1). Mask weight conv - as is .
2). Маска естественно выбрана .
3). Height / Angel / Curv = 1 .
4). Write weight to DetTex - стоит галочка ( 0.001 ) .
5). Write weight to Land#1 -стоит галочка ( 0.001 ) .
 
Первый слой был tile по всей карте , остальные распределены по маскам . Своих моделей для редактора не делал , ибо времени свободного мало . То что пропущено в классах и прочих параметрах , не стал указывать по причине отсутствия знаний по ним . Так же у вас будет время на познание этих параметров . Единственный нюанс требующий дополнительного внимания это всё таки альфа канал в 2 - 1 / 2 - 2 . Так же прошу прощения если есть в тексте ошибки . Всем успехов в освоении .
 
 
 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

:good:   А покажи свою карту,сними на видео и выложи.

 

Та карта что мелькает на снимках в гайде служит для повышения мастерства . В свободное время вот делаю островки .

 

chZt6n.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Та карта что мелькает на снимках в гайде служит для повышения мастерства . В свободное время вот делаю островки .

 

chZt6n.png

Ну а вообще основную карту делаешь?что б разрабам дать для включения в игру))

medal medal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну а вообще основную карту делаешь?что б разрабам дать для включения в игру))

По поводу основы уже давно думаю . , Есть некоторые мысли по картам .

Keofox (Опубликовано: )

Закрепил. Большое спасибо за такие темы!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

  • 2 недели/недель) спустя...

Господа, пришли ответы на вопросы от разработчиков по СДК.

Изменено пользователем XpaMoBHuk
medal medal medal medal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×
×
  • Создать...