尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
KaiNinja:给3D生成模型装上“拆零件“的能力
2026年9月一个叫KaiNinja的研究项目上线了。它做的事情听起来简单给一张图片生成一个3D模型。但这句话背后藏着一个行业已经卡了好几年的难题。你可能没意识到现在最好的3D生成模型生成出来的东西全是一整块。你上传一张椅子的照片它给你一把椅子但这把椅子是一整坨网格数据椅背、椅腿、坐垫全部粘在一起没有边界没有接缝。你想把椅子腿单独拿出来改个颜色不行。你想让椅背可以旋转做成一个动画不行。你想把这把椅子的靠背换到另一把椅子上也不行。因为对模型来说这从来就不是一把椅子由几个零件组成而是一整块椅子形状的表面。3D生成模型不会拆零件这事有多麻烦先说说为什么这事重要。游戏公司要做角色动画得先把角色拆成头、躯干、四肢然后给每个部位装骨骼。电影特效要做爆炸场景得先知道桌子是由桌面和四条腿组成的不然没法算物理碰撞。哪怕只是想给一件家具换个材质你也得先分清楚哪部分是木头哪部分是金属。*Native 3D生成器直接从图片去噪生成3D模型的技术路线不需要先生成多张视角图片再重建速度快、质量高是目前效果最好的3D生成范式。TRELLIS、TRELLIS.2、Hunyuan3D都属于这一类。这些模型确实做得越来越好材质、纹理、光照全都能生成得很逼真。但它们全都有一个共同的毛病吐出来的是一坨融合在一起的网格没有零件概念。行业里现在有两条路子想解决这个问题。第一条路是先生成后切割让生成器出一个完整模型再找个分割网络把它切成几块。这就像你先把一个蛋糕烤好再拿刀切成几份。问题是蛋糕烤的时候各种夹心已经混在一起了你这一刀切下去很可能把巧克力夹心和草莓夹心切得乱七八糟因为烘烤过程根本没考虑过这里要留出一条切割线。论文里提到一个具体数字这种先生成后切割的方案做一个模型的时间比另一条路线慢一个数量级也就是十倍以上的时间开销。而且分割准不准直接决定了最后零件切得好不好模型自己没法纠正分割器的错误。第二条路是生成时就想好零件比如让模型先框出几个零件的位置用方框标注再往每个框里填内容。这条路快是快了但天生有个上限你得先知道要生成几个零件、每个零件大概在哪这本身就需要一次预测或分割一旦这个预测错了生成出来的零件要么叠在一起要么根本对不上。问题的根子一个格子只能装一层皮KaiNinja团队没有从怎么切割这个角度想问题他们往更底层挖了一层发现真正的瓶颈出在3D模型的存储方式上。TRELLIS.2用的表示方法叫O-Voxel。*O-Voxel一种稀疏体素结构把3D空间切成很多小格子只在有表面的格子里存东西每个格子存一个对偶顶点通过一种叫对偶轮廓化dual contouring的算法把这些顶点连起来变成网格表面。它的好处是能表示开放、非流形比如薄片状的复杂表面还能带材质和贴图。这套东西设计得很聪明唯独有一个硬伤一个格子只能存一层表面。想象两个零件紧贴在一起比如桌面和桌腿连接的地方。这两个零件的表面几乎贴在一起中间几乎没有空隙。当你把这个区域切成格子的时候这两层几乎重合的表面会落进同一批格子里。而O-Voxel的规则是每个格子只保留一个代表性顶点用一种叫二次误差函数的算法在两层表面之间拟合一个折中位置。结果就是两层表面直接被拟合成了一层。这不是分辨率不够的问题你把格子切得再细只要两个零件贴得足够近这个问题永远存在。这是一个容量上的死结这个存储格式从设计之初就没打算让两片表面共存在同一个格子里。如果你家里有两片刚好能严丝合缝拼在一起的拼图你把它们叠在一起放进一个只能装一张纸厚度的信封里无论你把信封做得多精致那两片拼图最终都会被压成一张纸的厚度你没法从信封外面分辨出这原本是两片。这不是信封质量的问题是信封这个容器的设计前提就不支持两层紧贴的东西各自保留。这就是KaiNinja团队面对的核心矛盾零件接触的地方恰恰是分割任务最需要保留精确边界信息的地方但现有的表示方式在这个地方会主动把信息抹掉。解法把一个格子拆成两套既然一个体积装不下两层贴合的表面那就用两个体积。这个思路不是KaiNinja首创的他们借鉴了一篇叫PartPacker的工作里的双体积打包dual-volume packing想法但把它从原来那种基于SDF场的表示方式搬到了TRELLIS.2用的O-Voxel网格上。具体做法是这样把一个物体的所有零件看成一张图里的节点两个零件如果碰在一起就在图上连一条边这张图叫接触图。*接触图描述物体各零件之间物理接触关系的图结构节点是零件边代表两个零件有实际接触。KaiNinja判断接触的标准很严格只要有一个体素格子同时被两个零件的表面占据就算接触还会按共享格子的数量给这条边加权重。接下来对这张图做一次二染色也就是把所有节点分成两组颜色规则是相邻的节点也就是互相接触的零件不能是同一个颜色。染色完之后把颜色A的零件全塞进一个体积Volume A颜色B的全塞进另一个体积Volume B。这样一来同一个体积里的零件天生就不会互相接触那个两层表面挤进一个格子的问题就自然消失了。论文里举了个例子挺形象的。一辆卡车车身是一个整体和轮子、窗户、后视镜都有接触这是一个星形的接触图车身作为中心节点和周围所有节点相连。二染色之后车身自己占了Volume A1个零件轮子、窗户、镜子全塞进Volume B11个零件。一台微波炉稍微复杂点最后拆成25的两组中间有6条接触边。这里有个技术上绕不过去的坎不是所有的接触图都能被完美二染色。只有二部图才能被干净地分成两组互不相邻的颜色现实里零件互相咬合、缠绕得复杂的物体接触图往往不是二部图会出现奇数环比如三个零件互相都接触形成一个三角形关系这时候硬要二染色是染不出来的。KaiNinja的解决办法是贪心地合并只要图里还有奇数环就找环上权重最大的那条边也就是接触最紧密的那两个零件把它们合并成一个节点重复这个过程直到图变成二部图为止。这意味着接触特别复杂、零件互相嵌套得特别深的物体最后会被迫把几个本该独立的零件捏成一个大零件。这是这套方案的代价论文自己也坦诚承认了这一点还专门在附录里证明了为什么这个限制没法通过增加体积数量彻底解决三维空间中任意多个区域都可能两两相邻所以理论上不存在一个固定数量的体积能兜住所有情况。让预训练模型学会两套流而不是推倒重来光有了两个体积还不够KaiNinja还得让生成模型知道怎么往这两个体积里填东西。TRELLIS.2的生成过程分两个阶段第一阶段决定哪里有表面叫layout flow布局流第二阶段决定这个表面具体长什么样叫refinement flow精修流。*Rectified Flow矫正流一种类似扩散模型的生成技术通过逐步去噪把一个随机噪声变成目标数据TRELLIS.2和KaiNinja都用这套框架来生成3D内容。KaiNinja的做法是把这两个阶段分开对待因为它们各自面对的任务不一样。第一阶段负责决定零件怎么分布、哪个零件归哪个体积这是一个需要全局协调的联合决策所以KaiNinja给这个阶段配了两套独立的权重一套负责A体积一套负责B体积每隔几层网络再插入一个跨体积注意力模块让两条流互相看一眼对方在干嘛。这个跨体积模块是零初始化的也就是说训练刚开始的时候这个模块完全不起作用两条流各自为政等训练进行下去这个模块才慢慢学会怎么协调两边。第二阶段的任务相对局部就是把已经确定好位置的表面精修出细节这个任务和原来TRELLIS.2预训练时做的事情几乎一样所以KaiNinja压根没动这部分的权重只是通过注意力范围的调整让两个体积各自精修30层网络里有20层只让每个体积看自己的内容剩下10层允许跨体积看一眼。这种分阶段区别对待的设计思路很像装修一栋老房子的时候你不会把承重墙全部推倒重建。承重结构也就是原模型已经学得很好的图像理解和局部几何精修能力原样保留你只在需要重新布局的地方决定零件怎么分配动手术而且这个手术是先各自练熟再慢慢学会配合不是一上来就把两拨施工队混在一起干活。如果一开始就让两条流混在一起从零训练那些还没学会怎么密切配合的模块产生的乱七八糟的梯度会直接冲进已经训练得很好的预训练权重里把原本学到的图像理解能力搅乱。训练的三步走先适应再合并最后一起磨合这套两阶段设计带来了一个新问题怎么把预训练好的单体积模型变成能处理双体积的模型同时还不破坏它原本学到的东西KaiNinja团队总结出预训练模型和目标任务之间存在三道鸿沟。第一道鸿沟是分布差异预训练模型看过的都是完整物体从没见过半个物体、接触面暴露在外的样子。第二道鸿沟是接口缺失原模型压根不知道零件接触面长什么样。第三道鸿沟是协作缺失两个体积的内容需要互相配合但两条独立训练的流没有天然的默契。针对第一阶段布局流KaiNinja设计了一套四步走的训练流程。第一步叫各自适应把预训练好的单流模型复制两份一份只在A体积的数据上微调一份只在B体积的数据上微调先让每一份权重适应半个物体这种新的数据分布暂时不涉及两个体积怎么协作的问题。第二步叫无损合并把两份微调好的权重原样装进两条流里因为两份权重涉及的模块比如注意力层、时间步调制是各自独立的所以这一步不需要做任何重新解释合并完的模型行为上和两个独立的微调模型完全一样。第三步是冻结预热先把刚才合并进来的两条流权重全部冻结只训练那个负责跨体积协调的注意力模块让这个新模块先学会怎么在不破坏已有能力的前提下建立联系。第四步才是联合微调解冻所有参数一起训练。这个顺序不是随便安排的如果跳过第三步直接联合训练那个还没学会协调的新模块会把杂乱的梯度传给已经适应好的两条流把它们训练成果搅乱如果跳过第一步直接合并训练等于让一套从没见过半个物体的权重同时去学两种它都不熟悉的新分布训练难度陡增。这个过程让我想起学一门新乐器合奏。如果你想让两个原本各自练熟了独奏的乐手临时组一个二重奏比较靠谱的做法是先各自把自己的谱子练熟对应第一步各自适应然后让他们坐到一起但先不急着合奏各自弹各自的先听一遍对应第二步的无损合并再专门抽时间只练习怎么在对方弹奏的时候接进来这个配合环节对应第三步的冻结预热最后才是完整的合奏排练第四步联合微调。如果一上来就让两人合奏两边都在适应新曲子又要适应对方效果往往比按顺序来的差。联合微调阶段还加了一个互斥惩罚项disjointness penalty。这个设计针对的问题是训练过程没有天然的机制阻止两条流把同一块表面同时塞进A和B两个体积里模型完全可能偷懒让两个体积都生成差不多的东西。KaiNinja在每一步训练里把两条流预测出的占据情况解码出来如果两个体积在同一个位置都判断这里有表面就给这个重叠区域一个惩罚。论文里的实验显示这个惩罚项让两个体积的重叠中位数从0.229降到0.184明显减轻了两边生成同一坨东西的偷懒现象虽然没能彻底根治。第二阶段精修流反而不需要这么复杂的流程因为它的骨干网络完全没变只是注意力范围做了区隔所以只用了冻结预热全量微调两步量级也小得多。用AI agent写代码生成的数据第一次拿来训练3D生成模型模型架构讲完了还有一个容易被忽略但其实很关键的部分训练数据从哪来。KaiNinja团队把四个数据集攒成一个语料库一共19132个物体articraft8968个、partnext6358个、trellis1931个、fusion3601875个。其中最特别的是articraft这个数据集它不是人工建模的也不是传统扫描来的而是一个LLM驱动的代码生成agent做出来的。*Articraft一套让大语言模型作为编程agent来生成带零件结构和物理关节的3D资产的系统。这个agent会写程序用基础几何形状比如立方体、圆柱体拼出每个零件再用物理关节把零件连接起来。因为零件是agent一步步用代码搭出来的所以零件的划分方式是写代码时天然确定的不存在人工标注可能带来的模糊和错误。这一点其实挺有意思的。以前训练3D分割或者生成模型零件标签往往来自人工标注标注这件事本身就带有主观判断两个人标同一个模型划分边界可能都不完全一样。而agent生成的数据零件边界是程序逻辑决定的没有标注噪声这个说法。论文特别强调这是第一次有研究用agent生成的3D资产去训练一个3D生成模型。除了数据来源多样化KaiNinja团队还做了两轮质量筛选。第一轮在体素化之前保留零件数在2到32之间的物体剔除零件之间严重穿插碰撞的用碰撞深度和广义环绕数衡量重叠程度去掉那些被背景平面或地面板主导的资产。第二轮在打包完成之后要求每个物体都有合法的潜变量表示和渲染出来的条件图还专门加了一个平衡过滤器确保A、B两个体积的体素数量和占据率不要差得太离谱避免出现一个体积几乎是空的这种退化情况。值得一提的是因为O-Voxel本身就不要求表面是水密的也就是完全封闭的所以KaiNinja这套流程完全跳过了PartPacker基于SDF那套方案里必须做的水密修复和外壳膨胀步骤原始的开放表面和材质信息都能保留下来。结果怎么样不仅拆得好整体质量还变高了说了这么多设计最后还是要看实际效果。KaiNinja拿五种代表性方法做对比X-Part先生成整体再分割重建配了两个不同的生成器TRELLIS.2和Hunyuan3D-2.1OmniPart先用2D图像分割再生成布局框AutoPartGen一个零件一个零件地自回归生成还有PartPacker同样用双体积打包思路但架构不同。在held-out测试集986个五种方法都能跑通的物体上KaiNinja在全部七项指标上都是第一名。跟表现最好的对照组Hunyuan3D-2.1X-Part相比KaiNinja在严格阈值下的整体F1分数F10.05W高了0.10零件F1分数F10.05P高了0.09整体的Chamfer距离衡量几何形状差异的指标越低越好降低了40%。*Chamfer距离一种衡量两个点云或形状之间几何相似程度的指标数值越小说明预测的形状和真实形状越接近。F-score这里用来衡量预测的表面点和真实表面点在某个距离阈值内匹配的比例阈值越严格比如0.05比0.1严格越能反映模型在细节和边界处的精确度。有个现象挺让人意外的宽松阈值下大家差距不大严格阈值下KaiNinja的优势明显放大这说明差距主要来自精细几何和边界的把控而不是大致轮廓对不对。速度上KaiNinja在一块H100显卡上生成一个带零件划分的物体大约需要24秒。作为对照那个先生成后分割的X-Part级联方案仅仅是导出一个69.2万顶点的网格文件就要花51.2秒生成本身反而只要11.1秒整个流程比KaiNinja慢了一个数量级。AutoPartGen因为要一个零件接一个零件地生成花费的时间是KaiNinja的三倍左右。最出乎意料的结果出现在整体不分零件质量的对比上。研究团队专门拿同一个TRELLIS.2骨干网络用同样的训练数据做了微调作为参照组结果这个微调后的整体生成模型严格F1分数是0.830。而KaiNinja同样从这个骨干网络出发、同样看过这批数据最后整体质量的F1分数达到了0.919比微调版本高出0.089失败率Chamfer距离超过0.1视为失败也从1.8%降到了0.7%。这个结果反过来说明了一件事双体积打包不只是一个方便切零件的容器它本身似乎是一种更适合表达这批物体的表示方式。研究团队还专门测试了模型在训练数据之外的泛化能力。他们从Sketchfab和GitHub上找了一批模型这些来源没有出现在训练数据里KaiNinja依然领先整体F1分数比第二名高0.075。在一个完全外部的基准测试集HY3D-Bench上整体几何质量KaiNinja依然是第一但零件匹配的指标上反而被Hunyuan3D-2.1X-Part超过了。研究团队对这个反转给出的解释挺坦诚的HY3D-Bench标注零件的粒度比KaiNinja训练数据用的粒度要粗KaiNinja习惯在接触面处就切开结果一把椅子被它拆出的零件数比基准标注的还多用Hungarian匹配算法打分的时候多出来的零件都会被算成错误。而先生成整体再交给专门分割器的方案分割粒度更容易调整去贴合某个具体基准的标注习惯。这提醒了我一件事一个模型在某个指标上输了未必是模型本身的问题很可能是评价标准和模型的行为逻辑不在一个频道上。还有哪些坑没填平论文里专门用一整节坦承了局限性这点我觉得挺难得的。最根本的限制来自二染色这个数学约束本身一旦物体的零件接触关系复杂到形成密集缠绕的结构就必须合并零件才能凑出一个二部图这时候的零件划分粒度会变粗。论文附录里甚至给出了数学论证三维空间里任意数量的区域理论上都可能两两相邻所以不存在任何固定数量的体积可以完全避免这个问题。生成过程本身还有三种典型的失败模式。第一种是欠分割模型把物体的绝大部分都塞进一个体积另一个体积只分到几个小零件结果本该独立的几个零件因为挤在同一个体积里而被粘连成一块。第二种是单体积坍缩某个体积干脆什么都没生成物体看起来整体没问题但压根没被拆开这种情况在1000个测试物体里出现了9次。第三种是重复体积两条流各自都生成了几乎一样的完整物体装配出来的结果里有两份几乎重合的几何被零件指标误判成很多碎小零件。论文对这几个失败模式的解释挺诚实预训练权重本来就是在完整未分割物体上学出来的没有任何机制天然要求它输出一个均衡的划分也没有机制主动阻止两条流生成同一块表面。互斥惩罚项能缓解这个问题但没法根治。如果从一开始就用打包好的双体积数据从零训练模型这个问题理论上能测试得更彻底但研究团队直言这需要的算力和数据量超出了这次工作的范围。写在后面读完这篇论文最让我意外的不是双体积打包这个设计本身PartPacker之前已经提出过类似思路。真正让我多想了一层的是那个整体质量反而变好了的结果。一般直觉里给一个模型增加约束这里是零件不能相互接触这个额外要求应该是在拿生成自由度换取结构性代价应该是整体质量打折扣。但KaiNinja的实验数据反过来了加了约束之后整体几何反而更准了。这让我想到一个可能的解释虽然论文没有直接下这个结论也许一坨完整物体对模型来说其实是个更难学的目标因为它把所有几何细节挤在一个连续的表面描述里边界模糊、层次不清而拆成两个各自内部无接触的体积反而让模型能更干净地表达每一部分的形状这种分而治之式的表示对生成任务本身也是一种简化。如果这个猜测站得住脚那可能意味着不少3D生成任务里表示方式选得对不对这件事比网络架构设计得多精巧更能决定上限。这和很多深度学习领域的经验其实是一致的但每次看到具体的实验数字印证这一点还是会觉得有点意思。论文里那个三种失败模式的坦白也值得琢磨。一个模型在没有明确监督信号要求均衡拆分的情况下会本能地倾向于走捷径把大部分东西塞进一个体积或者干脆两边生成同一份内容。这种懒惰行为其实在很多多分支、多头结构的模型里都会出现怎么设计激励机制让不同分支真正各司其职可能是个比看起来更普遍的问题。如果一个物体的所有零件都紧紧咬合在一起没有任何一种拆分方式能让它们互不接触那这个物体到底应不应该被拆开QAQ1KaiNinja是什么AKaiNinja是一个基于TRELLIS.2扩展的3D生成模型可以直接从一张图片生成带零件划分的3D模型每个零件都是独立可编辑的网格不需要额外的分割网络。Q2KaiNinja相比传统先生成后分割的方案有什么优势AKaiNinja速度更快生成一个物体只需约24秒比先生成整体再用分割网络切割的方案快一个数量级同时在整体形状精度和零件划分准确度上都表现更好。Q3KaiNinja的训练数据有什么特别之处A训练数据中包含了由LLM驱动的编程agent自动生成的3D资产Articraft数据集零件划分由生成程序的逻辑天然确定不存在人工标注可能带来的误差和模糊性这是该类数据首次被用于训练3D生成模型。
RELATED

