江苏印刷价格联盟

教程| 如何使用Matlab制造GrabCAD 体素打印切片

只看楼主 收藏 回复
  • - -
楼主

想必大家对Stratasys 最近推出的Voxel Print解决方案已经并不感到陌生了,但你是否已经知道如何使用Matlab制造GrabCAD 体素打印切片了呢?今天小编就为大家双手奉上这满满一篮子的干货。

 

本教程面向已熟悉Matlab及J750 操作的用户。


 

第一步:体素(Voxel)是什么?


就像2D数字图像是由像素组成的,你可以把三维数字形状看作是由“体素(voxels)”组成。

 

它们是常规的矩形结构,包含3D打印点的颜色或材料数据。

 

在3D:体素化 2D栅格化

 

有了3D打印切片,思考二维世界发生的事情会形成更好的头脑画面,而不是在3D空间描绘体素。切片被栅格化,而不是形状被体素化。你可以看到,为了表示二维世界中的一个字母,我们必须做出很多决定:网格中的哪个正方形是暗色填充,浅色填充,还是完全没有填充? 

因为为每个切片做出成千上万的决策会产生一个巨大的价值矩阵,这就是使用Matlab的一个原因,Matlab有许多工具可以处理大型矩阵。

 

 

第二步:一般的切片准则

 

很容易想象,如果你拥有1000多个逐行切片,体素打印的每一层都看起来这样:

 


你可以在J750把它们堆在一起,然后得到像这样的打印:

 

但是有一些规则要遵循。

 

 

第三步:规则一:所有的切片必须有相同的尺寸。


体素印刷中的每个切片必须具有相同的像素尺寸(宽度和高度)。例如,在我们下面的球体里,每个PNG切片都是矩形,高度9像素 * 宽度1424像素(即使切片在球体顶部和底部附近,也不会发生太多的事情)。


这些尺寸是创建切片的工程师所选择的。他可以选择任何尺寸,只要每一片都是一样的。

 

我们将使用Matlab循环命令确保每个切片的大小相同。

 

 

第四步:匹配打印机。


规则二:切片间的Z形缺口应匹配打印机的图层设置。


你应该制定计划,将你所需的最终形状按照J750的匹配图层高度进行切片。

 

例如,在下面的球体里,假设每个PNG切片之间的间距为0.027毫米来做出最终形状。


J750图层高度供参考:

 


(注:如果您的切片厚度与打印机图层厚度不匹配,打印机将尝试弥补差额。例如,如果生成0.0135毫米的片厚,并且您的打印模式是高混合,打印机将打印每个图像两次,以达到期望的厚度0.027毫米。最佳做法就是创建您的切片,以匹配您将要打印的模式。)

 

 

第五步:


规则三:所有的切片都应该使用相同的前缀来按顺序命名。

 

体素打印工具不知道切片的“正确”顺序。它只是通过文件名排序。

查找并为所有标有前缀的PNG文件排序。

在这个例子中,前缀是“slice_”。

序列号是递增的。

当切片生成时,我们将使用Matlab循环,将我们的切片按顺序编号。

 


 

第六步:


规则四:在所有切片中只使用6种 RGB颜色

 

J750只保留6种材料+支持。

体素打印工具将通过RGB值区分每个切片的材料使用。

因此,在指定的打印机中,在所有的组合切片中,你只能使用6 种RGB值。

以下常见J750材料的RGB值供参考。

 


从这里开始,我们将进入Matlab命令。

 

 

第七步:将RGB图像存储在Matlab中


以下展示了Matlab示例图片“辣椒”PNG。

 


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

 

运行该命令后,Matlab显示,RGB样本按照384 x 512 x 3矩阵定义:

 

欲看辣椒.png的像素,使用命令:

 

结果:

 


这意味着,“辣椒”图像上角向下50行,向上100列,有一个(66,38,68)像素的RGB值或类似的东西:


 

 

第八步:最简单的体素打印(一块红砖)


现在我们将尝试制作一种最简单的体素印刷品,一块均匀的红砖:

 


要做到这一点,我们将使用Matlab来定义,并为所需切片编号(不是所有展示的切片)。

 

命令开始:

 


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

 

填满0:

现在,让矩阵的第一层=161,第二层=35,第三层=99。对应于RGB(161,35,99),这应该是VeroMagenta。

 

>>brickslice(:,:,1) =161;

 

>>brickslice(:,:,2) =35;

 

>>brickslice(:,:,3) =99;

 

