8 - 2013

Инструмент Морф — безграничные возможности моделирования

Алексей Белов

* Продолжение. Начало см.: САПР и графика. 2013. № 2.

Как уже говорилось ранее, между гранями и поверхностями морфов существует значительная разница. Попробуем выяснить, в чем она заключается.

Создайте исходный морф размерами 1000x1000x1000 и добавьте в выборку одну из его граней (при нажатой комбинации клавиш Shift+Ctrl). Чтобы создать выступ в центре грани, воспользуемся отрезком направляющей линии. Выберите команду Создать отрезок направляющей линии, расположенную в Табло команд, и постройте диагональ выбранной грани. Теперь мы сможем осуществить точную привязку деформации грани морфа (рис. 1).

Рис. 1

Рис. 1

Щелкните левой клавишей мыши в середине направляющей линии и выберите в появившейся Локальной панели команду создания выпуклости. Для определения радиуса выпуклости можно воспользоваться Панелью слежения, активирующейся при нажатии клавиши TAB, либо графической привязкой. Щелкните левой клавишей мыши на одном из углов грани, чтобы установить диаметр выпуклости, равный диагонали (рис. 2). Затем переместите курсор мыши от морфа и, нажав клавишу TAB, введите в Панель слежения значение 500, чтобы указать величину выпуклости (рис. 3). Функция создания выпуклостей позволяет создавать не только положительные выпуклости, но и отрицательные, вдавливая таким образом грань внутрь морфа.

Рис. 2

Рис. 2

Рис. 3

Рис. 3

Добавьте в выборку получившуюся поверхность и щелкните на ней левой клавишей мыши. Как видите, набор функций, доступных в Локальной панели, существенно сократился. Операции выталкивания/вытягивания, деформации по пути и смещения ребер не могут быть применены к поверхностям. Однако поверхности обладают другими, не менее важными свойствами, и основное из них — уровень сегментации.

При помощи команды Конструирование -> Изменить морф -> Скрытая геометрия морфа можно отобразить скрытые ребра, образующие любую поверхность морфа. Сейчас эта поверхность выглядит несколько угловатой. Давайте слегка сгладим ее.

Воспользуйтесь командой Конструирование -> Изменить морф -> Изменить сегментацию. В открывшемся диалоговом окне отметьте маркер опции Увеличить количество сегментов. Дополнительная опция удвоения количества сегментов, как следует из названия, удвоит количество всех сегментов, в случае же деактивации этой опции будет увеличена сегментация только наиболее крупных участков. Команда изменения сегментации применима как для повышения, так и для уменьшения количества сегментов. При этом процедура изменения сегментации может быть применена многократно, что позволяет добиваться все более и более сглаженных поверхностей. Однако не следует забывать, что увеличение сегментации существенно сказывается на производительности компьютера.

Рис. 4

Рис. 4

Мы уже приводили примеры воссоздания граней с использованием четких ребер. Теперь рассмотрим случай создания сглаженной поверхности для существующих ребер.

Создайте еще один морф кубической формы размерами 1000x1000x1000 и переместите две противоположные вершины его верхней грани выше на 400 (рис. 4). Затем удалите образовавшееся на верхней грани ребро и, добавив в выборку ставший нетвердотельным морф, воспользуйтесь уже знакомой нам командой Конструирование -> Изменить морф -> Покрыть гранями. В открывшемся диалоговом окне выберите вариант создания сглаженной поверхности. Для лучшего отображения формируемой поверхности следует включить показ скрытой геометрии морфа (рис. 5).

Рис. 5

Рис. 5

Рис. 6

Рис. 6

Метод покрытия гранями позволяет создавать 3D­поверхности практически любого вида. Рассмотрим еще один пример использования этой команды, но теперь будем не восстанавливать ранее удаленные грани, а попробуем сформировать абсолютно новую форму.

Создайте морф­параллелепипед размерами 1000x500x1000 и удалите все его грани, оставив только каркас. Выберите многоугольный геометрический вариант построения и укажите первую точку морфа, находящуюся в нижнем углу параллелепипеда. Затем выберите в Локальной панели вариант построения Дуга с заданной касательной и щелкните левой клавишей мыши на оси Х.