相关推荐

2026 投票小程序怎么选?5 款免费投票工具横评,避开付费套路,评选活动快速搭建

2026 投票小程序怎么选?5 款免费投票工具横评,避开付费套路,评选活动快速搭建

投票链接发出去没人点、做到一半被提示"当前版本需付费解锁参赛人数"——这大概是学校和企业做投票评选最常踩的两个坑。2026 年做评选,难点不是选功能最多的,而是挑一个免费额度够用、打开快、家长和同事点开就能投的。下面把 5 款常用投票小…

📅 2026/10/16 11:38:54
东南亚Shopee/TikTok/Lazada多店铺ERP推荐,怎么选?

东南亚Shopee/TikTok/Lazada多店铺ERP推荐,怎么选?

很多卖家在ERP选型时会陷入 “功能越多越好” 的误区,但东南亚本土店业务复杂,不同平台规则、不同站点政策、不同订单类型差异很大。真正适合本土卖家的ERP,不只是能同步订单,还要能处理多平台商品统一管理、跨店库存防超卖、COD订…

📅 2026/10/16 11:38:54
角度调制、强度调制与孔径调制:光场操控的三种核心手段

角度调制、强度调制与孔径调制:光场操控的三种核心手段

很多人第一次接触“光线的角度调制”、“像面的强度调制”、“光场的孔径调制”这三个词时,第一反应是:这怕不是光学课本里三个独立的章节?我最初也这么以为,直到自己动手搭了一套尺寸测量系统,才意识到它们其实是描述…