然后我们使用图像显示('imshow”)命令测试东西:

 

>>imshow(brickslice)

 

应该会导致:

 


 

第九步:


A循环,为数字编号,为 941个切片命名。

Matlab循环的一般结构:

 

我们的循环:

 


 

第十步:对第一个“循环”结果的思考


如果你将此循环保存在Matlab的“m”文件中的,并运行它,你可能会注意到一些事情:

 

为什么我们要指定941个切片呢?

 

如果你还记得,我们想要一块1英寸高的砖头:

 


如果我们的J750设置为高混合模式,切片为0.027毫米。25.4 / 0.027 = 940.7,所以我们需要941个切片。

 

2. 为什么所有产生的PNG还能有错的尺寸?

 

如果你在我们刚刚创建的PNG上点击,并看”属性,“你会发现他们都不是我们想要的300x600像素:

 

这是因为Matlab 'imshow'命令按照默认的解决方案显示图像,我们现在必须改变。我们将展示如何在下一步中做到这一点。

 

 

第十一步:控制输出像素尺寸为循环

 

修改后的循环:

 


 

第十二步:Matlab切片结果


在与Matlab ‘.m’文件相同的文件夹中,您现在应该有941个独立的PNG切片文件,所有的都被序列编号,并拥有相同的前缀。

 


(我改变了我的砖头切片去匹配.m文件的名字,你可以在循环里面设置任何前缀)

 

它们都应该有正确的像素尺寸。

 

现在,我们已经准备进入GrabCAD打印。

 

从这里开始,我们将使用GrabCAD打印和体素工具。

 

 

第十三步:


体素打印工具可以在InsightApp 等“应用程序”下找到。

 


 

第十四步:


体素打印工具将打开这个窗口。

 


 

第十五步:使用体素打印工具。


 

 

第十六步:点击“下一步”后,运行工具。

 


屏幕也可以显示错误。如果你得到“颜色太多”错误,请参阅本演示后面部分的故障排除指南。

 

 

第十七步:将RGB值 映射到J750材料。


打印工具告诉我们,在我们的切片中发现了哪些RGB值(高达6)。

 

我们必须指定一些J750材料的每一个值。

 

但是看到什么问题了吗?

 

 

第十八步:故障排除:“颜色太多”错误

 

请记住,我们的切片只能有6个RGB值。但是我们只在MATLAB中指定了1个,那给什么呢?答案来自于从matlab中PNG输出缩放:

 

虽然切片预览起来可能看起来不错:

 

甚至当你打开一个切片,也看起来不错:

 


如果你放大一个角落,你就会看到问题:抖动。

 


这似乎是对MATLAB输出图像的默认,它试图使纯色的边缘平滑化。

 

成熟的Matlab使用者可能知道关闭命令,但现在要知道,如果你在切片矩阵里指定了6种颜色,体素打印工具会把边缘作为额外的颜色,并出现一个错误,因为它们是新的RGB值。

 

照片编辑软件是检查这的好方法。

 

1.打开你的颜色选择器。

 

2.在你的切片在抖动区域点击。

 

3、看看RGB值是否正在改变或则不同于预期值。

 


如果是这样,这些额外的RGB值可能是造成您“太多颜色”错误的原因!

 

其他选项:

 

A.你没有把正确的颜色指定为“背景”。

 

B. 在不同颜色的alpha通道分别作为不同的RGB值,所以我们只能拥有RGBA中的6个值。

 

 

第十九步:将RGB值 映射到J750材料。


因为我们现在不能修复MATLAB抖动问题,我们要为每个可找到的RGB值指定一种材料。(抖动区我选择了黄色,希望不会影响太多。):

 


 

第二十步:

点击“完成”和应该被创建的GCVF文件。

 


 

第二十一步:

在添加GCVF文件到纸盒之前

 

你必须打开这两个属性,导入GCVF到GrabCAD打印:

 


然后导入GCVF文件到纸盒。

 

 

第二十二步:我们最后拥有红色立方体。


 

 

第二十三步:J 750的X、Y方向有不同的分辨率。


回到体素工具,你可能已经注意到窗口中有这两个不可编辑的字段。

 


由于PolyJet技术的本质,像素堆叠X方向比堆积在Y方向要密集两倍。

 

第二十四步:


这就是为什么我们得到了一个1*1英寸的立方体。

 

我们如何知道这是一个1*1英寸的立方体?

 

因为,如果你在每英寸每厘米都添加一个拥有切口的CAD部分(你应该),你可以看到立方体非常适合位于两个“英寸”切口之间。

 


(这就是为什么始尺寸我选择300×600,因为这会发生。)

 

 

第二十五步:结论


在这个过程中你可能注意到了一些事情:预览没有显示颜色。

 


这个小立方体有941个切片。尝试显示上千的像素,因为这941个切片中的每一个都会使大多数显卡崩溃。这就是为什么它对于任何.gcvf 文件都是一个简单的灰色预览。

 

2. 我们试图创建一块红砖。结果却是红色立方体。

 


没有“VeroRed.”。在体素打印里,你需要把J750材料颜色RGB体素紧靠彼此以从远处得到某种颜色效果,就像电视一样。

 

此外,设定尺寸时,要注意300 DPI与600 DPI。

 

3. 每个单独的切片都是一样的。

 


在这个例子中,我们使用Matlab的“循环”来计算我们的切片,每个循环使用相同的矩阵。但要实现体素打印的真正力量,通过体素的形状、材料和排列改变了每一个图层,你显然希望每一个切片都是独一无二的。

上海金鸿数码科技有限公司

官网:www.gswandigital.com

电话:021-66316866


举报 | 1楼 回复

友情链接