Для указания следующей точки щелкните левой клавишей мыши на середине ближнего к вам вертикального ребра каркаса и в качестве касательной снова укажите ось (рис. 6). Завершите построение двойным щелчком левой клавишей мыши на верхней точке наиболее удаленного от вас ребра (рис. 7).

Рис. 7

Рис. 7

Рис. 8

Рис. 8

Переместите копию созданного изогнутого морфа при помощи сочетания клавиш Ctrl+Shift+D. Чтобы очистить рабочее пространство, можно удалить уже не требующийся каркасный морф. Выберите один из созданных морфов и щелкните левой клавишей мыши на одной из его конечных точек. В появившейся Локальной панели выберите команду добавления ребра и соедините морфы прямым отрезком. Повторите данную операцию со второй конечной точкой морфа.

Таким образом, мы получили замкнутый контур, состоящий из двух морфов. Выберите оба морфа и примените команду Конструирование -> Изменить морф -> Объединить. Та же самая команда находится в разделе Логические операции контекстного меню, вызываемого щелчком правой клавишей мыши. Получив единый морф, нам остается только добавить его в выборку и покрыть гранями, воспользовавшись командой Конструирование -> Изменить морф -> Покрыть гранями.

Таким образом, функция создания граней позволяет получать практически любые свободные формы и объемы (рис. 8).

При работе со сглаженными фигурами важно учитывать параметры отображения ребер. Ребра морфов могут иметь три варианта отображения: четкий, невидимый или сглаженный. Отображение ребер влияет на показ морфов не только на экране, но и при печати. Так, четкие ребра показываются на экране и выводятся на печать, невидимые ребра не показываются и не выводятся на печать, но продолжают разделять грани, образуемые ими. Сглаженные ребра не показываются, не печатаются, а кроме того, соединяют смежные грани в единую поверхность. По умолчанию все морфы создаются с четкими гранями.

Рассмотрим все типы отображения ребер на примере. Создайте исходный кубический морф размерами 1000x1000x1000 и тиражируйте два его дубликата. Добавьте в выборку ребра верхней грани левого куба и щелкните левой клавишей мыши на любом ребре. В появившейся Локальной панели выберите команду Скругление/соединение ребер. В открывшемся диалоговом окне установите радиус скругления — 150 и отметьте маркер Применить ко всем ребрам. Повторите эту операцию для среднего и правого морфов (рис. 9).

Рис. 9

Рис. 9

Рис. 10

Рис. 10

Рис. 11

Рис. 11

Увидеть и изменить тип отображения выбранных ребер морфов можно в Информационном табло. Выберите новые верхние ребра, созданные в результате скругления ребер верхних граней морфов, и измените тип их отображения: для среднего куба — на невидимые, а для правого — на сглаженные. Выберите верхние поверхности морфов и посмотрите, чем они отличаются (рис. 10).

При необходимости всегда можно вернуть прежние настройки отображения ребер при помощи команды Конструирование -> Изменить морф -> Скрытая геометрия морфа. Включив режим показа скрытой геометрии морфов, вы получаете доступ к редактированию сегментов сглаженных поверхностей и ребер (рис. 11). Однако не забывайте, что режим показа скрытой геометрии ограничивает некоторые возможности редактирования морфов, с которыми мы познакомимся несколько позже.

Вернемся к созданному нами морфу с выпуклостью и рассмотрим вопрос наложения текстур на грани и поверхности морфов.

Рис. 12

Рис. 12

Выберите упомянутый морф и откройте диалоговое окно его параметров, воспользовавшись сочетанием клавиш Ctrl+T. Разверните вкладку Модель и выберите покрытие Пол -> Линолеум в клеточку. Как видите, на выпуклую поверхность текстура наложена не совсем корректно (рис. 12). Для исправления этой ситуации выберите только выпуклую поверхность и снова откройте диалоговое окно параметров морфа. Во вкладке Модель появилось выпадающее меню, позволяющее изменить тип наложения текстуры. Выберите вариант Плоскостная и посмотрите, как изменилось отображение текстуры на поверхности (рис. 13).

Рис. 13

Рис. 13

Отметим, что морфы позволяют определять для каждой выбранной грани или поверхности собственную текстуру и вариант ее наложения (плоскостной или кубический).

