Paper Model (Бумажная модель)#

Ссылка

Категория:

Импорт-Экспорт

Меню:

Файл ‣ Экспорт ‣ Paper Model (.pdf/.svg)

Панель:

Свойства ‣ Меш ‣ Paper Model Islands (Острова бумажной модели)

Меню:

Меш ‣ Unfold (Развернуть)

Этот аддон генерирует плоскую сеть заданного меша. Он создает файлы PDF или SVG, подходящие для точной печати и моделирования на бумаге. Основная цель – максимально возможная автоматизация всего процесса. Также поддерживаются общие задачи, такие как запекание текстуры модели в выходной документ.

Использование#

Чтобы избежать возможных проблем, переключитесь в Объектный режим. Затем выберите меш, который хотите экспортировать, чтобы он стал активным. Если вы хотите получить быстрый результат, просто запустите этот аддон из меню Файл ‣ Экспорт. Он запросит имя файла и сделает всё остальное автоматически. Все соответствующие настройки находятся в левом нижнем углу. Более подробно они описаны ниже.

Если вас не устраивает сгенерированная сеть (net), вы можете отредактировать её вручную. Для этого вам необходимо сначала запустить инструмент Unfold (Развернуть) (доступна вкладка «Меш» в свойствах). Края, которые будут обрезаны для выравнивания меша, должны быть отмечены как «швы» в режиме Редактирования. Вы можете использовать инструменты Clear Seam (очистить шов) и Mark Seam (пометить шов), чтобы упорядочить их по своему усмотрению, или использовать вспомогательную кнопку Clear All Seams (очистить все швы) в режиме Объекта, чтобы начать с нуля. Когда вы экспортируете модель, она будет использовать все заданные швы и при необходимости добавит еще несколько разрезов (cuts).

Вы также можете вызвать инструмент Unfold (развернуть) только для предварительного просмотра сети (net). На панели будут перечислены все острова созданной сети, и если вы включите это в настройках инструмента, он также создаст UV-макет, показывающий острова. Обратите внимание, что положения островов на этом этапе не рассчитываются, поэтому все они будут просто лежать друг на друге. Вы можете использовать инструмент Blender Pack Islands, чтобы упорядочить их.

Есть несколько видов топологии, которые возможны в Blender, но не возможны на бумажной реальности:

  • N-угольные грани (все, кроме треугольников), которые не являются идеально плоскими.

  • Рёбра нулевой длины (две вершины ровно в одном месте и соединены ребром)

  • Грани нулевой площади (обычно их вершины лежат на одной линии)

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

Экспорт текстурированных мешей#

Чтобы экспортировать модель с нарисованной вручную текстурой, вам необходимо развернуть модель, нарисовать изображение и назначить (assign) его на модель, чтобы оно оказало эффект во время рендера. Для этих задач вы можете использовать любые инструменты, которые вам нравятся. Аддон просто использует запекание (uses baking) в режиме Textures.

Переключитесь в Объектный режим и снимите выделение со всех объектов, кроме того, который нужно экспортировать. Затем выполните Export Paper Model (экспорт бумажной модели) и в браузере файлов переключите селектор Textures (Текстуры) на From Materials (Из материалов).

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

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

How to Read the Net (Как считывать сеть)#

Большую часть внешнего вида документа можно настроить во время экспорта (см. ниже). Однако стиль по умолчанию должен быть знаком разработчикам моделей на бумаге: пунктирные линии обозначают сгиб наружу, штрихпунктирные линии — внутрь (т. е. для образования вогнутых форм). Граница каждой части сети отображается сплошными линиями. Наклейки (Sticking tabs) имеют сероватую заливку, чтобы их можно было отличить от других частей сетки.

Метка пишется на вкладке, когда её целевое ребро (target edge) может быть нечётким. В частности, метка опускается, если ребро будет прикреплено к тому же месту, что и оба соседних, или если одно из них является самой целью. Формат меток: остров_аббревиатура: ребро_номер. Аббревиатура острова записывается в квадратных скобках под соответствующим островом перед его полным названием. Номер ребра записывается в виде треугольной стрелки рядом с целевым ребром, за пределами сетки.

Если параметр Create Tabs (создать вкладки) отключен, используется один и тот же формат для меток вдоль каждого из связанных рёбер внутри сетки (net). Этот метод предназначен для моделирования из твердых и/или толстых материалов, для которых приклеивание ярлычков (sticking tabs) совершенно бессмысленно. Если параметр Create Numbers (создать номера) отключен, метки пр/опускаются (omitted); это может быть необходимо для очень детализированных моделей.

How to Print the Net (Как отпечатать сетку)#

PDF-файл можно распечатать практически где угодно. Однако ситуация усложняется, если вам нужно заменить сетку вручную.

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

