RailClone | Создание параметрических зданий.

Приветствую.

В процессе работы над неким проектом возникла потребность создания относительно детальных домов разной этажности и состава. Единственным разумным вариантом для 3ds Max стало использование параметрического плагина Railclone. Для максимального упрощения рабочего процесса требовалось использовать только 1 сплайн(spline). Так же была задача сделать переменную этажность и разные типы этажей и фасадов. Т.к. в видах используется несколько зданий, то моделировать по одному усложнило бы задачу в больших объемах.

Потому в процессе формулирования технический требований к шаблону было сформулировано несколько требований, они и являются основными в логике построения параметрики:

1. Один сплайн на все дома

2. Разная этажность

3. Разные типы домов.

4. Вариативность базовых элементов, включая свет в помещениях.

Начнем с основ моделирования в Railclone. Плагин распространяет геометрию по двум типам: по сплайну и внутри замкнутого сплайна. Здания в плане обозначаются простым прямоугольником, то в основе будет использован первый тип. Т.к. сплайном обозначают границы здания, то нам необходимо придерживаться их.

Создадим обычный замкнутый сплайн , бокс (box) и объект rc(RailClone).

Внутри объекта rc перетянем ноды (nodes) в генераторах linear, spline и segment.

Назначим наши объекты на каждый из двух нод сегментов.

Имея самое простое распространение объекта по сплайну выходит обычное заполнение по периметру линии.

Другие варианты распространения:

-everly , т.е. через определенную дистанцию

-corner - на углах сплайна. Притом можно делать вариативность по типам угла сплайна ( угол,безье, угол безье, сглаживание)

-start и end - начало и конец разомкнутого сплайна ( для зданий такой тип не подходит )

Исходя из всех типов распространения можно составить алгоритм:

1. Базовым элементом становятся окна,которые ставятся по дистанции(everly).

2. Стена является заполнителем(default).

3. Можно использовать какие либо элементы на углы, либо модифицировать текущие по средствам нодов внутри объекта rc.

Расставив ноды получаем следующее:

Как видно, "окна" распространяются через определенную дистанцию, которую можно менять, а заполняющий элемент забирает остальное место в сплайне.

Добавив в ветку новую ноду 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

593 0 850 3
10
2019-11-20
Пытаются сделать процедурность, как в Гудини?
2019-11-20
Пётр ПанинПытаются сделать процедурность, как в Гудини?

Не думаю. Базовые задачи там иные.
2019-11-20
Пётр, просто давнишний плагин для процедурности в максе, но не как в Гудини, процедурность уровня Гудини только в Гудини)
2019-11-20
Скоро и мне пригодится.
2019-11-20
Евгения, приходите ко мне на курс!
2019-11-20
Открывая комменты думал, а будет ли про Гудини😄
2019-11-20
Нет уж я лучше гудини освою
2019-11-20
На крайняк можно сделать ассет в Гудини и внедрить в макс через Гудини енджин
2019-11-20
но для такой задачи все-таки рейлклон легче освоить)
2019-11-20
И прыгать из пакета в пакет
RENDER.RU