Кроме того, несколько переработана и функция привязки текстуры в 3D­пространстве.

Выберите верхнюю грань морфа и воспользуйтесь командой Конструирование -> Привязка 3D­текстуры -> Установить начало.

Переместите узловую точку рамки, обозначающей габариты образца изображения текстуры, в угол грани, чтобы установить начало привязки текстуры (рис. 14). Щелчок левой клавишей мыши за пределами рамки подтверждает установку привязки текстуры. При помощи ограничительной рамки также производится поворот текстуры в плоскости выбранной грани или поверхности.

Рис. 14

Рис. 14

Вариант плоскостного наложения текстуры позволяет не только корректно отображать текстуры, наложенные на поверхности, но и управлять проецированием ее на плоскость.

Рассмотрим подробнее, как осуществляется проецирование текстур.

Создайте исходный кубический морф размерами 1000x1000x1000.

Теперь создадим элемент, содержащий плоскости, не параллельные плоскостям куба. Самым простым элементом в данном случае будет пирамида. Переместите копию созданного кубического морфа и выберите верхнюю грань скопированного элемента. Щелкните левой клавишей мыши на грани и в появившейся Локальной панели выберите команду Смещения всех ребер. Переместите курсор мыши таким образом, чтобы произошло вырождение грани в точку. Опорная фигура готова.

Выберите исходный кубический морф и в диалоговом окне его параметров укажите покрытие, использовавшееся в предыдущем примере.

Затем выберите верхнюю грань морфа и измените тип наложения текстуры на Плоскостной. Не отменяя выбор грани, воспользуйтесь командой Конструирование -> Привязка 3D­текстуры -> Установить направление. Активируйте команду выбора плоскости редактирования, наведите курсор на любую наклонную грань вспомогательного морфа­пирамиды и щелкните левой клавишей мыши (рис. 15). Щелчок на любой узловой точке ограничительной рамки позволяет выбрать в Локальной панели команды поворота, перемещения или зеркального отображения спроецированной в заданной плоскости текстуры. Щелчок за пределами рамки подтверждает установку направления и проецирования текстуры.

Рис. 15

Рис. 15

Немного разобравшись с наложением и проецированием текстур на грани и поверхности морфов,  вернемся к вопросам моделирования.

Мы уже знаем, как сглаживать грани и превращать их в поверхности. Однако инструменты работы со свободными формами, образуемыми морфами, этим отнюдь не заканчиваются. Операциям сглаживания могут быть подвергнуты и ребра — не менее важные составляющие морфов.

Создадим в окне План этажа при помощи ломаных линейных морфов надпись (рис. 16).

Рис. 16

Рис. 16

Рис. 17

Рис. 17

Рис. 18

Рис. 18

Обратите внимание, что мы можем создать каждую букву сразу замкнутым контуром или же использовать несколько морфов для каждого контура. Чтобы увидеть разницу, создадим первую и последнюю буквы непрерывными морфами, а контуры двух букв, расположенных по центру, составим из нескольких морфов, и после этого перейдем в 3D­окно.

Как видим, две крайние буквы уже содержат грани, что вполне естественно, поскольку ребра, которыми они созданы, образуют замкнутый контур. Буквы же, расположенные в середине слова, представлены только контурами (рис. 17).

Выберем и объединим морфы, образующие по отдельности каждую из букв, не имеющих граней при помощи команды Объединить, находящейся в разделе контекстного меню Логические операции (рис. 18).

Теперь добавим в выборку все имеющиеся морфы и воспользуемся командой Конструирование -> Изменить морф -> Скруглить и объединить ребра.

Как видим, ребра всех морфов скруглены. В чем же тогда смысл создания контуров из нескольких морфов, предотвращающего создание граней?

При помощи команды Конструирование -> Изменить морф -> Покрыть гранями создадим грани с четкими ребрами для двух средних букв. Теперь необходимо удалить лишние грани, присутствующие в последних трех буквах. Для букв, покрытых контурами, это не вызовет никаких проблем — достаточно щелкнуть левой клавишей мыши на нужных гранях при нажатой комбинации клавиш Shift + Ctrl и нажать клавишу Delete. Для добавления в выборку последней буквы, в которой присутствуют три грани и две из них находятся в одной плоскости с гранью, образованной внешним контуром, создать отверстия таким образом не удастся. Самое простое, что мы можем сделать в данном случае — это удалить все грани в последней букве, сохранив при этом ребра (здесь нам снова надо будет воспользоваться курсором выбора подэлементного уровня), а затем повторить произведенные операции, использованные при работе с двумя средними буквами (объединить ребра, покрыть их гранями и удалить грани, ненужные для создания отверстий).