Если распечатанный документ обрезается по краям страницы, это означает, что вам следует увеличить настройку Margin (предел/поле) во время экспорта.

Размещение меток на сетке#

Рёбра с отметкой Freestyle (Ребро ‣ Mark Freestyle Edge (отметить ребро как Freestyle)) будут выделены в сети заданным пользователем цветом и стилем рисования. Это особенно полезно при использовании на плоских краях, которые обычно вообще не рисуются (draw). Если вы нарисуете фигуру с помощью инструмента Knife (нож), а затем пометите некоторые края как «Freestyle », вы сможете нарисовать на модели простую линию.

При использовании на рёбрах сгиба блик будет нарисован ниже линии сгиба. Поэтому вам, вероятно, придётся изменить стиль рисования (drawing style) Freestyle Lines, чтобы сделать его шире, а не чёрным, чтобы линии оставались различимыми.

Настройки#

Paper Model Islands (Острова бумажной модели)#

Вкладка Paper Model Islands на вкладке «Меш «содержит две кнопки для удобного вызова инструментов Unfold (развернуть) и Export Paper Model (экспортировать бумажную модель). Она также предлагает кнопки для маркировки и очистки швов в зависимости от контекста и экспериментальную функцию Limit Island Size (ограничить размер острова).

После вызова инструмента Unfold (развернуть) модель разбивается на сплющенные части, которые представлены в списке под названием Islands (острова) ниже. Список позволяет изменить название каждого острова. Если во время экспорта включена опция Create Numbers (создать номера), сокращения этих меток будут использоваться для описания того, какая вкладка к какому острову должна быть прикреплена. После запуска инструмента Unfold (развернуть) эти островные метки пересчитываются (are recalculated) так, чтобы под одной меткой оставалось как можно больше граней.

Если вы выберете остров и включите кнопку Highlight Selected Island (выделить выбранный остров) (и развёрнутый (unfolded) меш является активным), остров будет выделен оранжевым цветом в 3D-вьюпорте. С помощью ползунка ниже вы можете изменить степень прозрачности выделения.

Unfold (Развернуть/разложить)#

Первая опция сверху – Create UV map (Создать UV-карту). Если этот параметр включен, будет создана новая UV-карта, на которой будут показаны все острова. Однако на данном этапе процесса экспорта их позиции ещё не рассчитаны (not calculated), поэтому все они просто помещаются в нижний левый угол. Эта опция полезна при редактировании линий разреза вручную. Вы можете использовать инструмент Unwrap (развернуть) и получить аналогичный результат.

Инструмент имеет три ползунка, которые регулируют приоритет при разрезе кромки (а именно: Face Angle Convex (выпуклый угол грани), Face Angle Concave (вогнутый угол грани), Edge Length (длина края)). Высокое значение даёт кромке (edge) с соответствующим свойством более высокую вероятность обрезания. По этой причине обычно лучше установить для длины края отрицательное значение, чтобы длинные края оставались соединёнными. Случайное изменение этих значений часто может помочь уменьшить количество островов в сетке (net). Для получения информации о значении этих величин прочтите раздел «Unfold (Развертывание)» в Технических деталях.

Свойства#

При запуске экспорта аддон автоматически разворачивает (unfolds) меш (не отмечая (without marking) швов) и делит все грани на острова, что может занять несколько секунд для сложных мешей. Затем отображается Браузер Файловов. В формате SVG выбранное вами имя файла получит суффикс _страница<номер>.svg, даже если нужна была только одна страница.

Настройки этого экспортёра представлены в левом нижнем углу Браузера Файлов.

Preset (Пресет)

Меню Preset позволяет быстро сохранять и вызывать все расположенные ниже настройки, включая масштаб модели и цветовой стиль.

Model Scale (Масштаб модели)

Масштаб модели можно использовать для масштабирования всей сетки (net). Если вы хотите иметь модель в масштабе 1:72, просто установите для этого параметра значение 72. Это важная опция ещё и потому, что аддон часто создаёт острова, превышающие размер страницы.

По умолчанию это значение установлено таким образом, что даже самый большой остров умещается на странице. Если установлено значение «1», реальная модель будет иметь те же размеры, что и виртуальная.

Create UV Map (Создать UV-карту)

Имеет схожий эффект, что и опция с аналогичным названием инструмента Unfold (развернуть), но не такой же. Он создаст новую UV-карту, которая точно отражает расположение всех островов модели. К сожалению, острова со всех страниц расположены друг над другом, и отличить их совершенно невозможно.

Document Settings (Настройки документа)#

Настройки, тесно связанные с форматом выходного документа, находятся на подпанели «Document Settings».

Формат

Первый селектор переключает форматы документов между PDF и SVG.

Page Size (Размер страницы)

Другой селектор ниже позволяет быстро выбрать один из наиболее распространённых размеров бумаги. Если вам нужно что-то ещё, выберите User Defined (заданные пользователем) и установите размеры вручную.

