如何使用 Matlab 制作 GrabCAD 体素打印切片

本教程适用于已经对 Matlab 和 J750 操作有所了解的用户。

它不是有关如何使用 Matlab 软件或 PolyJet 打印机的全面课程。

Stratasys 为您提供以下内容:

  1. 第 1 步:什么是体素?

    就像 2D 数字图像由像素组成一样,您可以将 3D 数字形状视为由“体素”组成。

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

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

    但是,与其在 3D 中描绘体素,不如在脑海中思考 2D 中发生的事情,以及 3D 打印的每一个切片。切片不是“体素化”,而是“栅格化”。你可以看到,要在 2D 中表示一个字母,我们必须做出许多决定,关于网格中的哪个方格是深色填充、轻度填充或根本不填充。

    因为为每个切片做出数千个这样的决策会产生一个巨大的值矩阵,这就是使用 Matlab 的一个原因,它有许多工具来处理大型矩阵。

  2. 第 2 步:一般切片准则

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

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

    但是有一些规则需要遵循。

  3. 第 3 步:规则 1:所有切片必须具有相同的维度

    体素打印中的每个切片都必须具有相同的像素尺寸(宽度和高度)。例如,在下面的球体中,每个 PNG 切片都是一个 709 像素高 x 1424 像素宽的矩形(即使在球体顶部和底部附近的切片处,那里没有发生太多事情)。

    这些只是创建切片的工程师选择的维度。他可以选择任何尺寸,只要照片中的每一片都是相同的。

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

  4. 步骤 4:规则 2:切片之间的 Z 间隙应与打印机层设置匹配

    您应该计划在与 J750 所能做的层高相匹配的层高处切割所需的最终形状。

    例如,在下面的球体中,假设每个 PNG 切片与下一个切片相距 0.027 毫米,以形成最终形状。

    作为参考,J750 层高为:

    (注意:如果您的切片厚度与打印机层厚度不匹配,打印机将尝试补偿差异。例如,如果您生成的切片厚度为 0.0135 毫米,并且您的打印模式为“混合”,则打印机将打印每个图像两次,以达到所需的 0.027 毫米厚度。最佳做法是创建切片以匹配您将要打印的模式。

  5. 第 5 步:规则 3:所有切片都应使用相同的前缀按顺序命名

    Voxel Print 实用程序不知道切片的“正确”顺序。它只是按文件名。

    它将在单个文件夹中查找,并对所有标有已定义前缀的 PNG 文件进行排序。

    在此示例中,前缀为 “slice_”。

    序列将按递增数字。

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

  6. 步骤 6:规则 4:在所有切片中仅使用 6 种 RGB 颜色

    J750 只能容纳 6 种材料 + 支撑。

    Voxel Print Utility 将按 RGB 值分隔每个切片中的材质使用。

    因此,在给定的打印中,在所有切片的组合中,您只能使用 6 个 RGB 值。

    以下是一些常见 J750 材质的 RGB 值,以供参考:

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

  7. 第 7 步: 现在,RGB 图像如何存储在 Matlab 中?

    Matlab 附带的示例图像之一是 'peppers.png' (如下)。

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

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

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

    结果:

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

  8. 第 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. 第 9 步:一个 'for' 循环,按顺序对我们的 941 个切片进行编号和命名

    Matlab 循环的一般结构:

    我们的循环:

  10. 第 10 步:对第一个 'for' 循环结果的想法

    如果您将该 for 循环保存在 Matlab '.m' 文件中并运行它,您可能会注意到一些事情:

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

    如果您还记得,我们想要一块 1 英寸高的积木:

    如果我们的 J750 设置为高混合模式,切片相距 0.027 毫米,因此 25.4 / 0.027 = 940.7,我将其四舍五入为 941。

    2. 为什么所有生成的 PNG 都有错误的尺寸?

    如果您右键单击我们刚刚创建的任何 PNG 并查看“属性”,您会发现它们不是我们想要的 300x600 像素:

    这是因为 Matlab 的 'imshow' 命令以默认解显示图像,我们现在必须更改该解。我们将在下一步中展示如何执行此操作。

  11. 第 11 步:在我们的 'for' 循环中控制输出像素尺寸

    我们的 REVISED 循环:

  12. 第 12 步:Matlab 切片的结果

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

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

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

    现在,我们已准备好进入 GrabCAD Print

    从这里开始,我们将使用 GrabCAD Print 和 Voxel 实用程序

  13. 第 13 步:Voxel Print Utility 将位于“应用程序”下,类似于 Insight

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

  15. 第 15 步:使用 Voxel Print 实用程序

  16. 第 16 步:点击“下一步”后,实用程序运行

    这也是将显示错误的屏幕。如果您收到“Too Many Colors”错误,请参阅本演示文稿后面的疑难解答指南。

  17. 第 17 步:接下来,我们必须将 RGB 值映射到 J750 材质

    这是 Utility 告诉我们它在切片中找到了哪些 RGB 值(记住最多 6 个)的地方。

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

    但是看到不对劲了吗?

  18. 第 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. 第 19 步:接下来,我们必须将 RGB 值映射到 J750 材质

    由于我们现在无法修复 Matlab 抖动问题,因此我们将为每个找到的 RGB 值指定一个材质(我选择黄色作为抖动,希望这不会产生太大影响):

  20. 第 20 步:点击“完成”,即可创建 GCVF 文件

  21. 第 21 步:将 GCVF 文件添加到托盘之前

    您必须打开这两个“首选项”才能将 GCVF 导入 GrabCAD Print:

    然后您可以将 GCVF 文件导入到托盘上。

  22. 第 22 步:我们终于有了洋红色立方体

    等?一个立方体?

    我以为我们正在制作一个 RECTANGLE,高 300 像素,宽 600 像素?

    发生这种情况是因为......(请参阅下一步)

  23. 第 23 步:X 和 Y 方向在 J750 上具有不同的 DPI

    回到 Voxel Utility,您可能已经注意到窗口中的这两个不可编辑的字段。

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

  24. 第 24 步:这就是为什么我们得到一个 1 英寸 x 1 英寸的立方体作为我们的结果

    我们怎么知道它是一个 1 英寸 x 1 英寸的立方体?

    因为,如果你添加一个 CAD 零件,它每英寸和每一厘米都有切口(你们都应该有),你可以看到立方体很好地适合两个“英寸”切口之间。

    (这就是为什么我在原始尺寸中选择 300 x 600 的原因,这样就会发生这种情况。

  25. 第 25 步:结论

    在此过程中,您可能已经注意到以下几点:

    预览不以彩色显示。

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

    2. 我们试图创造一个红砖。结果是一个洋红色的立方体。

    没有“VeroRed”。在体素打印中,您需要将 J750 材质颜色的 RGB 体素彼此相邻放置,以便从远处获得某种颜色效果,就像电视一样。

    此外,在调整大小时,请注意 300 DPI 与 600 DPI 问题。

    3. 每一片都是一样

    在这个例子中,我们使用 Matlab 'for' 循环对切片进行编号,使用相同的矩阵 every 循环。但要实现体素打印的真正力量,您显然会希望每个切片都是独一无二的,体素的形状、材料和排列会改变每一层。

    编程超出了本教程的范围,但有很多很多 Matlab 帮助文档详细介绍了如何对 'for' 循环进行编程以应对日益增加的复杂性。但这应该足以让您开始使用 Voxel 打印,如果您需要任何进一步的帮助,请联系您当地的 Stratasys 经销商或 print@grabcad.com!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/61740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CNN—LeNet:从0开始神经网络学习,实战MNIST和CIFAR10~

文章目录 前言一、CNN与LeNet介绍二、LeNet组成及其名词解释2.1 输入2.2 卷积层2.3池化层2.4 全连接层2.5 总结 三、MNIST实战3.1 构建神经网络3.2 数据处理3.3 (模板)设置优化器,损失函数,使用gpu(如果是N卡有cuda核心)&#xff…

SpringBoot集成Dynamo(3)集成远程dynamo

按照推荐的AWS IAM SSO模式&#xff0c;以文件存储凭证的方式&#xff0c;看下代码是如何访问的。 pom依赖&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"…

半导体、晶体管、集成电路、芯片、CPU、单片机、单片机最小系统、单片机开发板-概念串联辨析

下面概念定义从小到大串联&#xff1a; 半导体&#xff08;semiconductor&#xff09;&#xff1a; 是一类常温下导电性能介于导体与绝缘体之间的材料&#xff0c;这种材料的导电性可以随着外部环境比如电压、温度、光照的变换而改变。常见的半导体材料有硅、锗、砷化镓等。 晶…

学习路之phpstudy--安装mysql5.7后在my.ini文件中无法修改sql_mode

windows环境下使用phpstudy安装mysql5.7后需要修改mysql中的sql_mode配置&#xff0c;但是在phpstudy中打开mysql配置文件my.ini后&#xff0c; 通过查找找不到sql_mode或sql-mode&#xff0c; 此时无法在my.ini文件中直接进行修改&#xff0c;可以使用mysql命令进行修改&#…

了解大模型:开启智能科技的新篇章

在当今科技飞速发展的时代,人工智能(AI)已经成为推动社会进步的重要力量。而在AI的众多技术分支中,大模型(Large Model)以其强大的数据处理能力和卓越的性能,正逐渐成为研究和应用的热点。本文旨在科普大模型的基本概念、与大数据的关系以及与人工智能的紧密联系,帮助读…

多目标粒子群优化(Multi-Objective Particle Swarm Optimization, MOPSO)算法

概述 多目标粒子群优化&#xff08;MOPSO&#xff09; 是粒子群优化&#xff08;PSO&#xff09;的一种扩展&#xff0c;用于解决具有多个目标函数的优化问题。MOPSO的目标是找到一组非支配解&#xff08;Pareto最优解&#xff09;&#xff0c;这些解在不同目标之间达到平衡。…

联想ThinkServer服务器主要硬件驱动下载

联想ThinkServer服务器主要硬件驱动下载&#xff1a; 联想ThinkServer服务器主要硬件Windows Server驱动下载https://newsupport.lenovo.com.cn/commonProblemsDetail.html?noteid156404#D50

亚马逊搜索关键词怎么写?

在亚马逊这个全球领先的电子商务平台&#xff0c;如何让自己的产品被更多的消费者发现&#xff0c;是每一个卖家都需要深入思考的问题。而搜索关键词&#xff0c;作为连接卖家与买家的桥梁&#xff0c;其重要性不言而喻。那么&#xff0c;如何撰写有效的亚马逊搜索关键词呢&…

Flutter-Web首次加载时添加动画

前言 现在web上线后首次加载会很慢&#xff0c;要5秒以上&#xff0c;并且在加载的过程中界面是白屏。因此想在白屏的时候放一个加载动画 实现步骤 1.找到web/index.html文件 2.添加以下<style>标签内容到<head>标签中 <style>.loading {display: flex;…

动态规划子数组系列一>最长湍流子数组

1.题目&#xff1a; 解析&#xff1a; 代码&#xff1a; public int maxTurbulenceSize(int[] arr) {int n arr.length;int[] f new int[n];int[] g new int[n];for(int i 0; i < n; i)f[i] g[i] 1;int ret 1;for(int i 1; i < n-1; i,m. l.kmddsfsdafsd){int…

win10 禁止更新

一、winR 输入 regedit 二、输入注册列表路径&#xff1a; &#xff08;1&#xff09;计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings &#xff08;2&#xff09;按照格式&#xff0c;创建文件命名: FlightSettingsMaxPauseDays &#xff08;3&…

传奇996_36——背包图标,物品位置问题

绑定位置不对位 CTRLF9背包物品文件&#xff0c;也就是bag_item文件夹的bag_item.lua文件&#xff0c;这个小框和大框的相对位置会影响那个绑定图标,就是背包物品组合的标签和下面子标签的相对位置 背包物品偏移到看不见 原因&#xff1a;CTRLF9背包物品文件&#xff0c;也就…

springboot3如何集成knife4j 4.x版本及如何进行API注解

1. 什么是Knife4j knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案, 取名knife4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍!knife4j的前身是swagger-bootstrap-ui,swagger-bootstrap-ui自1.9.6版本后,正式更名为knife4j为了契合微服务的架构发展,由于原来…

机械设计学习资料

免费送大家学习资源&#xff0c;已整理好&#xff0c;仅供学习 下载网址&#xff1a; https://www.zzhlszk.com/?qZ02-%E6%9C%BA%E6%A2%B0%E8%AE%BE%E8%AE%A1%E8%A7%84%E8%8C%83SOP.zip

【大数据学习 | Spark-Core】RDD的概念与Spark任务的执行流程

1. RDD的设计背景 在实际应用中&#xff0c;存在许多迭代式计算&#xff0c;这些应用场景的共同之处是&#xff0c;不同计算阶段之间会重用中间结果&#xff0c;即一个阶段的输出结果会作为下一个阶段的输入。但是&#xff0c;目前的MapReduce框架都是把中间结果写入到HDFS中&…

Flume日志采集系统的部署,实现flume负载均衡,flume故障恢复

目录 安装包 flume的部署 负载均衡测试 故障恢复 安装包 在这里给大家准备好了flume的安装包 通过网盘分享的文件&#xff1a;apache-flume-1.9.0-bin.tar.gz 链接: https://pan.baidu.com/s/1DXMA4PxdDtUQeMB4J62xoQ 提取码: euz7 --来自百度网盘超级会员v4的分享 ----…

B站直播模块解读——MVVM类似物

Model层: 数据类及其Converter Service接口lmpl实现类 (1)Scoket广播接受服务端下发数据 或在repository类中还是利用Socket广播 (2)业务接口接收服务端下发数据 将所有Service实现类注入LiveAppServiceManager统一管理 ViewModel层&#xff1a; ViewModel从LiveAppService…

Hive基础面试-如何理解复用率的

1. 模型的复用率你们是怎么做的&#xff1f; 简单直白的说就是你的模型复用率如何&#xff0c;在业务方是否认可该模型&#xff0c;也是衡量模型建设的一个标准&#xff0c;复用率数&#xff1a;数仓模型涉及的核心是追求模型的复用和共享&#xff0c;引用系数越高&#xff0c;…

eduSRC挖洞思路

声明 学习视频来自 B 站UP主泷羽sec&#xff0c;如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识&#xff0c;以下网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 ✍&#x1f3fb;作者简介&#xff1a;致…

Banana Pi BPI-CanMV-K230D-Zero 采用嘉楠科技 K230D RISC-V芯片设计

概述 Banana Pi BPI-CanMV-K230D-Zero 采用嘉楠科技 K230D RISC-V芯片设计,探索 RISC-V Vector1.0 的前沿技术&#xff0c;选择嘉楠科技的 Canmv K230D Zero 开发板。这款创新的开发板是由嘉楠科技与香蕉派开源社区联合设计研发&#xff0c;搭载了先进的勘智 K230D 芯片。 K230…