Имея самое простое распространение объекта по сплайну выходит обычное заполнение по периметру линии.
Как видно, "окна" распространяются через определенную дистанцию, которую можно менять, а заполняющий элемент забирает остальное место в сплайне.
Добавив в ветку новую ноду transform и присоединив к базовому заполнителю, назначенному на угол, можно получить следующие:
Добавлю, что в ноде transform немного изменены параметры размеров объекта для наглядности.
Так же стоит отметить, что в параметрах линейного распространителя в графе угол была поставлена галка на bevel corners,иначе rc начинает ставить на угол сам объект и поворачивать его ( при определенных условиях и параметрах как самого rc, так и распространяемых объектов - slice,bend,align to path).
Вернемся к построению модели здания. Мы разобрались как из двух базовых элементов и замкнутого контура сделать внешний вид этажа, но нам нужно несколько этажей. Для этого внутри самого сплайна скопируем целиковый замкнутый элемент по оси Z.
При том же алгоритме получим следующее:
Здание "почти готово", но нам нужно как то разделить этажи по типам. Можно создать новый генератор и новые элементы в этом же объекте rc и распространять на другие сплайны, но в больших объемах это сильно увеличит трудозатраты. Плюс какие либо изменения в изначальный алгоритм внесут неизвестность.
Один из типов выбора вариаций в базовом элементе распространения являются id сплайна. Они и будут являтся базой для нашего объекта.
Добавим ноду selector и выберем spline material ID, а в самом сплайне поменяем одному из элементов id.
Для небольшого ускорения добавим еще пару нод и новый базовый объект.
Итак, в параметре everly появилось целое дерево элементов.
Пойдем последовательно:
- первым стоит селектор(selector), у которого в параметрах стоит выборка по spline mat id, следовательно он будет назначать в порядке очереди объектам свои id. Так у второго подключенного будет id-2.
- имя два объекта в селекторе, параметры по выбору spline mat id, и разные id в самом сплайне мы получим разделение распространенных объектов.
Далее идет рандомизатор(randomizer), зеркало(mirror) и наш второй объект. Очень полезная в работе с архитекторам схема, т.к. они любят хаотичность. Плюс в дальнейшем это нам понадобится во включении света в разных окнах.
Selector является одним из методов выбора распространения и может быть использован локально в генераторе. Для глобального разделения сложных этажей мы будем использовать ограничитель по id в самом генераторе.
К примеру так можно отделить весь первый этаж во всех типах домов.
Немного изменим наше нодовое дерево:
В первичном элементе было поставлено ограничение использовать id сплайна 1. Второй элемент использует id больше 1 (>1).
Получается следующее:
Как мы видим из изображений выше, имеется 1 сплайн, 2 генератора и 3 id. Таким образом мы уже можем создать два разных здания с одинаковым первым этажом. Т.е. текущих знаний достаточно для создания n-количества различных вариаций этажей. Но у нас по прежнему нет ни внутренности домов, ни кровли.
Начнем с последнего.
Кровлю или полное закрытие сплайна можно сделать через второй тип генератора - array. Он распространяет геометрию внутри сплайна.
Логика ограничений опять поменялась, но сразу выставить 2 разных точных параметра в ограничителях нельзя( либо мне он неизвестен).
Получается следующее:
Один генератор на все первые этажи, один на разные основные(не первые в данном случае) и один на всю кровлю. Для наглядности добавим в ноду кровли трансформацию по оси Z ( такое можно сделать в самой ноде геометрии).
Почти готовый дом.
Внесем ясность с внутренними помещениями домов.
Первично сей алгоритм создавался в народной версии rc 3.0~. В версии 4+ itoo сменили алгоритм группирования, потому предыдущая схема с "приклеиванием" внутренности со светом к окну не работает, т.к. ширины были разные. Описывать все изменения не вижу смысла, т.к. шаблон прилагаю.
Текущий вариант внутрянки для основной части:
В итоге в основной части имеется два типа внутренних помещений - со светом и без. Свет назначается в материале через corona light. Применяя известную нам ноду рандомизатор в селекторе внутрянки можно создать иллюзию "хаотично" включенного света.
Таким же методом сделаны разные типы штор и разные типы окон в основных частях(двойные,одинарные и тп).
После множественных изменений алгоритма я пришел к такому его виду:
(базово он всего еще построен на описанных выше принципах)
Как видно используется 1 сплайн для всего.
Итоговые объемы выглядят так:
Добавлю некоторые замечания по шаблону:
-Вся геометрия сделана с нуля(за текстуры не ручаюсь).
-Присутствует рандомность в текстурах. Так же применены xform, что позволило избежать тайлинга.
-Используется 1 материал (multiMat конечно же).
-Здания моделируются внутри сплайнов, т.е. он является их границей.
-Возможно использование переменной этажности и модульности в одном здании.
-В данный момент имеется 8 разных типов.
-Рекламные вывески на первых этажах сделаны через текст и экструд(стек сохранен), что позволит поменять названия на любые.
-Количество света в окнах регулируется внутри объекта rc в ноде randomize в генераторе с id 2 ( основная часть). Сила через материал.
-Геометрию можно менять на ваш вкус и цвет. При сохранении общих размеров (и pivot'ов) итоговый алгоритм не пострадает.
-Добавлены некие вариативные параметры в алгоритме(например можно отключить "рекламу" на первых этажах(Сейчас стоит int 1-0)).
ВАЖНО!
-Шаблон создан в RailClone версии 4.0.9. С версией 3~ будет ругаться, плюс есть различия в алгоритмах самих itoo.
-System units должны быть мм! Иначе возможны артефакты с размерами текстур.
-Высота этажей(z расстояния элементов сплайна) следующая :
1 этаж - 5100 мм
2-7 - этажи - 3000 мм
8-этаж - 6000 мм (обычный двойной)
Для простого использования шаблона достаточно создать сплайн внутри файла и переназначить в объекте rc.
Ссылка на скачивание:
https://www.behance.net/gallery/88191821/PARAMETRIC-BUILDIGS-Raiclone-Template-FREE
free to use