Быстрая зарисовка по добавлению новых объектов на карту мира
* Скрины не являются пошаговой инструкцией.
(http://storage2.static.itmages.ru/i/11/0204/h_1296829612_23db74d651.jpeg) (http://itmages.ru/image/view/117243/23db74d6)
Софт:
+ OpenBRF v0.51 => для работы с .brf;
+ Blender v2.55 => 3D-редакт + UV-map (наложение 2D-текстуры на 3D-объект);
+ Photoshop / PainNet / etc... => любой графический редактор для создания текстуры.
Ход работы:
1. Делаем/находим .obj-файл с нужным объектом, правим его;
3d-исходные.obj тоже бывают free, гуголь в руки.. или прямые руки+опыт, для того, чтобы сделать все с нуля.
Допустим, нашли нужный 3d-объект в интернете. Обычно, он содержит много полигонов.. в игре, на карте мира, напротив, используются низкополигональные объекты (для уменьшения лагов). Поэтому первые наши действия - порезать меш добиваясь оригинальных-native размеров, при этом, стараемся сохранить внешний вид объекта (проги для создания LOD'ов типа BalancerLite, не справляются). Удаляем все невидимые поверхности, ребра, мелкие детали; упрощаем сложные объекты (на карте мира детализация минимальна). Оригинальные размеры конкретного объекта можно узнать через OpenBRF.
(http://storage3.static.itmages.ru/i/11/0204/h_1296827379_5abe4116b6.png) (http://itmages.ru/image/view/117212/5abe4116)
Дальше из map_icons_b.brf (что в MB Warband\CommonRes) импортируем в Blender любой город/замок (другой объект), смотрим размеры (высоту, ширину) и подгоняем наш меш по его "образу и подобию" (масштаб (S), расположение относительно ценра координатной сетки (G)). Макет почти готов.. на данном этапе нужно посмотреть как он будет отображаться в OpenBRF.. для этого делаем его импорт как static mesh.
Тут обычно проявляются, точнее не отображаются некоторые поверхности, которые в редакторе отображались нормально, или отображаются только внутренние стены. Причина этого - неправильно соединенные вершины, внутренние связи.. как следствие, нарушение однослойности контура... В blender'e есть волшебная кнопка которая пытается исправить эти баги..
В 3D-окне, в режиме редактирования (edit mode) выделяем весь объект (А), жмем Mesh => Normals => Recalculate Outside
(http://storage8.static.itmages.ru/i/11/0204/h_1296828503_e73d902a0d.png) (http://itmages.ru/image/view/117217/e73d902a)
... если не помогло - проблемный участок меха правится руками... удаляются все внутренние "карманы, апендициты, соединения" на контуре. Также, сложные объекты можно разбить на простые (разрывая связи между ними).
(http://storage4.static.itmages.ru/i/11/0204/h_1296831480_b08e3b370e.png) (http://itmages.ru/image/view/117261/b08e3b37)
Если все отображается нормально - переходим к текстуре.
2. Накладываем на объект текстуру;
Текстура состоит из нарезаных картинок на которые "кидают" проекции различных поверхностей объекта при текстурировании. Как образец, смотрим текстуру натива (скажем fake_houses.dss), на квадрате 512х512 помещается основные части зданий: множество видов стен, крыша...
Создавать текстуру можно 2 способами: собрать ее сразу или постепенно.
Если не рисовать все самому, то за основу берутся фотки реальных объектов, вырезая из них нужные елементы компонуем нашу текстуру. Главное правило: большая поверхность - большая картинка. Если маленькие картинки натягивать на большие поверхности они сильно растягиваются и не смотрятся (это не касается простых текстур используемых для заливки одним цветом).
Свою первую текстуру я делал постепенно. В blendere получал проекцию поверхности, изменял её масштаб (на пустой текстуре) с таким расчетом, чтобы поместились и будущие елементы, по этому размеру в фотошопе нарезал картинку и размещал её в файле текстуры в месте проекции.. поподробнее...
Делим главное окно на два: в первом остается 3D-вид, во втором - UV-mapping.
В 3D-окне жмем режим выделения "face", отключаем прозрачность фейсов объекта и выделяем меш полностью (А).
Если есть готовая текстура подгружаем ее: в UV-окне жмем [Alt+O] (Image => Open).
В противном случае создаем новую: в UV-окне жмем [Alt+N] (Image => New) => 512х512 (native-стандарт для объктов карты мира). Далее сохраняем ее как .png (Image => Save as) для внешнего редактора.
(http://storage8.static.itmages.ru/i/11/0204/h_1296832801_a97432ff28.png) (http://itmages.ru/image/view/117289/a97432ff)
В 3D-окне, в режиме редактирования, снимаем выделение всего объекта и выделяем нужную поверхность(ти) (например "стену дома"), в UV-окне выбираем нашу текстуру (если она вдруг перестала отображаться), мышь в 3D-окно жмем U => Unwrap => в UV-окне появляется контур этой "стены" который сразу же выделяем (RClick или (B)) и уменьшаем (S), по необходимости трансформируем (выделяем нужные вершины и двигаем (G)), крутим (R)... Делаем контур нужного размера и формы, передвигаем его на нужную картинку (если текстура готовилась заранее). Если текстура делается в процессе, смотрим размер проекции и её положение на пустой текстуре. Открываем текстуру в редакторе графики и в это же место подсовываем картинку нужного размера, сохраняем изменения. В blendere, в UV-окне жмем [Alt+R] (Image=>Reload). Текстура обновляется.. нашу проекцию подравниваем по картинке. Такими сегментами постепенно заполняется вся текстура.
Если какую-нибудь часть объекта нужно залить простым цветом, на текстуре рисуется маленький 1х1 квадрат нужного цвета, на который кидают уменьшенную в точку проекцию. Обычно это касается мелких деталей.
(http://storage6.static.itmages.ru/i/11/0204/h_1296836795_6f267f223b.png) (http://itmages.ru/image/view/117359/6f267f22)
3. Объект+текстуру пакуем в .brf и прописываем в игре.
Когда все готово текстуру сохраняем как .dss.
Новый объект, в OpenBRF'e желательно сохранить отдельным .brf'ом куда кроме самого .obj-файла импортируются новые материал+текстура.
На вкладке материала прописывается шейдер и флаги.
(http://storage5.static.itmages.ru/i/11/0204/h_1296834484_d7f0f080ad.jpeg) (http://itmages.ru/image/view/117302/d7f0f080)
Далее все раскидываем по папкам, добавляем строки в module.ini мода и тд... процесс установки переписывать не буду, можно посотреть тут, на примере: http://rusmnb.ru/forum/index.php?topic=9283.0 (http://rusmnb.ru/forum/index.php?topic=9283.0)
Еще статья по blender'у: http://rusmnb.ru/forum/index.php?topic=9068.0 (http://rusmnb.ru/forum/index.php?topic=9068.0)