targa

Пользователь
  • Публикации

    10
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем targa


  1. Я думал такую мысль. Но тут есть сложности.
    Со сталинками проблема - много украшений/декора. Тяжело разрезать - у меня поэтому такой фигурный разрез.
    Для хрущёвок/панелек - ситуация легче - "порезать" по вертикали.

    Потому нужно чтобы каждая часть (левый торец, правый торец, подъезд) была функциональна - с точки зрения игры это просто строение.
    Т.е. сделать просто торцевую стенку не получится. Точнее можно, но будет глупо выглядеть если в эту стенку будут приезжать машины/заходить боты.

    Я к тому веду что скорее это будет выглядеть как левый торцевой подъезд, правый торцевой подъезд, центральный подъезд. А уже из этих частей собирать дом.

    Но тут тоже проблема вылезет - неровное место и части дома будут "гулять" по высоте.
    Конечно это можно вылечить MoveIt!-ом, но "на глазок" тяжело будет выровнять ровно.

    Надо будет подкинуть идею выравнивания по горизонтали/вертикали автору MoveIt!'а.

     

    0

  2. Intro

    Цель это статьи – показать, как можно с помощью Sub-buildings «сэкономить» на полигонах.
    Больше всего это приём подойдёт тем, кто делает «хрущёвки» или «панельки».
    Но можно его применить и для любых зданий, в которых есть повторяющиеся части.

     

    Идея

    Мне эта идея пришла в голову, когда я ехал в такси и смотрел на «Дом Коксохима» и думал, что «неплохо было бы его сделать, но там столько деталей…»
    Потом пришла мысль, что модель «хрущёвки» или «панельки» можно разрезать на 3 части – левый торец, один подъезд, правый подъезд.
    Левый (или правый) торец сделать основным зданием, остальное «нарастить» субзданиями – добавить сколько нужно подъездов, правый торец в конце.
    И так можно сэкономить на полигонах – не придется тратить полигоны на повторяющиеся части здания (подъезды).
    Но у этого «Дома Коксохима» все немного сложнее.
    И мысль трансформировалась в такое:
    image001-idea.thumb.jpg.d7c8eeb2c00173583cc926bfcb89e224.jpg
    Т.е. есть основная часть (основное здание будет), и каждый подъёзд как субздание.
    Была бы крыша плоская как у «хрущевок» - то и крышу не пришлось бы тащить в основную часть.
    Т.е. я могу сделать основное «здание» на 2-3-4-5-10 подъездов и в «дырки» вставляю нужное количество подъездов-субзданий. Рост полигонов незначителен – ведь в итоге в игру попадают только полигоны основной части и подъезда.
    Поначалу были опасения что на неровной поверхности подъезды будут «гулять» по высоте. Но к счастью оказалось, что тут всё в порядке – игра чётко всё ставит.

     

    Реализация в 3D-редакторе (Blender)

    Я сделал модель и разрезал её на куски. Вот так:
    image003-razrez.thumb.jpg.a4832a4363fa191ffe232809a7e62cc3.jpg
    Жёлтым выделена повторяющаяся часть (подъезд). У меня получилась сложная форма вырезки, но делу это не помешало.
    Для пользователей Belnder’а
    Создаём мэш с нужным профилем разреза (это мэш «ножик»). Помещаем его перед тем мэшем который будем резать (мэш «мишень»). Выделяем «ножик», потом зажав Shift выделяем «мишень», Жмём Tab, чтобы перейти в  режим редактирования мэша. На панели Tools, вкладка Transform жмём мышкой на кнопку Knife Project. «Ножик» можно удалить (или переместить на другой слой чтоб не мешал – вдруг пригодится).
     image005-nogik.thumb.jpg.75ba5b7f64b6fc791963863a03009d9b.jpg
    На скрине не видно, но у меня центр мэша (в Blender’е это называется Origin, в 3dMax’е – Pivot) расположен в координате 0,0,0.
    В игровом редакторе центральная часть так и останется в центре, а подъезды мы будем двигать влево-вправо по оси X.
    Далее без текстур экспортировал основную часть и один подъезд в игру.
    Получилось вот такое:
    image007-1st-result-in-editor.thumb.jpg.b5940204627d23c80a417dd3828f8598.jpgimage009-1st-result-ingame.thumb.jpg.86e9f0516bcd4b9738f99e843e887aad.jpg
     
    Сразу же стал виден один недостаток такого подхода – каждая часть субздания берёт свой случайный цвет.
    Т.е. сделать перекрашиваемые стены (как я люблю делать) не получится.

    (Тут случился напряжённый для меня май месяц,
    выход Mass Transit, сломавший мой тестовый городок со скрина выше,
    создание карты Днепра (-опетровска), которое заняло почти месяц времени).

    Текстурирование

    Я текстурировал основную часть здания и подъезд отдельно.
    Т.е для основной части у меня была текстура размером 2048x1280, и текстура размером 2048x896 для подъезда (тут я убрал кусок с материалом для крыши).
    Но можно поступить по-другому.
    Затекстурировать всё целиком, а уже потом разрезать описанным выше приёмом (я так с LOD-моделью сделал). Разрезание через Knife Project UV-развёртку не ломает.
    Ну и надеяться что игрок будет использовать мод Loading Screen Mod – он вроде как должен экономить текстуры.

     

    Экспорт в игру и сборка

    Экспортируем обе модели в игру каждую отдельным ассетом.
    У меня это получилось как:

    • tga_hdr5_8x3_rico_s175a.crp – основное здание
    • tga_hdr5_rico_s175a_p2.crp – подъезд

    а также магазины:

    • tga_ldc4_rico_s175a_furniture.crp
    • tga_ldc4_rico_s175a_jewelry.crp

    У магазинов простая модель – просто окна и вывеска. Тут тоже экономия и выигрыш в качестве. Для магазинов текстура в основном это изображение окна с рекламой.
    Ну и дверь сюда перемещаем.

    Я на первой сталинке 175-й серии («розовая»  с красной крышей) забыл это сделать и переделывать лень было. Поэтому маркер двери для магазина ставил «на глазок» (но вроде попал). Сами полигоны дверей остались в основной модели и модели подъезда.
    Магазины (точнее коммерция) второй сталинки (жёлтая с зелёной крышей) были уже с дверью.
    Ну и после импорта в игру всех частей, выходим в главное меню (или в Windows) и снова Редактор ассетов -> загрузить. Это чтобы игра перечитала свежесозданные ассеты (части здания), а то их не видно будет в диалоге выбора субзданий).

    Собираем.
    Загружаем основное здание:
    image011-load-main-building.thumb.jpg.8d9f5598b27fc32dcfdcdf3aded76f70.jpg
    Ставим первый подъезд:
    image013-place-1st.thumb.jpg.3427f9f78e4617dec691baa478cb995e.jpg
    В панели Properties (какой олень перевёл на русский это как «Недвижимость»?!) разворачиваем Sub-buildings и циферками выставляем точное положение. Тут есть нюанс – координата Y это Z на самом деле (поэтому оставляем по нулям), а Z это Y (ось вдоль белой стрелки на скриншоте выше).
    Ставим второй подъезд:
    image015-place-2nd.thumb.jpg.8523c838836c86ab5bb6f53c50672034.jpg
    И опять циферками выставляем нужное нам положение.
    Тоже самое с третьим:
    image018-place-3rd.thumb.jpg.1af7e1b6939b8f0c1532ff2ea2929d11.jpg 
    Добавляем и выставляем магазины:
    image020-1st-shop.thumb.jpg.733267687d8705d375d979b32fd0db3c.jpg image022-2nd-shop.thumb.jpg.df04a8f4d04cf2ee88c283bcf951a553.jpg

    На скринах видно, что маркер входа в магазин висит в «воздухе» – не страшно на окончательной сборке там всё-таки будут двери:
    image024-result-in-editor.thumb.jpg.2992daae5ea962587c6d88e037365628.jpg
    Ну и вид в игре:
    image026-result-ingame.thumb.jpg.3609f996289a8a8d9c9046b1c282913c.jpg
    Видно, что машины припаркованы там, где я ставил маркеры парковки.

     

    После сборки

    Сохранив основную часть здания, можем удалить ассеты с субзданием (я на самом деле просто перемещаю их из c:\Users\{user_name}\AppData\Local\Colossal Order\Cities_Skylines\Addons\Assets\ папки в свою рабочую папку).
    Теперь внутри ассета с основной частью здания находятся и другие части здания.
    Ну и для примера PloppableRICODefinition.xml для этого ассета:
     

    Недостатки

    О первом недостатке я уже сказал – каждая часть здания использует свой цвет для перекраски.

    Недостаток второй – если мы делаем RICO-здание, то части здания будут болтаться в панели строительства RICO. Я надеюсь, что AJ3D всё-таки выполнит мой Feature Request и можно будет скрывать из панели RICO ненужные здания.

    Недостаток третий – не получится сделав и запостив один раз торцы здания и подъезд собрать потом здания по принципу:

    • торец+подъезд+подъезд+торец
    • торец+подъезд+подъезд+подъезд+торец
    • торец+подъезд+подъезд +подъезд+подъезд+торец

    Точнее так сделать получиться, но выигрыша мы не получим. Т.к. каждым рас в каждом собранном здании будет своя копия ассета торцов и подъёзда.

     

    Выгода и достоинства

    Выгода первая – экономия на полигонах.
    Целиком модель этого здания имеет 18996 треугольников. А если удалить два ненужных подъезда, то в итоге два мэша (основная часть и один подъезд) имеют в сумме 10574 треугольника. Т.е. мы экономим чуть ли не половину полигонов.

    Выгода вторая, несвязанная правда с разрезанием на куски – увеличение текстурного пространства. Максимальный размер текстуры, который мы можем использовать в игре 2048х2048 (это насколько я помню ограничение движка Unity).
    У меня магазины идут отдельно, текстура там своя – поэтому там получилось сделать достаточно хорошо прорисованную и читаемую рекламу.

    Выгода третья – упрощение создания здания с большим количеством подъездов (повторяющихся элементов).
    Из первой 4-х подъездной сталинки («розовая» с красной крышей), я достаточно быстро сделал вторую – увеличенный вариант на 5 подъездов (жёлтая с зелёной крышей).
    Для этого мне всего лишь пришлось «раздвинуть» боковые стены на основной части, и вставить новый сегмент крыши.
    Большую часть времени я потратил на текстурирование:

    • текстурирование крыши на основной части (потому что я добавил новый кусок);
    • подготовка другого цвета стены на текстуре основной части и текстуре подъезда.

    Вот как происходила сборка второго варианта в игровом редакторе:
    image028-5x-place-1st.thumb.jpg.e5d0726fd89510c91e04be9a47d772d7.jpgimage030-5x-place-3rd.thumb.jpg.18522c64d64a9fb989cc3dc0d6c2112f.jpgimage032-5x-place-2nd-shop.thumb.jpg.d1b476d49d1b04bafbe0a0ed2360c363.jpgimage034-5x-in-editor.thumb.jpg.0a4f4a32e2eb3260c53837c44005544f.jpgimage036-5x-ingame.thumb.jpg.ce618b838505116b5260e9de1b6b27fb.jpg
     
     
    Выводы и идеи

    Этот приём не панацея, и не всегда применим. Но при создании больших зданий с повторяемыми частями будет работать.
    Следующий шаг – Sub-meshes. Я к сожалению не смог реализовать описанный boformer’ом подход.
    Если бы получилось, то можно было бы выйти на новый уровень – делаем низ здания (1-й этаж) и крышу. А остальные этажи «добиваем» суб-мэшами. Ботам в субмэш не надо – они будут пользоваться 1м этажом.
    Тогда можно было бы шикарно сэкономить на полигонах для зданий типа ЖК "Адмирал".
    Ну и в качестве идеи для любителей панелек.
    В Москве в 1972 году по адресу ул. Нежинская дом 13 построили здание-«бублик» (архитектор Евгений Стамо, инженер Александр Маркелов)
    В этом дом в своё время жил Савелий Крамаров (сам не знал пока эту статью не начал писать).
    image038-neginskaya-1.thumb.jpg.0b41b7c17e520d02da96fd20768ea8c0.jpgimage040-neginskaya-2.thumb.jpg.44b2c55075cfd8b96430c1c398cce1cb.jpg
     
    В 1979 году в Москве же по адресу ул. Довженко дом 6 построили дом-близнец.
    Вроде как планировали к Олимпиаде-80 сделать 5 таких зданий - по количеству олимпийских колец. Но отказались из-за дороговизны.
    Думаю, было бы интересно сделать такое здание. Но его делать сложно – там 26 подъездов!
    Представьте сколько нужно полигонов. Про текстурирование и размер текстуры лучше не вспоминать!
    Но мы можно «нарезать» такой дом как тортик, и собрать из кусочков. Примерно вот так:
    image042-bublik.jpg.179922bce47cb0ff3cf078517bf2660c.jpg
    Буду рад если кто-то воспользуется идеей и сделает такой дом.


    Ну и для затравки :)
    У нас в Днепре, по проспекту Героев 12 стоит дом в виде дуги – в народе известен как «китайская стена».
    В Запорожье по адресу улица Независимой Украины дом 31 находится дом в виде буквы «С».
    На этом всё.

    Цитата

    Ну вот так как-то

     

    2