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

Комментарии (27)

+7
vas9
ВЕЕЕЩЬ!!!! Спасибо большое! Очень крутая информация и урок!
+2
SNikon
Вот он тот единственный -- мой спаситель -- а то заколебался целые здания пихать :) !!!
0
Skap
Хорошо, тоже уже давно над этим думаю и в данном случае присутствует модульность - это хорошо, но всё равно ручками сплайн по этажам дублировать.
Если модульность не важна, я бы делал через вложенный array (Благо 4 теперь это позволяет) и сплайн который задаёт высоту здания, и через него уже можно делать, что бы он сам понимал, где первый этаж, а где последний.
0
Vladimir.kobranov
Для целого района пока других вариантов не нашел,плюс кровли разные в домах. А ручками ничего не надо двигать. Сплайн через array по Z,merge multply.
0
Skap
Так, да, я не говорю что метод нерабочий, рабочий более чем, но можно еще прокачивать
0
sten
вау!
0
illness88
Классно!
+1
Sergi0_80
победитель! =) на ряду с "Автокампом"
+1
V.Dolgalev
Ухххх, матерь! Божья. Засяду за Ваш урок обязательно!
+4
RednasKella
Спасибо за гигантский труд, многие бы не стали выкладывать и чахли как кощеи))) а вы безкорыстный человек. Врядли мне пригодится но я оценил по достоинству))))
0
Udav31
Человечище!!!
0
Alek-1985
Отличный вариант! Спасибо!
0
c3dm
https://www.youtube.com/watch?v=dN5NXLDjH1s
+1
Skap
Сыроват и ещё более дремуч и загонен
0
agnum
Офигеть. А я думал на рендерах с морем зданий, уходящих "в горизонт", это всё геометрия (расставленные модели). Пока мне это в проектах не пригодится, но взял на заметку. Спасибо!
0
rareman
Круто! А можно таким образом фахверк еще сделать?
+1
BY-studio
Спасибо!

Давайте еще. Годный контент !
+2
Zetus
Круто! Сам люблю делать подобные вещи. Вот последняя попытка из этой оперы -https://www.artstation.com/artwork/w8GJrL 
+2
DaNPride
в закладки кладу, за урок спасибо! Бегло прочитал ничего не понял, но думаю надо сначала изучить основы railclonа, а я про него только слышал, но не работал.
+1
Nuke111
а ссылка есть на народную версию этого чуда? в личку плз
0
KSABA
Шикарнейший урок ! Просто обязан быть первым !
0
nikdruid
Отлично!
+1
V.Dolgalev
Наконец нашел время изучить урок! Спасибо, это круто подзарядило мозг по знаниям рэйла... Особенное касается использования ID сплайнов во благо(как то был урок у разрабов, там деревянный дом какой то, так вот там был пример использования ID сплайнов, но че то забылось....)
0
V.S.O.P.
Отключен Instancing engine, В рендер движке всё стало мешью? И качественно закакать горизонт зданиями, как в их демо роликах не получится? Не издеваюсь. Реально подтвердить подозрения хотел
+1
Vladimir.kobranov
Увы, но это необходимо для рандомизации маппинга. Реил с короной иначе не дружит.

До горизонта скорее всего нет, ибо цели иные преследовал.
Хотя ради интереса можно попробовать натыкать зданий .
0
pet046
Честно, я завис на фразе "Для этого внутри самого сплайна скопируем целиковый замкнутый элемент по оси Z", необходимо скопировать сам сплайн по которому делали или скопировать рейлклон объект?
0
Vladimir.kobranov
Элемент сплайна. Притом обязательно замкнутый.
Но сейчас есть вторая версия алгоритма, так что этот пост несет в себе чисто обучающий пример.