targa

Экономим на полигонах с помощью Sub-buildings

6 сообщений в этой теме

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 находится дом в виде буквы «С».
На этом всё.

Цитата

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

 

Изменено пользователем targa
2

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


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

Пс парень, для TpF не хочешь парочку заводов сделать?

0

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


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

Спасибо за предложение, но у меня в плана пока только Cities Skylines.

0

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


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

 

Цитата

 

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

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

А есть возможность делать некоторые дома как отдельные подъезды (Наподобии 83-й серии)? Дабы можно было собирать различные конфигурации характерные для сталинской застройки? Скажем https://goo.gl/maps/gJwPm4svcFt или https://goo.gl/maps/MheuSzDD4hN2 или https://goo.gl/maps/tTM1WL7PQzS2 или https://goo.gl/maps/JUPEjhD6n7p 

0

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


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

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

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

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

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

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

 

0

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


Ссылка на сообщение
Поделиться на других сайтах
В 14.08.2017 в 12:47, targa сказал:

Я думал такую мысль. Но тут есть сложности

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

И то это минимальный набор получается. :( Самый минимальный. А по факту там этих секций: угловая (отступ в квартал (да ещё внутренний да внешний угол)), угловая (угол улиц), секция промежуточная с аркой, секция промежуточная повышенной этажности (плюс два торца для этой повышенной этажности), промежуточная с магазином(вход, без входа), промежуточная с учреждением и.т.д. И по угловым куча вариантов может быть: магазин, учреждение, повышенная этажность, башенка, диагональная в два угла/под 90 градусов.

С другой стороны если взять всего лишь три разных дома по архитектуре, сделать для них все варианты секций, два-три варианта фасада, варианты этажности (3-5-7). То этого вполне хватит на полгорода чтобы застроить не особо повторяясь. Но количество работы прямо нереальное получается.

0

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


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

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

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