От дома до крепости. Скрещиваю проекты.
Решил проблему, я привел модель к нормальному масштабу, от есть сбросил все скейлы до единицы и удалил все костыли в виде множителей. Покрошил модификатор на понятные категории.
В худах добавил дополнительный пункты для отображения размеров ширины, длины, высоты стен, ширины и высоты модулей, на которые бьётся здание, высоту крыши, и длину верхней оси. Понял что теперь нет смысла смотреть на значения в пунктах модификатора, так как они не бьются с тем что показывается в худах, короче на худы можно ориентироваться в плане понимания размеров, а на значения в стеке можно по сути не смотреть... только радиус бревна показывает правильное значение. Почему так получилось? Потому что многие подразделения держатся на ноде resample curve, в которой вводимый размер делит отрезок на количество... мне лень объяснять, проще загуглить
Какое-то время я провозился с настройкой "палок". Глобально сейчас есть два метода спавна бревен. В обоих методах он начинается с клетки, на которую как на шампур нанизываются штуки. В первом случае это инстанс, по сути любой заранее заготовленный примитив: цилиндр, куб, бусы, хоть обезьяны, лишь бы развертка с материалом была.
Во втором случае это процедурный круг в котором можно задать количество точек внутри генератора.
Но есть проблема которую я не решил, в методе с кругом, сейчас он работает только если количество точек кратно 4, в других случаях, разворот диска не соответствует повороту цилиндра и вылазит косяк. У меня уже сформировался способ разворачивания незапаяных кривых, но как это сделать когда у тебя много кривых с закрытым концом? Тут я решил воспользоваться инстансами но до конца не разобрался с их поворотом поэтому всплывает такой баг.
Еще у бревен накатил параметры поворота- синхронного и рандомного.
Мне подумалось что генератор уже в том состоянии чтобы использовать его в бою поэтому я пустил его на колбасу в проекте с крепостью, который начинал еще в прошлом году.
Я уже успел накинуть материалов и поменять форму брёвен даже протянуть какие-то дорожки и бросить дома на основе старых версии генератора. Тогда мне казалось что дома получились великоваты.
Скорей всего я преувеличил их размер потому что на схеме они ощущались слишком крохотными.
И вот у меня на руках обновленная версия генератора, и я пробую расставить по этой схеме дома. И получаю крепость исполина созданную словно по заветам дарк соулса чуть ли не из древа эрд.
Тут в мою голову закрадываются подозрения что не стоит следовать дословно схеме. Хотя честно признаюсь такие вайбы гига крепости мне по душе. Что если в Челябинском бору в 1736 году росли гигасосны, а сейчас они поизмельчали, хех, фантазии, фантазии.
И даже если выровнять размеры брёвен, то ощущение монструозности никуда не денется. Поэтому придётся менять пропорции крепости основываясь на других данных:
Длина стороны - 60 саж (128м) с бастионами – 170м
Высота стены - ок. 3 м.
Высота башни до кровли - ок. 7-8 метров.
Подсказывает Евдоким и кидает фотомонтаж(кстати, гляньте его разбор Челябинской крепости), очень познавательно)
В итоге я сейчас нахожусь на стадии когда нужно выровнять крепость под габариты серого прямоугольника.
Еще из интересного. В процессе расставления мелких домиков, я пришел к выводу что нужно переделать алгоритм спавна труб на крыше. Тогда они спавнились только над пересечением внутренних стен.
Но у маленьких домов нет внутренних осей поэтому пришлось сделать отдельный ручной режим в котором можно наметить сетку и на неё ставить трубы
А после оставлять процент от наставленных труб
Но оказалось что оставлять процент не очень удобно, потому что при изменении масштаба здания плостность сетки меняется и тогда приходится подкручивать этот процент. Поэтому был добавлен пункт оставлять только конкретное количество труб. Пока оставил два режима.
Еще одна "проблема" это вручную менять сид трубы на каждом доме, поэтому сид в последствии стало можно привязать к положению здания, эта функция была повторена в ставнях и экструзии бревен и спавне окон.
У пилястр появилась функция подразделения на этажи в видео ниже я показываю на примере с маской как это выглядит.
Еще пример применения анимации открытия-закрытия.
Еще одна функция которая находится в разработке, пока добавил только на крышу и антаблемент. Еще не продумал как это должно работать и зачем оно надо.
Файлик можно взять в конце статьи на бусти