Как сделать иконку для глобальной карты в OpenBRF (Часть 1)
Данный гайд является переводом. Оригинал находится на TaleWorlds.
Откройте файл ani_man_walk.brf с помощью OpenBRF, который находится в папке CommonRes. Выберите man_walk и посмотрите, как идет скелет из октаэдров. Чтобы использовать кадры из этой циклической анимации для вашей иконки, щелкните по нему правой кнопкой мыши и выберите 'Add to reference animations' (последняя опция в контексном меню).
Теперь нужно одеть выбранный скелет.
С помощью OpenBRF откройте armours_e.brf (File -> Open), который находится в папке CommonRes. Выберите lamellar_vest_a. Вы увидите, данная модель имеет 1326 полигонов. Это слишком много для иконки. Поэтому выберите lamellar_vest_a.lod2 вместо lamellar_vest_a - он имеет только 132 полигона и все еще сохраняет достаточную детализацию, что идеально подходит для значка карты. Скопируйте этот меш: Edit -> Copy.
Затем откройте меню 'File' в строке меню OpenBRF и выберите 'New'. В меню 'Edit' выберите 'Paste', а затем в меню 'File' выберите 'Save as...'. Дайте вашему рабочему файлу подходящее имя, я предлагаю 'icon_test' и сохраните его в ...Warband\Modules\Native\Resource или ...Warband\Modules\<Папка вашего мода>\Resource; не загромождайте CommonRes.
Поздравляем, теперь у Вас есть безголовая, безрукая, безногая иконка.
Хорошо, давайте перейдем к meshes_face_gen.brf, который находится в папке CommonRes. Здесь вы увидите половину нетекстурированной мужской головы. Забудьте об этом - у данной модели 449 полигонов на половину головы: это слишком много. Скопируйте уродливую нетекстурированную заглушку под названием male_head.lod2, который имеет только 24 полигона для всей головы и вставьте ее в ваш файл icon_test.brf.
Давайте дадим нашей заглушке лицо - измените ее материал с 'default' на 'manface_young', и она начинает выглядеть как голова человека. Теперь, если вы одновременно выделите свою голову и броню, вы увидите, что не хотят объединяться друг с другом. В Warband и OpenBRF меши объединяются только в том случае, если они имеют одно и то же имя. Итак, выделите обе меши в OpenBRF, щелкните правой кнопкой мыши, выберите 'Group Rename...' и введите 'x.'. Теперь они являются компонентами одной меши, называемой x, и когда вы выделяете их, обе меши объединяются. Тем не менее, голова находится там, где должны быть ноги, потому что они не подстроенны друг под друга. Поэтому выделите только голову, щелкните правой кнопкой мыши и выберите 'Mount on one bone...'.
Появится окно, в котором задайте следующие параметры:
Reference skeleton: skel_human
bone: head
(optional) carry location: none
Piece currently centred: at origin
Затем нажмите OK, а затем сохраните свой файл icon_test.brf.
Теперь иконка имеет голову.
Давайте дадим иконке руки. В body_meshes.brf посмотрите m_handL и m_handR. Они отлично работают в OpenBRF, но имеют слишком много полигонов - 996. Мы можем жить с m_handL.lod1 и mhandR.lod1 (32 полигонов): скопируйте и вставьте их в ваш icon_test.brf и переименуйте их: 'm_handL.lod1' -> 'x.m_handL.lod1' и 'm_handR.lod1' -> 'x.m_handR.lod1'. Как и голова, они лежат у ног. Поэтому используйте 'Mount on one bone...' для установки x.m_handL.lod1 на кости hand.L, а затем x.m_handR.lod1 на кости hand.R. Затем сохраните свой файл icon_test.brf.
Прежде чем мы пойдем дальше, нам также следует помнить, что иконки карты могут использовать лишь один материал. Мы можем комбинировать текстуры (я расскажу как это можно сделать позже), но лучше всего минимизировать число тех текстур, которые будут использоваться. Поэтому выделите наши две руки и измените их материал с 'costumes_lod' на 'manface_young', поскольку мы уже готовы использовать его. Как вы можете видеть, руки по-прежнему имеют цвет кожи, а глаза и носы не отображаются, без ненужной третьей текстуры - достаточно хорошо для значка карты, поэтому сохраните свой icon_test.brf.
Для ботинок, откройте boots_a.brf и скопируйте и вставьте spl_greaves в свой файл icon_test.brf. Щелкните правой кнопкой мыши его сетку и переименуйте ее из spl_greaves в x.spl_greaves. К счастью, splinted greaves уже расположены правильно. Тем не менее, наши ботинки имеют на 292 полигонов, а в boots_a.brf не было доступного LOD. Ничего, мы можем сделать наши собственные LOD'ы. Щелкните правой кнопкой мыши на x.spl_greaves в OpenBRF и выберите 'Compute LODs'. Это дает нам четыре LOD'а, но нам нужен только x.spl_greaves.lod1 (145 полигонов): выделите все остальные мещи x.spl_greaves*, щелкните правой кнопкой мыши и выберите 'Remove'.
Сохраните свой icon_test.brf, и теперь мы имеем лысого солдата.
Вместо того, чтобы дать иконке ему волосы, дайте ей шлем: откройте helmets_f.brf, который находится в папке CommonRes, скопируйте и вставьте tattered_steppe_cap_a_new.lod2 (82 полигона) в свой icon_test.brf. Переименуйте его в x.tattered_steppe_cap_a_new.lod2 и установите шлем на голову: 'Mount on one bone...' с параметрами как для головы. Этот шлем использует материал helmets_new_f из Warband. Чтобы сэкономить на текстурах, выделите наши splinted greaves (x.spl_greaves.lod1) и измените его материал с costumes5_skin на helmets_new_f (так что две модели разделяют эту текстуру). Чтобы использовать кольчужную часть этой текстуры, щелкните правой кнопкой мыши на сапогах и выберите 'Transform texture coords' и введите следующие параметры в всплывающем окне:
scale% U: 200,00
scale% V: 200,00
Translate U: 0.0000
Translate V: 0.3500
и нажмите ОК, это даст нам кольчужные ботинки и на одну текстуру меньше.
Сохраните свой файл icon_test.brf. Теперь мы имеем безоружного солдата, состоящего из 415 полигонов.
Для меча можно скопировать и вставить sword_medieval_a.lod1 (50 polys) из weapon_meshes_c.brf, который находится в папке CommonRes. Переименуйте его: sword_medieval_a.lod1 -> x.sword_medieval_a.lod1. Установите его в руку, используя 'Mount on one bone', но на этот раз установив кость item.R, которая помещает меч в правую руку солдата.
Сохраните свой файл icon_test.brf. Теперь мы имеем вооруженного солдата. Теперь нажмите кнопку анимации OpenBRF и измените ее с no anim на man_walk, а затем нажмите кнопку >, чтобы проиграть анимацию.
Теперь солдат вооружен и опасен!
Для щита скопируйте и вставьте shield_round_e.lod1 (14 полигонов) из shields.brf. Переименуйте в x.shield_round_e.lod1 и установите его с помощью 'Mount on one bone' на кости forearm.L. Это выглядит великолепно, но мы превысили число текстур (мы хотим использовать четыре разных материала).
Чтобы сэкономить на текстурах, измените материал вашего меча с weapon2 на helmets_new_f (так же, как и для шлема), что дает нам перепутанную текстуру. Чтобы исправить это, щелкните правой кнопкой мыши на мече и выберите 'Transform texture coords' и введите следующие параметры в всплывающем окне, чтобы изменить его новую текстуру:
scale% U: 25.00
scale% V: 25.00
Translate U: 0.0000
Translate V: 0.0500
и нажмите ОК.
Теперь солдат готов к битве, и ему требуется только 479 полигонов.
Используйте колесико мыши, чтобы отдалить камеру в OpenBRF, чтобы проверить, как солдат будет выглядеть в масштабе глобальной карты, и заставьте его ходить. Выглядит неплохо.
Теперь мы должны покинуть OpenBRF для создания единой комбинированной текстуры, так как иконки карты могут содержать только один материал. В редакторе изображений создайте пустое изображение размером 1024 x 1024 пикселя. Импортируйте lamellar_vest_a.dds из папки Textures Warband'а и измените его размер с 1024 x 1024 пикселей до 512 x 512 пикселей. Скопируйте все изображение и вставьте его в верхний левый квадрант вашего пустого изображения 1024 x 1024.
Импортируйте manface_young.dds из папки Textures Warband'а. Поскольку данное изображение уже имеет размер 512 х 512 пикселей, то скопируйте и вставьте его в верхний правый квадрант вашего 1024 х 1024 изображения.
Импортируйте helmets_new_f.dds из папки Textures Warband'а. Поскольку данное изображение уже имеет размер 512 х 512 пикселей, то скопируйте и вставьте его в левый нижний квадрант вашего 1024 х 1024 изображения.
Теперь импортируйте последнюю текстуру shields.dds из папки Textures Warband'а и измените ее размер с 1024 x 1024 пикселей до 512 x 512 пикселей. Затем скопируйте и вставьте ее в нижний правый квадрант вашего изображения размером 1024 x 1024 пикселя.
Сохраните его в формате dds как map_icon_new_tex в ......Warband\Modules\Native\Textures или ...Warband\Modules\<Папка вашего мода>\Textures.
Затем вернитесь в OpenBRF и откройте файл materials.brf в папке CommonRes Warband'а. Скопируйте материал map_icons и вставьте его в свой icons_test.brf. Глядя на этот материал, вы можете видеть, что значки карт используют особый шейдер, и не имеют DiffuseB, Bump- или Normalmap, Enviro или Specular. Чтобы использовать шейдер и настройки этого материала, нам просто нужно заменить текстуру DiffuseA. Итак, нажмите кнопку 'Import' в строке меню OpenBRF, выберите 'New Texture...', нажмите 'Browse' (также добавьте новый материал с тем же именем), и импортируйте map_icon_new_tex. Теперь выберите map_icons на вкладке материалов и измените ее текстуру DiffuseA с map_icons на map_icon_new_tex, переименуйте этот материал map_icon_combined и сохраните свой brf-файл.
Сложная часть - это привязка комбинированной текстуры к нашим мешам.
Сначала всем нашим мешам присвойте материал map_icon_combined.
А теперь мы должны трансформитовать текстурные координаты наших моделей с помощью 'Transform texture coords'.
Выполните это для всех нижеперечисленных мешей. Параметры трансформации текстур вам тоже будут ниже даны.
Итак:
x.lamellar_vest_a.lod2:
scale% U: 50.00
scale% V: 50.00
Translate U: 0.0000
Translate V: 0.0000
голова и руки:
scale% U: 50.00
scale% V: 50.00
Translate U: -0.5000
Translate V: 0.0000
шлем и меч:
scale% U: 50.00
scale% V: 50.00
Translate U: 0.0000
Translate V: -0.5000
ботинки:
scale% U: 50.00
scale% V: 50.00
Translate U: 0.5000
Translate V: -0.5000
щит:
scale% U: 50.00
scale% V: 50.00
Translate U: -0.5000
Translate V: -0.5000
Все меши теперь используют один материал! Однако не все ваши меши имеют одинаковое количество фреймов. У всех мешей он один, кроме пластинчатого жилета, который имеет три фрейма. Мы можем комбинировать эти меши только при условии, что они имеют одинаковое количество фреймов. Итак, выделите x.lamellar_vest_a.lod2, щелкните правой кнопкой мыши и выберите 'Separate all frames' в контексном меню. Удалите 'x.lamellar_vest_a.lod2_frame1' и 'x.lamellar_vest_a.lod2_frame2'. Теперь вы можете выделить все свои сетки, щелкнуть правой кнопкой мыши и выбрать комбинацию мешей.
У вас есть новая композитная модель, просто называемая x. Переименуйте эту новую модель из x в my_map_icon и сохраните свой icon_test.brf.
Теперь сделаем ей вершинную анимацию. С анимацией man_walk, выбранной в анимационной кнопке OpenBRF, щелкните правой кнопкой мыши my_map_icon и выберите 'Convert into a vertex animation'. Теперь у вас есть новая модель с именем my_map_icon_walk без кнопки анимации и с 33 кадрами. Нажмите кнопку >, чтобы увидеть, как солдат идет.
К сожалению, движок Warband использует упрощенные анимации на глобальной карте, поэтому нам нужно уменьшить количество кадров и использовать тайминги Native. После сохранения вашего icon_test.brf откройте файл map_icon_meshes.brf в папке CommonRes, скопируйте модель игрока (player) и вставьте ее в свой файл icon_test.brf. Теперь Вы можете видеть, что модель игрока имеет только 11 кадров. Кадр 0 - кадр с положением модели с оружием в позиции Т, который никогда не используется на глобальной карте.
Выделите my_map_icon_man_walk и разделите все кадры (separate all frames), получив в итоге 33 кадра и не получив T-позицию. Мы можем использовать frame0 для наших первых двух кадров (Edit -> Copy, Edit -> Paste), поскольку первый кадр никогда не используется. Теперь нам нужно 9 других из оставшихся 32, примерно по одному на каждые 3.5. Используйте alt и стрелку вверх / вниз для перемещения отдельных кадров до тех пор, пока вы не создадите вертикальный список в следующем порядке:
my_map_icon_walk_frame0
my_map_icon_walk_frame1
my_map_icon_walk_frame4
my_map_icon_walk_frame8
my_map_icon_walk_frame12
my_map_icon_walk_frame15
my_map_icon_walk_frame19
my_map_icon_walk_frame22
my_map_icon_walk_frame25
my_map_icon_walk_frame28
my_map_icon_walk_frame32
Номера не имеют значения, OpenBRF объединяет их на основе своих позиций в вертикальном списке. Теперь выделите эти 11 кадров, щелкните правой кнопкой мыши и выберите 'merge as frames in a vertex ani'.
Теперь у вас есть одинадцатикадровая модель с неправильными таймингами. Итак, выделите модель игрока, выберите Edit в строке меню OpenBRF и Copy. Затем выделите новую одинадцатикадровую иконку и вставьте тайминги из меню редактирования в OpenBRF. Теперь иконка синхронизируется с движком Warband. На самом деле это единственная моделька, которую нужно сохранить. Чтобы избежать путаницы, переименуем ее в my_final_map_icon. Теперь Сохраните ваш icon_test.brf.
Ну вот и все, моделька создана. Теперь нужно прописать ее в модульной системе, и прописать load_mod_resource = icon_test в module.ini
Конечно, таким образом можно создавать более сложные модели:
1. Группы - если вы хотите сделать иконку группы, подобный иконкам в Viking Conquest, сделайте три копии иконки одного воина, сместите две из них. Вы можете сгруппировать любые вертексные анимации, если они имеют одинаковое количество кадров, одинаковые временные рамки и один и тот же материал. Ясно, что проще всего, если все солдаты в группе однотипны.
2. Маунты - лошади используют другие скелеты и анимации, но принцип остается тем же. К сожалению, базовая анимация лошади содержит несколько сотен кадров, что делает подбор подходящих кадров для вершинной анимации болью. Помните, что если вы хотите совместить их с всадником, обе иконки должны использовать один и тот же материал. Таким образом, один квадрант вашей общей текстуры должен быть посвящен текстуре лошади.
3. Всадники - сделаны так же, как пехотинцы, но используют анимацию верховой езды. Затем объедините меши с иконкой лошади. Трудная часть - выбор правильных кадров для синхронизации движения лошади и всадника. Иногда вам также нужно обманывать и настраивать положение всадников, прежде чем комбинировать его / ее с лошадью.
4. Тележки - единственными движущимися частями являются колеса. Просто сделайте каждый отдельный кадр, вращая модель колес. Остальная тележка одинакова в каждом кадре. Затем вершинная анимация двух колес, одна тележка и лошадь могут быть сгруппированы с получение комбинированной модели (убедитесь, что все они имеют одинаковое количество кадров, временные рамки и материалы).
5. Текстуры - чем больше бит вы добавляете, тем больше текстур вам понадобится. Использование иллюстрированных четырех квадрантов может быть предельным, но те же самые принципы могут быть использованы для разделения любого из ваших четырех квадрантов на четыре субквадрата 256 х 256 пикселей. Лучший способ сделать это - частично текстурировать иконку с четырьмя квадрантными материалами, используя руководство. Затем измените размер этой пиксельной текстуры размером 1024 x 1024 пикселей на 512 x 512 пикселей и вставьте ее в квадрант новой пустой текстуры. Это обычно приводит к тому, что последующее преобразование координат текстурных координат выполняется так же, как показано выше, но не всегда - координаты UV могут быть сложными.
Часть 2
Комментариев 19
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.