纸模型(Paper Model)#
参考
- 类别:
导入 - 导出
- 菜单:
- 面板:
- 菜单:
此加载项生成给定网格的平板网。它创建适合直接打印和纸张建模的PDF或SVG文件。主要目标是对整个流程实现最大限度的自动化。还支持将模型的纹理烘焙到输出文档中等常见任务。
用法#
要避免最终出现问题,请切换到物体模式。然后,选择要导出的网格,使其成为活动的网格。如果您想快速获得结果,只需从
菜单执行此插件。它将要求提供文件名,并自动执行所有其他操作。所有相关设置位于左下角。下文将更详细地叙述这些问题。如果你对生成的网不满意,你可以手动编辑它。为此,你必须先执行 展开 工具(属性中的Mesh标签)。为了压平网格,将被切割的边必须被标记为编辑模式的接缝。你可以使用 清除缝合边 和 标记缝合边 工具来组织它们,或者使用物体模式中的 清除所有缝合边 帮助按钮来从头开始。当你导出模型时,它将使用所有给定的接缝,并在必要时增加一些切割。
你也可以调用 展开 工具来预览网的情况。它将在面板中列出所制作的网的所有孤岛,如果你在工具的设置中启用,它还将创建一个显示孤岛的UV布局。请注意,在这个阶段,孤岛的位置并没有被计算出来,所以它们都只是相互重叠在一起的。你可以使用Blender的 打包孤岛 工具来安排它们。
有几种拓扑结构在Blender中是可以实现的,但在纸上现实中是不可能的:
不是完全平坦的多边面(除三角形外的一切)。
零长度的边(两个顶点正好在同一位置,并由一条边连接)
零面积的面(通常它们的顶点都位于直线上)
如果检测到这些情况中的任何一种,该插件将抛出一个错误信息,并且不会输出。错误信息会指导你如何解决这些问题。
纹理导出纹理风格#
要输出带有手绘纹理的模型,你必须解开模型,绘制图像并将其分配给模型,以便在渲染时产生效果。你可以使用任何你喜欢的工具来完成这些任务。这个插件的作用很简单,它在 纹理 模式下使用烘焙。
切换到物体模式,取消选择除要导出的对象外的任何对象。然后执行 导出纸张模型 ,在文件浏览器中将 材质 选择器切换到 从材质 。
如果你选择导出一个SVG文件,你会得到几个如何附加图片的选项。所有的选项在 属性 中都有详细的解释。
产生的纹理不依赖于任何场景设置,除了给定的材质,另一方面,所有的设置在做完导出后应该是完整的。
怎样读取网络#
文件的大部分外观可以在导出时定制(见下文)。然而,默认的风格应该是纸质模型爱好者所熟悉的:虚线代表向外折叠,虚线代表向内折叠(即形成凹形)。网的每一部分的边界都用实线呈现。粘连的标签有一个灰色的填充颜色,以便与网的其他部分区分开来。
A label is written on a tab when its target edge might not be clear.
Specifically, the label is omitted if the edge will be stuck to the same place as its both neighbors or
if one of these is the target itself.
The format of labels is island_abbreviation: edge_number
.
Island abbreviation is written in square brackets under the corresponding island, before to its full-length name.
Edge number is written as a triangle arrow next to that target edge, outside the net.
如果 创建标签 被禁用,同样的格式将用于网内每个相关边缘的标签。这种方法是为用坚硬和/或厚重的材料建模而设计的,对于这些材料来说,粘贴标签是很没有意义的。如果 创建数字 被禁用,标签将被省略;这对高度详细的模型可能是必要的。
如何打印网络#
PDF文件几乎可以在任何地方直接打印。然而,如果你需要用手来改变网,事情就变得很困难。
如果你选择SVG格式,你可以在Inkscape等矢量图形编辑器中编辑导出的文件。你可能想做的一个原因是手动打包孤岛,节省纸张。另一个原因是,标签和数字常常使模型周围变得很杂乱,用手去掉一些标签会很有帮助。
如果打印的文件在页面边缘被裁剪,这意味着你应该在导出时增加 边距 设置。
边标记和面标记#
带有 Freestyle 标记的边(
)将以用户定义的颜色和绘图风格在网上突出显示。这在用于平坦的边缘时尤其有帮助,因为平坦的边缘通常根本就不会被画出来。如果你用 刀 工具画一个形状,然后把一些边标记为 Freestyle 边,你可以在模型上做一个简单的线图。当使用在折叠边缘时,高光部分将被画在折叠线的下面。所以你可能要改变 Freestyle 线条 的画法,使其更宽,而不是黑色,这样才能保持线条的可辨识度。
设置#
图纸模型的孤岛#
网格标签中的 纸面模型孤岛 标签提供了两个按钮,可以方便地调用 展开 和 导出纸面模型 工具。它还提供了用于标记和清除接缝的按钮,这取决于上下文,以及实验性的功能 限制孤岛大小 。
Once the Unfold tool is called, the model is split into flattened parts and these are presented in a list called Islands below. The list allows you to change the label of each island. If Create Numbers is enabled during export, abbreviations of these labels will be used to describe which tab should be stuck to which island. After running the Unfold tool, these island labels are recalculated so that as many faces as possible remain under the same label.
如果你选择一个孤岛并启用 高亮所选孤岛 按钮(并且你展开的网格是活动的),该孤岛将在三维视口中以橙色高亮显示。使用下面的滑块,你可以改变高亮部分的不透明度。
展开#
从上面开始的第一个选项是 创建UV映射 。如果启用,将生成一个新的UV图来显示所有的孤岛。然而,他们的位置在输出过程的这个时候还没有计算出来,所以他们都只是被放在左下角。这个选项在手工编辑切割线的时候很有用。你可以使用 展开 工具,得到类似的结果。
该工具有三个滑块,它们都可以调整边缘切割的优先级(即: 面角凸、面角凹、边长度 )。一个高的值使具有相应属性的边缘有更大的机会被切割。正因为如此,通常最好将边缘长度设置为一个负值,让长的边缘保持连接。随机修改这些值通常可能有助于减少网格中的孤岛数量。关于这些值的含义,请阅读 技术细节 中的展开部分。
属性#
当开始导出时,插件会默默地展开网格(不标记任何接缝),并将所有面分割成岛,这对于复杂的网格可能需要几秒钟。然后,会显示一个文件浏览器。对于SVG格式,你选择的文件名会有一个 _page<number>.svg
的后缀,即使只需要一个页面。
该导出器的设置显示在文件浏览器的左下角。
- 预设
预设 菜单允许快速保存和调用它下面的所有设置,包括模型比例和颜色风格。
- 模型比例
模型比例可以用来缩放整个网。如果你想拥有一个1:72比例的模型,只需将其设置为72。这也是一个重要的选项,因为附加组件产生的岛往往比页面大。
默认情况下,这个值被设置为即使是最大的岛屿也能容纳在页面上。如果设置为1,真实模型将具有与虚拟模型相同的尺寸。
- 创建 UV 映射
与 展开 工具的类似名称的选项具有类似的效果,但不一样。它将创建一个新的UV图,准确地反映所有模型的岛屿的位置。不幸的是,所有页面的岛屿都被放在彼此的上面,而且很可能无法将它们区分开来。
文档设置#
与输出文件的格式密切相关的设置在文件设置子面板中。
- 格式
第一个选择器在PDF和SVG文件格式之间切换。
- 页面大小
下面的另一个选择器允许你快速选择最常见的纸张尺寸之一。如果你需要其他东西,请选择 用户定义 并手动设置尺寸。
- 页边距
使得以精确比例导出模型更容易(如果你把 模型比例 滑块设置为1)。
你可以把它设置为你的打印机的不可打印边界的宽度,以使生成的SVG文档无需进一步缩放就可以打印。然而,导出按比例的模型仍然是困难的,因为该插件不能自动分割过大的岛。
- DPI
下一个值是 DPI ,它定义了网的整体分辨率。也就是说,不仅是烘焙图像的分辨率(如果有的话),还有线条的粗细。
- 创建标签 Create Tabs
控制是否创建粘性标签。例如,如果你想用胶带粘住模型,就不要选这个。
- 创建一个数字
Adds numbers to some edge pairs that are supposed to be stuck together. These numbers are excluded if the correct destination is easy to guess from the neighboring edges. In more complex models, they may overlap a lot with each other and with the net itself. Disabling this option may help solve such issues. If Create Tabs is disabled, the numbers will be rendered inside of the net.
- 标签和文字大小 Tabs and Text Size
设置岛周围的粘性标签的最大宽度。每个标签的实际尺寸被调整为最多为相应边缘长度的一半。在一些特殊情况下,标签会被做成不与真实面重叠,但它还不能可靠地工作。如果 创建标签 被禁用,这个滑块控制边缘上数字的大小。
- 隐藏边角度
折叠角度低于隐藏边缘角度的边缘将完全不被绘制。在输出光滑表面(如圆柱体)时,增加这个值可能会产生更好的效果:它将省去许多不必要的线条。在某些特殊情况下,降低这个数值可能会有帮助。
- 纹理
纹理 选择菜单列出了用于导出纹理网格的选项。
- 没有纹理
只是在白色背景上创建网(这曾被称为 "纯网" )。其余的选项会调用纹理烘焙,因此会明显地慢一些。
- 从材质 From Materials
导出分配给模型的每个面在其活动材料中的图像。
- 完全渲染,选择为活动
对应于各自的 Bake Type 选项。它们都渲染所有的材料和照明。 完整渲染 只渲染模型,而 选定为活动 则将附近的其他选定对象投射到模型上。它可能有助于程序化地创建毛皮或树叶等图案。
- 图像
在 图像 选择菜单中,你可以选择如何在SVG文件中包含烘焙的图像。如果你想在SVG编辑器中编辑网的布局,选择 链接 或 嵌入 。
- 图像内嵌
创建独立的SVG文件,使其更大但可移植。
- 单一链接(Single Linked)
留下来主要是为了兼容的原因。
颜色和样式#
与绘图风格相关的选项被打包在 颜色和风格 子面板中。它们应该是不言自明的。
技术细节#
展开#
首先,该算法为每条边分配一个 "优先级" ,取决于其角度和长度。优先级较高的边在最终的网中更有可能被切割开来。较短的边有较高的优先级(它们更容易粘在一起),而且角度也更尖锐(这使得网在视觉上更容易理解)。
如果面的法线互相对着,就会形成一个凹陷的角度。这样的角度甚至有更高的优先级,这应该是对典型模型的帮助。如果一些面法线被翻转,算法总是假设它们之间的角度是凸的。
如果有两个以上的面被一条边连接起来,其中两个被指定为主要面,其他的都必须被胶合。主要面的选择要使它们形成尽可能小的角度。
角度与长度的实际优先效果可能会使产生的网发生非常大的变化。对于一些基本模型来说,默认值是通过试验和错误选择的,但对于其他模型来说可能是一个不好的选择。如果你想调整它们, 展开 工具允许你这样做:它们是该工具的三个唯一设置。
切割算法从所有分离的面开始,试图将它们连接起来,形成更大的岛屿,按连接边的优先级排序。如果所形成的岛屿的某些面会重叠,则取消该操作,并继续进行另一条边的运算。如果一些顶点或边最终足够接近对方,它们就会被合并。在这个过程中,每条边正好被访问一次。
重叠检查基本上是线段相交的 Bentley-Ottmann 算法,适用于产生的岛的边界。为了处理一些特殊情况,该算法会自动在一个稍快的版本和一个更强大的版本之间切换。另一个检查是用来检测边界是否与所产生的岛的一个顶点相交 -- 这种情况必须被明确地测试,因为它们不需要引起任何相交的线段。
在页面上定位网状物#
因为网状物不仅仅是由真实的面组成,还包括周围的胶合标签,所以它们不能被Blender内部工具( 打包孤岛 )定位。因此,必须要写一个独立的算法。
为了极大地简化过程,所有的网都被打包成(尽可能小的)边界矩形。然后,这些矩形按大小排序(先是最大的),按照这个顺序,算法试图将它们放在一个页面上。为左下角测试的位置是由一个 n × n 的网格给出的,该网格由已经定位的所有岛屿的角组成。通过检查与每个岛的边界矩形的重叠,一个位置被接受或拒绝。
当有任何剩余的岛屿不能被放置到页面上时,就会创建一个新的自由页面。
这种算法应该能可靠地工作,而且相当快。然而,如果边界矩形包含很多自由空间,它显然是低效的。此外,包装在很大程度上取决于处理岛屿的顺序,这绝不是最佳的。