Привет всем!
Сегодня хочу поделиться своим опытом по довольно простому созданию криволинейных полов. Очень наглядно этот способ демонстрирует напольное покрытие Bolefloor, но он применим и к другим криволинейным покрытиям типа скандинавских дощатых полов.
Приступим!
Любые полы начинаются с контура помещения. Получим его при помощи сплайна:
Первым, кто придет на помощь будет FloorGenerator. Но сперва обратимся к производителю полов за справкой. Нас интересуют параметры полов Bolefloor.
Теперь допустимые значения нам известны: длина не более 2950 мм и ширина от 100 до 350 мм. Производитель подсказывает нам, что ширина досок покрытия естественно колеблется. Отлично, запомним это.
И так, FloorGenerator. Он будет первым в нашем стеке модификаторов. В параметрах модификатора я установил разброс по длине доски: Max Length – 2500, Min Length – 1500; разброс по ширине доски: Max Width – 260, Min Width – 180 (эти числа могут быть любыми в пределах значений приведенных производителем). Далее при помощи параметра Min Offset % я выбрал такое положение досок относительно друг друга, при котором их торцы максимально не совпадают с соседними досками. Так полы будут смотреться наиболее выигрышно. Зазор между досками Grout Len – 0,5. Флажок с параметра Bevel я снял, эта функция сейчас нам не важна, к этой настройке мы вернемся ближе к финалу. С помощью параметра Directionразвернул полы на 90 градусов, а параметром Offset Y сдвинул полы так, чтоб крайние доски были приблизительно одной ширины слева и справа. Отлично, на этом прощаемся с FloorGenerator, он нам больше не поможет.
Добавим Edit Poly, перейдем в режим редактирования полигонов. Автоматически подсветятся верхние полигоны. Сочетанием клавиш CTRL-I инвертируем выделение и удалим боковые полигоны.
Для дальнейших манипуляций с продольными швами нам нужно увеличить плотность сетки. Тут поможет модификатор Quadyfy Mesh. Значение параметра Quad Size рекомендую 0,45 - 0,5. Меньше не нужно.
Затем, нам нужен Edit Poly, чтоб выделить полигоны, которые будут подвергаться трансформации. Выделить нужно все кроме двух-трех полигонов по периметру пола. Эти полигоны должны сохранить свою форму дабы не было щелей около стен.
Пришло время для модификатора Noise. Его параметры на вкус и цвет, но мне подошли те, что на скриншоте ниже.
Уже хорошо заметны плавные изгибы продольных швов. Но этого мало для нас)) Их можно доработать при помощи модификатора FFD (box).
Добавим его в стек модификаторов. Изменим количество контрольных точек до 15(можно и больше/меньше) по ширине и длине. Теперь мы более точно контролируем нашу геометрию. Просто двигая эти точки поправим геометрию на свой вкус и там, где это необходимо.
Таким образом мы получили очень достойную геометрию для наших полов. Теперь ей нужен объем.
Но прежде нужно наложить текстуру. Сделать это нужно именно на данном этапе моделирования. Потом сделать это будет сложнее. Подбираем нужную текстуру. Создаем материал. И применяем к поверхности.
Простой материал дерева:
Присваиваем его нашему полу.
Далее сам пол можно уже конвертировать в Editable Poly, и применить модификатор Unwrap UVW. В модификаторе перейти на подуровень полигонов и выделить все полигоны наших полов. Во вкладке Peel нажать Quick Peel. Появится окно UV Editor. По порядку нажимаем Flatten by Polygon Angle (это автоматически выровняет наши плашки относительно горизонтали) и Pack: Custom (это впишет все плашки в площадь текстуры с минимальными промежутками). В итоге должно получится что-то типа этого.
Иногда некоторые плашки переворачиваются поперек текстуры. Их нужно выследить и ручками перевернуть.
Почти готово, осталось придать полам объем.
Последний модификатор. Edit Poly. Кидаем прям сверху на Unwrap UVW, чтоб при необходимости можно было вернуться и под настроить положение нашей текстуры перед финальным рендером. Идем на подуровень полигонов, выделяем все и жмакаем Extrude, задаем толщину доскам, например, 10 мм. Осталось сделать фаску.
По изображению видно, что фаска не более чем 2х2 мм.
Я сделаю 1.5х2 мм. Но это дело вкуса. Нам никто не мешает сделать ее меньше или больше. Фаску делаем при помощи Bevel.
Готово!
Можно смело рендерить.
Всем спасибо за внимание. Надеюсь, что этот алгоритм пригодится кому-то еще