Теперь сделаем нашу надпись объемной. Для этого выберем все грани и щелкнем левой клавишей мыши на любой из них. В открывшейся локальной панели выберем команду Выдавливание/Вытягивание. При желании мы можем скруглить ребра букв при помощи уже известной нам команды локальной панели Скругление ребер (рис. 19).

Рис. 19

Рис. 19

Разобравшись в операциях скругления ребер, рассмотрим действие команды сглаживания и объединения граней морфов.

Создадим квадратный морф размерами 1000x1000, лежащий в горизонтальной плоскости. Затем выберем его грань и щелкнем на нем левой клавишей мыши. В открывшейся Локальной панели выберем команду Выдавливание по пути. Сначала переместим указатель мыши вверх, и, нажав на клавишу TAB, введем в Панель слежения значение 3000, затем переместим курсор в сторону, а потом нажмем клавишу Shift для привязки к горизонтальной оси, снова нажав на клавишу TAB, введем значение 5000. Для окончания редактирования морфа переместим мышь вниз и, нажав клавишу Shift для активации рейсшины, укажем любую начальную точку морфа. Для подтверждения завершения построения, сделаем в конечной точке пути выдавливания двойной щелчок левой клавишей мыши.

Рис. 20

Рис. 20

Теперь, нажав и удерживая клавиши Shift + Ctrl, укажем курсором область выборки, как показано на рис. 20. В данном случае нижние грани морфа оказались невыбранными.

Воспользуемся командой Конструирование -> Изменить морф -> Сгладить и объединить грани. В открывшемся диалоговом окне выберем вариант Сгладить границы и установим ползунок степени сглаживания в среднее положение (рис. 21).

Рис. 21

Рис. 21

Нажмем кнопку ОК для подтверждения выполнения операции и повернем морф таким образом, чтобы видеть нижние его грани. Как видите, их контур оказался закруглен.

Отметим последнюю операцию, нажав клавиши Ctrl + Z, и еще раз вызовем команду Сглаживание и объединение граней, но в этот раз выберем в верхней части диалога вариант Сохранение границ. Как видим, теперь границы подэлементов морфа, не попавших в выборку, сохранились (рис. 22).

Рис. 22

Рис. 22

Рис. 23

Рис. 23

Чтобы лучше понять логику работы функции сглаживания граней, рассмотрим следующую иллюстрацию (рис. 23).

В этом примере использованы несколько экземпляров одного и того же параллелепипеда с разным количеством сегментов, образованных добавлением дополнительных ребер. Обратите внимание: чем ближе к границе расположено ребро, тем степень сглаживания меньше.

Операция сглаживания и объединения граней основана на взаимодействии центральных точек смежных граней. И поэтому степень сглаживания зависит, прежде всего, от числа сегментов, составляющих сглаживаемую поверхность. Вторым важным аспектом является положение ползунка сглаживания диалога команды.

При работе с морфами доступны два типа геометрических операций:

  • логические операции, появившиеся в ArchiCAD 16;
  • операции твердотельного моделирования или операции с объемными элементами.

Рассмотрим поведение морфов в обоих случаях.

Логические операции не являются ассоциативными. Другими словами — их результат является постоянным. Логические операции применимы только к морфам: если в выборку добавлен какой­либо другой элемент, эти операции становятся недоступными. Чтобы изучить возможности, доступные при выполнении логических операций, создадим два морфа.

Первому морфу размерами 1000x1000x1000 присвоим непрозрачное покрытие, например Краска 12. Для второго морфа размерами 2000x1500x2000 в качестве покрытия назначим прозрачное стекло.

Разместим морфы таким образом, чтобы они пересекали друг друга (рис. 24). Нам потребуются три пары таких элементов, поэтому воспользуемся командой многократного перемещения копии, активируемой нажатием клавиш Ctrl + ALT или же командой тиражирования (Ctrl + U).

