Моделирование зданий в Blender
Моделирование зданий в Blender
Blender — свободный пакет для создания трёхмерной компьютерной графики, включающий в себя средства моделирования, анимации, рендеринга, пост-обработки видео, а также создания интерактивных игр. Он также отлично подходит для задачи моделирования архитектурных сооружений.
Оглавление
Импорт геометрии из CAD-систем
Способ моделированиия, описанный в книге Allan Brito "Blender 3D 2.49 Architecture, Buildings, and Scenery"
"Точное архитектурное моделирование в Blender" by Yorik van Havre, april 2008, Blender 2.45
Личный опыт по вводу геометрии зданий
Несплошные (Non-manifold) объекты
Документация на русском языке по Blender - http://b3d.mezon.ru/index.php/Blender_Basics_4-rd_edition
Две группы задач, связанных с вводом геометрии зданий в Blender.
Первая – инструмент чистой визуализации. Обеспечение наибольшей реалистичности объектов, подбор и текстурирование материалов, создание интерактивных презентаций.
Другая группа задач – точное воспроизведение проекта в модели, перенос файлов CAD-чертежей в Blender.
Нас интересует вторая группа.
Особенность ввода геометрии зданий в том, что размеры объектов должны быть точно заданы и, как правило, иметь прямоугольную форму.
У Blender-а есть некоторые особенности:
- не поддерживает N-полигоны (или N-гоны - полигон с более чем 4-мя ребрами)
- ограничены размеры рабочей области. Еденицы измерения - Unit, точность - тысячные доли Unit-а. Поэтому лучше сразу установить размерность 1Unit = 1метр.
В статье «Обзор ПО и технологий ввода геометрии зданий» обсуждались общие принципы и подходы в построении компьютерных моделей архитектурных сооружений. Здесь же будут описаны некоторые приемы выполнения этой задачи в ПО Blender.
Импорт геометрии из CAD-систем
Прямой импорт CAD-чертежей и трехмерных объектов в Blender — плохая идея. Это связано с большими отличиями в представлении информации и в задачах, решаемых CAD-системами. Например, при импорте объектов из DXF-формата мы получим набор плохо связанных между собой отрезков, и нам придется выполнить значительный объем работ по приведению этой информации к необходимому нам виду.
Намного удобнее использовать импортированные объекты в качестве ориентиров. Мы можем включить функцию прилипания к имеющимся объектам, и таким образом ввести новые элементы с нуля быстро и с большой точностью.
Add-on для Blender версии 2.6х для импорта DXF-чертежей недоделан из-за серьезной смены Blender-API между версиями 2.4 и 2.6. Поэтому для импорта DXF можно поступать так: импортируем в Blender версии 2.49b, используя аддон dwg/dxf v.1.2, и, оптимизируя (кнопка CONFIG при импорте), сохраняем, а затем уже в версии 2.61 делаем Append объектов из сохраненного blend-файла.
В Linux есть пакет QCAD для работы с 2D-чержами формата DXF. В нем можно убрать все лишние объекты перед импортом в Blender.
Способ моделированиия, описанный в книге Allan Brito "Blender 3D 2.49 Architecture, Buildings, and Scenery"
Особенности архитектурного моделирования в Blender:
- масштабы модели обычно довольно большие
- все модели основаны на геометрических формах; лишь некоторые имеют нестандартную форму
- модели обычно модульные, состоящие из повторяющихся частей
- модели должны быть созданы в правильных пропорциях
Модульная структура - характерная черта для архитектурных сооружений, поэтому и в моделировании можно ее используя, просто копируя повторяющиеся элементы, ускоряя процесс создания.
Точность моделирования очень важна, то есть важны пропорции, а не реальные размеры, поскольку мы всегда можем масштабировать.
Планирование - ключ к успеху.
Вот некоторые правила, которые облегчат нам работу:
- работайте с многократно используемыми объектами, создавайте библиотеки объектов, обменивайтесь ими с другими
- копируйте везде, где только можно скопировать
- делайте резервные копии всех моделей
- используйте версионные файлы с указанием даты
Точное моделирование
Простейший способ выдерживать точность и пропорции — пользоваться фоновой решеткой (grid). Чтобы держаться решетки, надо каждый раз удерживать Ctrl при трансформации или установке 3D-курсора. При трансформации можно посматривать в строку статуса, где отображается величина трансформации. Мы можем использовать решетку для сдвига, поворота и масштабирования. Поворот происходит по 5 градусов. Удерживая Shift, мы будем двигаться с шагом в одну тысячную. Если приблизить объект (колесиком), то в какой-то момент станут видны промежуточные линии, и тогда движение с Ctrl будет скакать уже по промежуточным линиям решетки.
Установки решетки по-умолчанию хороши, но мы можем их изменить по своему усмотрению. По-умолчанию шаг в решетке - 1 Unit. Можно сделать больше или меньше. View -> View Properties. Меняется шаг решетки, макс. число линий, число маленьких линий между основными линиями, включение/выключение видимости решетки.
Длина ребер
Хороший способ контролировать размеры - визуализация их во время создания и трансформации моделей. Чтобы сделать это мы должны выделить объект и войти в режим редактирования. Найти меню Mesh Tool More и в нем опцию Edge Length. Если мы включим эту опцию, то длина будет высвечиваться вдоль ребер всякий раз когда мы их выделим.
Трансформация с точностью
Можно указывать численно величину трансформации. Transform Properties меню (клавиша N для появления) или внизу полки инструментов или в Object меню окна 3D-view.
Слои
Можно использовать слои еще и как средство backup.
Моделирование на практике
Стены
Есть разные способы строить модель. Но в большинстве случаев моделирование на основе плана дает хороший результат. Нарисуем основу для стен, а потом экструдируем ее в стены. Это очень просто. Надо помнить что это мы делаем в виде сверху в ортогональной проекции (Клавиши 7,5).
Начнем с простой плоскости в ширину стены. Перейдем в режим редактирования, выделим и экструдируем, удерживая Ctrl, одно из ребер. На угол (оставаясь в Edit mode) поставим снова квадратную плоскость, и снова экструдируем ребро. И так, пока не замкнем. Потом надо не забыть удалить двойные вершины. Режим выделения вершина/ребро/плоскость меняется Ctrl-Tab. После этого можно выделить все грани и экструдировать по оси Z на нужную величину.
Если экструдируем не все грани на плане, то blender при экстудиции оставляет полученную стену без нижних граней. Поэтому надо не забыть добавить их, чтобы сделать стену объемно-замкнутой (manifold) - это необходимое условие для модуля BlenderFDS. Лучший способ оставить нижние грани замкнутыми следующий: выделяем все грани плана, экструдируем E, Esc — получилась копия граней; в этот момент выделены верхние экземпляры граней; снимаем выделения с граней, которые будут дверьми, экструдируем на нужную высоту. Осталось убрать двойные вершины. Другой вариант — сразу удалить на плане те грани, над которыми будут двери.
Закругленные углы
Закругленный план будущей стены делается с помощью инструмента Spin, который экструдирует выделенное ребро по указанному радиусу с нужным числом звеньев. Чтобы правильно завернуть, мы должны знать радиус или центр дуги. Можно использовать такой прием - временно экструдируем одну вершину в будущий центр, затем ставим в этот центр курсор (Snap Cursor-to-Selected), после этого вершину с ребром можно удалить. Теперь выделяем торцевое ребро у стенки и используем инструмент Spin, а параметры можем отрегулировать в появившейся секции Spin внизу на полке инструментов.
Симметричные здания
Идея в том чтобы не вводить полностью симметричные здания (хотя бы на этапе плана стен), ввести половину и использовать инструмент Mirror.
Для правильной работы этого инструмента мы должны поставить геометрический центр половинки на линию зеркалирования.
Отверстия (двери, окна)
Разбивку стены под отверстия делаем еще на плане (можно Cut&Slide Loop использовать для разрезки уже готовой стены). Потом экструдируем стены, но без выделенных граней под дверями до уровня окон, потом еще экструдируем, но уже без выделенных граней под окнами до уровня верха окон и дверей. Потом еще раз также экструдируем до крыши. Перекрытия над окнами и дверями получаем, выделяя смотрящие друг на друга грани (заливаем или E, Esc, S, XYZ, 0, Remove Doubles).
Пол и подложка и потолки
Можно экструдировать ребра основания и натянуть таким образом плоскости.
А можно сделать отдельную плоскость, привязать ее к углу стен.
Импорт из DXF-файлов
Перед импортом надо проделать огромную работу по очистке лишней информации в DXF-файле. А после импорта уже в Blender-е еще проделать работу по стыковке ребер.
Похоже единственное преимущество с импортом - это то, что мы не заботимся о пропорциях и размерах.
"Точное архитектурное моделирование в Blender" by Yorik van Havre, april 2008, Blender 2.45
В статье (оригинал http://yorik.uncreated.net/tutorials/precisionmodelling-blender.html) описывается способ точного моделирования зданий на основе 2D-чертежей, взятых из DXF-формата.
Переведенная статья на русский из журнала blender-empire - /sites/default/files/Blender-Empire_6.pdf
Подготовка 2D-чертежей
Есть сайт по обмену чертежами - http://www.cben.net/
В статье за основу берется чертеж в 5 видах. Желательно предварительно очистить его от всякой лишней информации - надписи, пометки, и т.п. Проекты доступные из интернета обычно в DWG-формате. Надо их сконвертить в DXF-формат (тоже AutoCAD, но в отличие от первого - открытый). Есть пара Windows-утилит по конвертации DWG -> DXF.
При импорте DXF-формата в Blender есть несколько опций. Некоторые вещи могут не импортироваться, например, закругленные детали.
Теперь нам нужно разделить отдельно все 5 чертежей на 5 отдельных объектов. Затем боковые чертежи повернуть вертикально. И еще желательно все чертежи покрасить каким-нибудь цветом, чтобы мы их потом не путали с 3D-моделью.
"Используем привязку вершин(инструмент Vertex Snap)" для построение стен
Переходим в ортогональный вид сверху, установим курсор на origin (shift+C), чтобы убедиться что мы на высоте Z=0.
Теперь используем вещь, которая изменить всё. Включим привязку вершин (shift+TAB) или изображение магнита в окне заголовка. А также среди способов привязки выберем "Ближайший" (Closest, а варианты здесь Closest, Center and Median) - что означает "привязка к ближайшей вершине от мышки".
Выберите вершины, которые вы хотите переместить. Находясь все еще в Edit Mode, удерживая Ctrl, выберите другой объект, к которому вы хотите привязаться, то есть рисунок плана (можно выбрать только один другой объект). Расположите указатель мыши к вершинам, которые хотите привязать и нажмите G для перемещения. Удерживая Ctrl, перемещайте ваши вершины к любым другим на рисунке.
Функция привязки может быть ограничена по осям нажатием X/Y/Z или даже Shift-X/Y/Z.
Итак, начиная с плоскости, привяжем ее к внешнему углу. Затем выделим две вершины и передвинем их привязкой на внутренний угол. Затем разрежем плоскость Ctrl-R и передвинем две вновь образовавшиеся вершины привязкой к внутреннему углу. Затем выделим другие две вершины, смотрящие на другую стену, экструдируем их передвинем привязкой до следующего угла. И так далее.
Это работает намного быстрее чем редактирование 2D-чертежа, его исправление, заливка прямоугольников и т.п.
Итак, сначала нарисуем все стены, не заботясь об окнах и дверях. Потом их будет очень легко прорезать.
Можно заметить что функция привязки поступает умно, не требуя ограничивать перемещение по осям, если мы подводим близко к нужным вершинам привязки.
Теперь можно нарезать отверстия просто нарезая (Ctrl-R) и убирая грани под ними. Пока нарезка Ctrl-R не работает с привязкой, но можно нарезать и перемещать.
Для более сложных окон может потребоваться передвигать вершины по одной, так как они находятся ортогонально не друг против друга.
Теперь экструдируем стены вертикально. На какую высоту? Это пока не важно, потому что крыша, которую мы еще сделаем, будет касаться стен на разных высотах. Главное сейчас чтобы высота была выше окон и дверей, но ниже крыши.
Теперь закроем лишние проемы в оставленных проходах для окон и дверей. Разрешем стену от проема до проема вдоль горизонтальной линии (Ctrl-R) и привяжем к нижнему уровню окон по боковому чертежу, ограничивая перемещение по оси Z. Теперь сделаем тоже самое для верхнего уровня окон.
Теперь сделаем это для остальных частей стен - там где это надо. После первого разреза, остальные привязки разрезов можно делать к нему вместо того, чтобы привязываться к чертежу.
Теперь закроем стену над отверстиями. Выделим все вершины обоих сторон, которые мы хотим связать мостом, удалим только грани из выделенного, и зальем мост, нажимая F, Skin Edge Loops. Это создаст необходимые нам грани. Это все!
Мы бы могли, конечно, пойти другим способом - экструдировать стены целиком, потом нарезать нужные нам окна. Но я нашел описанный мной способ более быстрым, потому что есть функция Skin Edge Loops. Если залитые над окнами грани выглядят по-другому, это потому что функция заливки делает их Smooth. Надо в Object Mode нажать кнопку SetSolid на панели F9.
В дальнейшем можно из стен сделать F-gon-ы для лучшего вида.
Нужно всегда нарезать указанным способом, чтобы избежать появления треугольников, которые доставляют много неудобств.
Если двери и окна заканчиваются на одной высоте - это делает нашу работу намного быстрее.
Надо помнить, что мы всегда может передвинуть на точное значение в относительных или абсолютных координатах. В относительных: G -> X -> -0.10 — Это передвинет на 10 см. В абсолютных: на полке трансформаций N указанием MedianXYZ.
Теперь надо построить крышу.
Заключение
Две важные вещи:
- не важно какой вы инструмент используете. Гораздо важнее КАК вы МОДЕЛИРУЕТЕ.
- точность при моделировании съедает много времени.
Личный опыт по вводу геометрии зданий
Ввод геометрии на основе детальной проработки граней плана - с будущими проемами, дверьми и окнами — довольно-таки трудоёмкая задача. Плюсом будет правильная прямоугольная геометрия, которую легче исправлять.
Если не предполагается последующая правка сетки, более быстрым решением будет экструдиция стен целиком и последующее прорезание окон и дверей булевыми операциями вычитания. Недостатком этого метода может быть порой некорректная работа булевских модификаторов в Blender, связанная с неправильным заданием геометрического центра объекта.
Несплошные (Non-manifold) объекты
Для многих практических задач, связанных с архитектурной геометрией, необходимо, чтобы сплошные объекты были таковыми и в компьютерной модели. Надо за этим следить при моделировании, чтобы не оставалось, например, незакрытых граней, висящих/дублированных ребер, и т. п. В Blender есть инструмент, выполняющий такую проверку.