📅 2026/10/16 11:33:53
MORE NEWS

更多资讯

📰

WuKongIM 移除旧版 v1 Runtime:Legacy 代码树清理实施计划与落地源码验证

即时通讯后端 【免费下载链接】WuKongIM More than just IM 不只是即时通讯(IM) 项目地址: https://gitcode.com/gh_mirrors/wu/WuKongIM 点击查看 免费下载 本文基于仓库中的实施计划文档 docs/superpowers/plans/2026-07-05-remove-legacy-code.md,并…

📰

Windows 怎么免费激活?用开源工具 MAS 3 分钟搞定 Windows 11 和 Office

Windows 怎么免费激活?用开源工具 MAS 3 分钟搞定 Windows 11 和 Office 【免费下载链接】Microsoft-Activation-Scripts Open-source Windows and Office activator featuring HWID, Ohook, TSforge, and Online KMS activation methods, along with advanced trou…

📰

Ansible 2.9.27生产环境实战:安装、Playbook与踩坑排查

简介:面向 CentOS 7 / RHEL 7 系统管理员与运维工程师,提供 Ansible 2.9.27 完整离线部署包,适合在无外网或内网隔离环境中快速搭建自动化运维平台。压缩包共 29 个文件,以 RPM 安装包为主,包含 ansible 主程序及 pyth…

📰

Java OCP认证备考:从代码题到Stream、并发和模块化的实战攻略

简介:面向备战Oracle Java SE 11开发人员认证(1Z0-819)的开发者,这份轻量级示例项目资源以实际代码演示var局部变量类型推断、Stream API扩展、Map接口改进、异常处理与并发编程等认证核心知识点。压缩包共22个文件,包…

📰

多线程与线程池实战:Java多用户Socket通信服务端设计

1. 从单用户到多用户:Socket通信的瓶颈到底在哪 很多刚接触网络编程的朋友,第一个能跑通的Demo大概率是"客户端发一句,服务端回一句"的单线程模型。代码不到五十行,跑起来看到控制台打印出对方发来的消息,成…

📰

eCLIP-Seq技术全解析:从UMI去重到Input对照的RBP结合位点分析方法

文献积累系列写到第7篇,这次想好好拆一下eCLIP-Seq。eCLIP-Seq不是一个“CLIP的增强版”就能带过的概念,它把实验流程、测序策略和分析范式一起改了,并且靠一套几十个RNA结合蛋白(RBP)上的可重复实验证明了这套流程可以…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