Рис. 24

Рис. 24

Рис. 25

Рис. 25

Выберем первую пару элементов и воспользуемся командой Конструирование -> Изменить морф -> Объединить. Кроме того,  мы можем воспользоваться контекстным меню, выбрав в нем команду Объединить, находящуюся в разделе Логические операции.

В результате этой операции два морфа были объединены в один, причем ненужные взаимопересекающиеся дубликаты граней были удалены, а на месте пересечения были созданы новые ребра (рис. 25). Обратите внимание — эта операция может быть применена и к нетвердотельным морфам.

Выберем следующую пару элементов и воспользуемся командой Конструирование -> Изменить морф -> Вычесть. Эта же команда находится и в контекстном меню, вызываемом правой клавишей мыши. Внешне эффект этой операции очень похож на одноименную операцию с объемными элементами. При наведении курсора элемент, который должен остаться, выделяется синим цветом (рис. 26). Элемент оператора при выполнении данной операции удаляется, а вновь созданные грани целевого элемента наследуют покрытия оператора (рис. 27).

Рис. 26

Рис. 26

Рис. 27

Рис. 27

Рис. 28

Рис. 28

Обратите внимание — для выполнения этой операции в качестве элемента­оператора обязательно должен выступать твердотельный морф. Чтобы убедиться в правильности данного утверждения, отменим последнюю операцию, нажав сочетание клавиш Ctrl + Z, и удалим верхнюю грань стеклянного морфа. Затем воспользуемся командой логической операции вычитания и попытаемся в качестве целевого элемента выбрать непрозрачный морф. В результате будет выведено предупреждение о том, что эта операция не может быть выполнена.

Перейдем к последней паре элементов и, выбрав их, воспользуемся командой Конструирование -> Изменить морф -> Пересечь. Эту команду можно найти и в разделе Логические операции контекстного меню. Действие данной операции несколько напоминает операцию Объединение с той лишь разницей, что в результате сохраняется общая часть для участвующих в ней морфов (рис. 28). Наследование же покрытия граней происходит так же, как и в предыдущей операции. Участвовать в операциях пересечения могут и нетвердотельные элементы.

Рис. 29

Рис. 29

Рис. 30

Рис. 30

В операциях над объемными элементами морфы могут выступать как в роли целевых элементов, так и в роли операторов. Для рассмотрения этих операций создадим два морфа. Первый морф будет полностью идентичен непрозрачному морфу, использовавшемуся нами при рассмотрении логических операций. Второму морфу размерами 1500x800x200 назначим непрозрачное красное покрытие.

Расположим морфы, как показано на рис. 29, и выберем кубический морф, чтобы при открытии диалога твердотельного моделирования он сразу оказался целевым элементом. Воспользуемся командой Конструирование -> Операции над объемными элементами, или аналогичной командой, находящейся в разделе Соединить контекстное меню. Поскольку ранее выбранный куб уже применяется в качестве целевого элемента, выберем красный морф, нажмем кнопку Получить элементы оператора. Затем выберем Вычитание с выталкиванием вверх и нажмем кнопку Выполнить.

Данная операция является ассоциативной, и значит, она будет выполняться при условии, что у морфа­оператора присутствует хоть одна грань или поверхность, по которой может производиться вычитание.

Попробуем удалить верхнюю грань красного морфа (рис. 30). Как видим, операция по­прежнему выполняется, поскольку у морфа все еще присутствует нижняя грань. Удалим и ее. В результате геометрия кубического морфа полностью восстановилась, но при этом действие операции все еще продолжается. Это означает, что при добавлении новой грани или поверхности к красному морфу, пресекающей как­либо коричневый морф, снова будет происходить вычитание с выталкиванием вверх.

Данная статья — лишь краткий и далеко не полный обзор приемов работы с инструментом Морф. Раскрыть все возможности этого инструмента можно только при непосредственном и постоянном его использовании. Надеемся, что этот краткий обзор поможет вам в вашей интересной и нужной работе.

Статья написана на основе учебных и презентационных материалов, разработанных EnikoPauko, GraphisoftSE.

САПР и графика 8`2013