本教程适用于已经对 Matlab 和 J750 操作有所了解的用户。
它不是有关如何使用 Matlab 软件或 PolyJet 打印机的全面课程。
Stratasys 为您提供以下内容:
第 1 步:什么是体素?
就像 2D 数字图像由像素组成一样,您可以将 3D 数字形状视为由"体素"组成。
它们是规则的矩形结构,包含 3D 打印中该点的颜色或材料数据。


在 3D 中:体素在 2D 栅格化中
但是,与其在 3D 中描绘体素,不如在脑海中思考 2D 中发生的事情,以及 3D 打印的每一个切片。切片不是"体素化",而是"栅格化"。你可以看到,要在 2D 中表示一个字母,我们必须做出许多决定,关于网格中的哪个方格是深色填充、轻度填充或根本不填充。
因为为每个切片做出数千个这样的决策会产生一个巨大的值矩阵,这就是使用 Matlab 的一个原因,它有许多工具来处理大型矩阵。

第 2 步:一般切片准则
很容易想象,如果体素打印的每一层都有 1,000+ 渐进式切片,如下所示:

您可以在 J750 中将它们一个接一个地堆叠起来,并获得如下打印效果:

但是有一些规则需要遵循。
第 3 步:规则 1:所有切片必须具有相同的维度
体素打印中的每个切片都必须具有相同的像素尺寸(宽度和高度)。例如,在下面的球体中,每个 PNG 切片都是一个 709 像素高 x 1424 像素宽的矩形(即使在球体顶部和底部附近的切片处,那里没有发生太多事情)。
这些只是创建切片的工程师选择的维度。他可以选择任何尺寸,只要照片中的每一片都是相同的。
我们将使用 Matlab 循环命令来确保每个切片的大小相同。

步骤 4:规则 2:切片之间的 Z 间隙应与打印机层设置匹配
您应该计划在与 J750 所能做的层高相匹配的层高处切割所需的最终形状。
例如,在下面的球体中,假设每个 PNG 切片与下一个切片相距 0.027 毫米,以形成最终形状。

作为参考,J750 层高为:

