拓竹参与研究的最新开源算法直面3D打印智能上色
给模型手动上色的读者应该都懂一种烦恼。
鼠标一笔一笔刷过去,刷到复杂结构、镂空和边缘,手一抖就糊出界,撤销,重来。
半小时过去,3D打印机器完全没动起来。
最近有篇论文把这活交给AI,教AI学会给模型涂色。

上图可以看到算发拆出来的模型,桌椅、人偶、车辆、房子,色块边界清晰
论文叫SegviGen,十一位作者,北航牵头,还有人大、清华、北京交通大学,以及拓竹。

代码和权重已经按MIT协议开源,链接在文章最后。
为什么涂色比认零件容易
我们自己涂色的常常并不是沿着零件边界描线,最直观应用往往是拿填充工具往区域里一点,让颜色自己漫开,漫到边界为止。
判断一块是不是零件,本来就是个填色的活,不需要描线。
以前的做法是完全反过来的。
训练一个网络去输出零件编号,这块是1号,那块是2号。
要教会它,得先人手工标注海量3D模型,一块一块告诉它编号。
标注很麻烦,更麻烦的是不同数据集对多细算一个零件的定义互相打架,数据越攒越乱。
本文算法没有从零开始训练,而是借了微软一个现成的3D生成模型Trellis.2来改。
这类模型的特点是为了能生成出一把像样的椅子,已懂得椅子的腿、座面、靠背怎么组合。
所以这个模型本就有优势理解物体本身。
算法到底怎么涂色
下图是整体流程。

简单来说,输入的模型网格先被压成一份内部数据,这份数据用来锁死物体形状,也圈定了哪些小方块算数。
可以当它是一副骨架,模型能在骨架上决定每块什么颜色。
颜色从一团随机噪点开始。
训练时把正确配色掺进噪点里搅浑,让模型学着还原回去。
而真实使用时候则从纯噪点起步,顺着学会的那条路往回走十几步,颜色慢慢显影。
图右下角那三个蘑菇小屋,就是同一套参数干的三件事。
涂成黑白是选中单个零件,每个零件随机上色是全自动拆件,然后照着一张2D贴图精准涂色。

这里有个不起眼但关键的设计。
训练时同一个模型要用十套随机配色反复涂。
这的目的不让模型记住某区域的具体某种颜色。
目的只让它学哪一堆该同色、哪一堆该异色。
颜色在这儿只是个能随便换的记号,并不是物体属性。
如果这步省掉,它学会的就是认颜色而不是认结构,换个没见过的东西立刻没法用。
下面看看这个研究实用性如何。
一,不全拆,只想挑一块
回到开头那个场景。
多数时候我们并不需要软件把模型拆成二十块,只想要其中一块给颜色。
这一块以前只能靠手刷。现在的目标是点一下能自动选取你要的涂色部分。难就难在,你点的是表面上一个点,模型得猜出这个点属于哪一整块,边界在哪儿。下图看黄点是点击位置,红色是模型认出的零件。前两行是旧方法,最后一行是SegviGen
三行是同一个动作。上面两种旧算法,一个只圈出一道残缺的弧,一个啃下一小团,只有最后一行本文的算法把整个镜头连着外圈完整抠了下来。右半边换成台座上的物体,结论一样。第一下不准也不要紧,你可以接着补点,补一个它修一次边界。腾讯混元的P3-SAM是此前公认最强的同类方法,它点到第三下之后基本就不动了,你再补点它也不动了。而本文的算法点到第十下还在补齐精准度,分割准确度从五成一路爬到八成。下图看这套东西对应的操作界面,点一下加一个零件
他们做出来的界面展示了蛋糕上的奶油、热狗里的香肠、手表的表带、机器狗的四条腿,点哪个出哪个。
不点也行,一键全拆要是一个模型有二十个零件,点二十下也是折磨。第二种模式索性不用用户动手,直接把整个模型拆开,一个零件一个颜色。这比点一下要难得多。点一下至少你告诉了它从哪儿起手,全自动是它自己决定如何分件。下图实对比五种方法拆件同一批模型,最后两列是本文算法SegviGen
可以看到有的糊成一片根本分不出块,有的能分出大块但边界发虚。最后两列是本文的成果,色块边缘是齐的。一批模型说明不了什么,换批更接地气的再比一次。下图是水果盘、卡通角色、沙发、老巴士
沙发那行别的方法把靠背和坐垫粘成一整块,SegviGen把两块分开了。水果盘和老式巴士也一样,该断的地方断得清晰。还有最容易露馅的地方也对比测试了。传统靠多视角拼出来的老方法,往往正面拆得漂亮,一转到背面就废。
上图每个物体都给了两个角度。相机、墨镜、盆栽郁金香、手表、粉色跑车,转过去色块位置并没有飘。
想拆几块,用户说了算前两种模式有个共同的毛病。拆成几块是它算法定的,不是用户定的。如果想把整只鞋当一块,它偏要把鞋带单拆出来。第三种模式解决的就是这个,也是这篇论文独有的能力。给一张2D颜色贴图,把想要的分法画好,它试图照着往3D模型上涂。你想拆五块就五块,想拆二十块就二十块。