Page Margin (Размер/предел страницы)

Облегчает экспорт моделей в точном масштабе (если ползунок Model Scale (масштаб модели) установлен на 1).

Вы можете установить ширину непечатаемой границы вашего принтера, чтобы полученный документ SVG можно было распечатать без дальнейшего масштабирования. Однако экспорт масштабных моделей по-прежнему затруднен, поскольку аддон не разделяет автоматически острова крупногабаритных размеров (oversize).

DPI (Точек на дюйм)

Следующее значение — DPI, которое определяет общее разрешение сетки (net). То есть не только разрешение запечённых изображений (если они есть), но и толщину линий.

Create Tabs (Создание вкладок)

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

Create Numbers (Создание номеров)

Добавляет номера к некоторым парам краёв, которые должны быть склеены. Эти номера исключаются, если правильный пункт назначения легко угадать по соседним краям. В более сложных моделях они могут сильно перекрываться друг с другом и с самой сетью. Отключение этой опции может помочь решить такие проблемы. Если Create Tabs (создать вкладки) отключено, номера будут отображаться внутри сетки (net).

Tabs and Text Size (Размер вкладок и текста)

Устанавливает максимальную ширину приклеиваемых выступов вокруг островов. Фактический размер каждой вкладки корректируется так, чтобы он составлял не более половины длины соответствующего края. В некоторых особых случаях вкладки делаются так, чтобы они не перекрывались с реальными лицами, но это пока работает ненадежно. Если Create Tabs (создать вкладки) отключено, этот ползунок управляет размером чисел по краям.

Hidden Edge Angle (Угол невидимого края)

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

Текстуры

В меню выбора Текстуры перечислены параметры экспорта текстурированных мешей.

No Texture (Без текстуры)

Просто создаёт сеть на белом фоне (раньше это называлось «Pure Net (чистая сеть)»). Остальные параметры задействуют запекание текстур и поэтому работают заметно медленнее.

From Materials (Из материалов)

Экспортирует изображение, назначенное каждой грани модели в их активном материале.

Full Render, Selected to Active (Полная визуализация, Выбранные на активное)

Соотносится с соответствующими опциями Bake Type (тип запекания). Они оба визуализируют (render) все материалы и освещение: Full Render (полная визуализация) визуализирует только модель, а Selected to Active (выбранные на активное) проецирует на модель другие близлежащие выбранные объекты. Это может быть полезно для процедурного создания узоров, таких как мех или листья.

Изображения

Меню выбора Images (изображения) позволяет вам выбрать способ включения запечённых изображений в файл SVG. Если вы хотите отредактировать макет сетки в редакторе SVG, выберите Linked (связаный) или Embedded (вложенный).

Embedded (Встроенный/вложенный)

Создает автономные файлы SVG, делая их больше, но с возможностью переносить их.

Single Linked

Remains mostly for compatibility reasons.

Цвета и стиль#

Параметры, связанные со стилем рисования, собраны в подпанели Цвета и стиль. Они должны быть вполне понятны.

Технические детали#

Unfold (Развернуть/разложить)#

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

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

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

The actual priority effect of angle versus length may change the resulting net very much. The default values were chosen by trial and error for some basic models, but may be a bad choice for others. If you want to tweak them, the Unfold tool allows you to: they are the tool’s three only settings.

The cutting algorithm begins with all faces separated and tries to connect them to form bigger islands, ordered by the connecting edge’s priority. If some of the faces of the resulting island would overlap, the operation is canceled and the algorithm continues with another edge. If some vertices or edges end up close enough to each other, they are merged. During this process, each edge is visited exactly once.

The overlap check is basically the Bentley-Ottmann algorithm for line segment intersection, applied to the boundary of the resulting island. To handle some special cases, the algorithm automatically switches between a slightly quicker and a more robust version of itself. Another check is applied to detect if the boundary crosses itself in just a vertex of the resulting island – such cases have to be tested explicitly as they need not cause any intersecting line segments.

Positioning the Nets on Pages#

Because the nets are not consisting only of the real faces, but also of the gluing tabs around, they cannot be positioned by the internal Blender tool (Pack Islands). Therefore, a standalone algorithm had to be written.

For a great simplification of the process, all nets are packed into (smallest possible) bounding rectangles. These are then ordered by size (largest first) and in this order the algorithm tries to position them on a page. The positions tested for the lower left corner are given by an n × n grid resulting from all the corners of islands already positioned. A position is accepted or rejected by checking overlaps with each of the islands“ bounding rectangles.

When there are any islands left that could not be placed onto the page, a new free page is created.

This algorithm should work reliably and quite fast. However, it is clearly inefficient if the bounding rectangles contain much free space. Also, the packing depends heavily on the order in which the islands are processed, which is in no way optimal.