(注意:如果您的切片厚度与打印机层厚度不匹配,打印机将尝试补偿差异。例如,如果您生成的切片厚度为 0.0135 毫米,并且您的打印模式为"混合",则打印机将打印每个图像两次,以达到所需的 0.027 毫米厚度。最佳做法是创建切片以匹配您将要打印的模式。
第 5 步:规则 3:所有切片都应使用相同的前缀按顺序命名
Voxel Print 实用程序不知道切片的"正确"顺序。它只是按文件名。
它将在单个文件夹中查找,并对所有标有已定义前缀的 PNG 文件进行排序。
在此示例中,前缀为 "slice_"。
序列将按递增数字。
我们将使用 Matlab 循环在切片生成时按顺序编号。

步骤 6:规则 4:在所有切片中仅使用 6 种 RGB 颜色
J750 只能容纳 6 种材料 + 支撑。
Voxel Print Utility 将按 RGB 值分隔每个切片中的材质使用。
因此,在给定的打印中,在所有切片的组合中,您只能使用 6 个 RGB 值。
以下是一些常见 J750 材质的 RGB 值,以供参考:


从这里开始,我们将进入 Matlab 命令。
第 7 步: 现在,RGB 图像如何存储在 Matlab 中?
Matlab 附带的示例图像之一是 'peppers.png' (如下)。

要将该图像加载到 Matlab 变量中,请使用以下命令:

运行该命令后,Matlab 向您展示 RGBsample 现在被定义为 384 x 512 x 3 矩阵:

要查看 peppers.png 中的任何给定像素,请使用以下命令:

结果:

这意味着,从辣椒图片的顶角往下 50 行,往上 100 列,有一个 RGB 值为 (66,38,68) 的像素,或者像这样:

第 8 步:最简单的体素打印(红砖)
现在,我们将尝试制作最简单的体素打印之一,即均匀的红砖:

为此,我们将使用 Matlab 来定义和编号所需的切片(并非显示所有切片)。
从命令开始:

应生成一个 300 x 600 x 3 的整数矩阵:

用零填充:

现在让我们制作矩阵的第一层 = 161,第二层 = 35,第三层 = 99。这对应于 (161,35,99) 的 RGB,应该是 VeroMagenta。
>>brickslice(:,:,1) =161;
>>brickslice(:,:,2) =35;
>>brickslice(:,:,3) =99;
然后我们用 Image Show ('imshow') 命令进行测试:
>>imshow(brickslice)
这应该会导致:

第 9 步:一个 'for' 循环,按顺序对我们的 941 个切片进行编号和命名
Matlab 循环的一般结构:

我们的循环:

#### **第 10 步:对第一个 'for' 循环结果的想法**
如果您将该 for 循环保存在 Matlab '.m' 文件中并运行它,您可能会注意到一些事情:
**为什么我们指定 941 个切片?**
如果您还记得,我们想要一块 1 英寸高的积木:

如果我们的 J750 设置为高混合模式,切片相距 0.027 毫米,因此 25.4 / 0.027 = 940.7,我将其四舍五入为 941。
2.**为什么所有生成的 PNG 都有错误的尺寸?**
如果您右键单击我们刚刚创建的任何 PNG 并查看"属性",您会发现它们不是我们想要的 300x600 像素:

这是因为 Matlab 的 'imshow' 命令以默认解显示图像,我们现在必须更改该解。我们将在下一步中展示如何执行此操作。
#### **第 11 步:在我们的 'for' 循环中控制输出像素尺寸**
我们的 **REVISED** 循环:

#### **第 12 步:Matlab 切片的结果**
在与 Matlab '.m' 文件相同的文件夹中,您现在应该有 941 个单独的 PNG 切片文件,所有文件都按顺序编号并具有相同的前缀:

*(我将我的更改为 'brick_slice' 以匹配 .m 文件的名称,你可以在循环中设置任何你想要的前缀。*

它们都应该具有正确的像素尺寸。
现在,我们已准备好进入 GrabCAD Print
**从这里开始,我们将使用 GrabCAD Print 和 Voxel 实用程序**
#### **第 13 步:Voxel Print Utility 将位于"应用程序"下,类似于 Insight**

#### **第 14 步:Voxel Print Utility 将在此窗口中打开**


#### **第 15 步:使用 Voxel Print 实用程序**


#### **第 16 步:点击"下一步"后,实用程序运行**

这也是将显示错误的屏幕。如果您收到**"Too Many Colors"**错误,请参阅本演示文稿后面的疑难解答指南。
#### **第 17 步:接下来,我们必须将 RGB 值映射到 J750 材质**
这是 Utility 告诉我们它在切片中找到了哪些 RGB 值(记住最多 6 个)的地方。
我们必须为每个值指定一些 J750 材料。

但是看到不对劲了吗?
#### **第 18 步:疑难解答:"Too many colors"错误**
请记住,我们的切片中只能有 6 个 RGB 值。但是我们在 Matlab 中只指定了 1,那么是什么呢?答案来自放大 Matlab 的任何 PNG 输出:
虽然切片在预览中可能看起来不错:

甚至当你打开一个时看起来也不错:

如果放大某个角落,则会看到问题:抖动

这似乎是 Matlab 输出图像方式的默认设置,它尝试对纯色的边缘进行"抗锯齿"。
比我更好的 Matlab 用户可能知道关闭此功能的命令,但现在请注意,如果您在切片矩阵中指定了 6 种颜色,体素打印实用程序会将这些边缘视为 EXTRA 颜色并给您一个错误,因为它们是新的 RGB 值。
照片编辑软件是检查这一点的好方法。
1. 打开颜色选择器。
2. 单击切片中的抖动区域。
3. 查看 RGB 值是否发生变化或与您的预期不同。

如果是这样,这些额外的 RGB 值可能是导致"颜色过多"错误的原因!
其他选项:
一个。您没有将正确的颜色指定为 "background"。
B. 颜色下的不同 Alpha 通道被视为不同的 RGB 值,因此我们实际上只能有 6 个 RGBA。
#### **第 19 步:接下来,我们必须将 RGB 值映射到 J750 材质**
由于我们现在无法修复 Matlab 抖动问题,因此我们将为每个找到的 RGB 值指定一个材质(我选择黄色作为抖动,希望这不会产生太大影响):

#### **第 20 步:点击"完成",即可创建 GCVF 文件**

#### **第 21 步:将 GCVF 文件添加到托盘之前**
您必须打开这两个"首选项"才能将 GCVF 导入 GrabCAD Print:

然后您可以将 GCVF 文件导入到托盘上。
#### **第 22 步:我们终于有了洋红色立方体**
等?一个立方体?

我以为我们正在制作一个 RECTANGLE,高 300 像素,宽 600 像素?
发生这种情况是因为......(请参阅下一步)
#### **第 23 步:X 和 Y 方向在 J750 上具有不同的 DPI**
回到 Voxel Utility,您可能已经注意到窗口中的这两个不可编辑的字段。

由于 PolyJet 技术的性质,像素在 X 方向上的堆叠紧密程度是 Y 方向的两倍:

#### **第 24 步:这就是为什么我们得到一个 1 英寸 x 1 英寸的立方体作为我们的结果**
我们怎么知道它是一个 1 英寸 x 1 英寸的立方体?
因为,如果你添加一个 CAD 零件,它每英寸和每一厘米都有切口*(你们都应该有),*你可以看到立方体很好地适合两个"英寸"切口之间。

*(这就是为什么我在原始尺寸中选择 300 x 600 的原因,这样就会发生这种情况。*
#### **第 25 步:结论**
在此过程中,您可能已经注意到以下几点:
**预览不以彩色显示。**

光是这个小立方体就有 941 个切片。尝试显示这 941 个切片中每个切片的数千个像素会导致大多数显卡崩溃。这就是为什么对于任何 .gcvf 文件来说,它都是简单的灰色预览。
2. **我们试图创造一个红砖。结果是一个洋红色的立方体。**

没有"VeroRed"。在体素打印中,您需要将 J750 材质颜色的 RGB 体素彼此相邻放置,以便从远处获得某种颜色效果,就像电视一样。
此外,在调整大小时,请注意 300 DPI 与 600 DPI 问题。
3. **每一片都是一样**的

在这个例子中,我们使用 Matlab 'for' 循环对切片进行编号,使用相同的矩阵 every 循环。但要实现体素打印的*真正*力量,您显然会希望每个切片都是独一无二的,体素的形状、材料和排列会改变每一层。
编程超出了本教程的范围,但有很多很多 Matlab 帮助文档详细介绍了如何对 'for' 循环进行编程以应对日益增加的复杂性。但这应该足以让您开始使用 Voxel 打印,如果您需要任何进一步的帮助,请联系您当地的 Stratasys 经销商或 print@grabcad.com!