AI生成的模型也能拆上面这些测试用的都是人做的模型,规规矩矩。但我们手上越来越多的模型是AI生成的,那类东西面和面连的并不规则,拆起来是另一回事。
直接拿混元3D 2.1生成的模型来测,没做任何额外训练,也没有标准答案可对。一个忍者,一个圣诞老人,照样拆得出来。这一步接上了,从生成到打印才算一条完整的链。
比跑分值钱的细节论文提到,Trellis.2(之前的老算法)解码出来的网格,和用户输进去的原始模型并不是同一个,面数和局部连接都改变了。SegviGen(新算法)则把预测出的颜色搬回你原来那个模型网格上。每个顶点取最近有效方块的颜色,每个面按顶点投票定归属,再轻度平滑一遍,抹掉边界上的毛刺。说白了,相对来说,它还给你的是你自己那个模型,只是每个面上多了标签。这对3D打印切片来说很关键。模型没被算法重做过,对切片和打印效果至关重要。不过这个算法也不是完美的。论文自己贴了失败案例。比如下图拆出来的块数和人预期对不上,以及引导图过细时的边界退化。

写在最后
我们认为智能上色是未来刚需。
这类研究解决的就是这类刚需。
至于算法赋予的颜色怎么落到打印机上,这一步以目前的大家设备硬件水平并不算难事。
有意思的是论文通篇没提多色3D打印,谈的全都是零件分割、编辑、绑定这些通用能力,拓竹在十一位作者里只占两席,牵头的是北航。
我们认为这类研究的下一步已经可以从论文走向切片软件了。
门槛并不高,代码和权重按MIT协议摆在GitHub上,八个卡八小时训一版,任何一家有软件团队的厂商今天就能尝试产品化。
我们希望未来这样的算法越多越好,进终端软件越早越好。
也希望各品牌的用户都能用上。
AI时代的多色3D打印需要智能上色工具/算法带来的迅捷美感,而不是痛苦缅怀用windows自带画图工具带来的考古感。
自己试试项目主页,拆好的GLB可以直接点开逐个零件看,比截图直观:SegviGen项目主页
代码和权重,MIT协议:GitHub代码仓库
打算本地跑的先看门槛,官方要求Linux系统加一张显存不低于24GB的N卡,而且得先把微软Trellis.2的环境装好:TRELLIS.2环境配置
论文原文与PDF:arXiv论文原文
信源:Li L, Feng H, Huang Z, et al. SegviGen: Repurposing 3D Generative Model for Part Segmentation. ACM Trans. Graph. 45(4), Article 68, July 2026.


京公网安备11010802046387号