目录P3-SAMPartPacker 效果怎么样测试结果环境安装Materialize magicsHoloPart依赖项安装P3_SAMnomad调整PartCrafterSnapSplit 自动连接件SnapSplitAutoP3-SAMtencent/Hunyuan3D-Omni和tencent/Hunyuan3D-Part。PartPacker 效果怎么样图片生成3d部件https://github.com/NVlabs/PartPacker测试结果环境安装Materialize magicsHoloPart达不到工业量产效果https://www.bilibili.com/video/BV1dFdoYvESz/?spm_id_from333.337.search-card.all.clickvd_sourced4dc8f82f62c00f6ff1db7a1047e538f依赖项安装pip install diso --no-build-isolationP3_SAMHunyuan3D-Part/P3-SAM at main · Tencent-Hunyuan/Hunyuan3D-Partnomad调整tripostudio.comPartCrafter可以拆分但是不能生成自动连接件PartCrafter是一个开创性的 AI 算法能够将一张普通的 2D 图片在几十秒内自动“拆解”成一个由多个独立、可编辑的 3D 部件组成的完整模型https://github.com/wgsxm/PartCrafterPartCrafter 的显存比较亲民推荐配置为 8GB 显存wgsxm/PartCrafter briaai/RMBG-1.4pip install torch-cluster -f https://data.pyg.org/whl/torch-2.5.0cu124.htmlpython scripts/inference_partcrafter.py \ --image_path assets/images/np3_2f6ab901c5a84ed6bbdf85a67b22a2ee.png \ --num_parts 3 --tag robot --renderSnapSplit 自动连接件import bpy def add_connectors_to_pairs(pairs, connector_typeCYLINDRICAL_PIN): 批量为多对部件添加连接件 pairs: 部件名称对列表如 [(part1, part2), (part2, part3)] connector_type: CYLINDRICAL_PIN, SNAP_PIN, SNAP_PEG, PIN bpy.ops.object.select_all(actionDESELECT) for part_a, part_b in pairs: obj_a bpy.data.objects.get(part_a) obj_b bpy.data.objects.get(part_b) if obj_a and obj_b: # 选中两个部件 obj_a.select_set(True) obj_b.select_set(True) bpy.context.view_layer.objects.active obj_b # 设置连接件参数需根据实际情况调整 bpy.context.scene.snapsplit_connector_type connector_type bpy.context.scene.snapsplit_material_tolerance PLA # 材料预设 # 执行生成具体算子名可能略有差异 bpy.ops.object.snapsplit_add_connectors() print(f✅ 已添加连接件: {part_a} - {part_b}) else: print(f❌ 找不到部件: {part_a} 或 {part_b}) # 使用示例 - 为你的5个部件配对 pairs_to_connect [ (torso, left_arm), (torso, right_arm), (torso, head), (torso, left_leg), (torso, right_leg) ] add_connectors_to_pairs(pairs_to_connect, SNAP_PIN)SnapSplitAutoimport bpy import os class SnapSplitAuto: SnapSplit自动化操作类 staticmethod def split_model(obj_name, axisX, position0.0): 沿指定轴分割模型 obj bpy.data.objects.get(obj_name) if not obj: return False bpy.ops.object.select_all(actionDESELECT) obj.select_set(True) bpy.context.view_layer.objects.active obj # 设置分割参数具体属性名请参考插件源码 bpy.context.scene.snapsplit_split_axis axis bpy.context.scene.snapsplit_split_position position bpy.ops.object.snapsplit_planar_split() return True staticmethod def add_connectors(obj_a_name, obj_b_name, conn_typeSNAP_PIN, materialPLA, grid_size(2, 1)): 为两个部件添加连接件 obj_a bpy.data.objects.get(obj_a_name) obj_b bpy.data.objects.get(obj_b_name) if not obj_a or not obj_b: return False bpy.ops.object.select_all(actionDESELECT) obj_a.select_set(True) obj_b.select_set(True) bpy.context.view_layer.objects.active obj_b # 设置参数 scene bpy.context.scene scene.snapsplit_connector_type conn_type scene.snapsplit_material_tolerance material scene.snapsplit_connector_grid True scene.snapsplit_connector_grid_rows grid_size[0] scene.snapsplit_connector_grid_cols grid_size[1] bpy.ops.object.snapsplit_add_connectors() return True staticmethod def batch_process(parts_config, output_dir): 批量处理分割多个部件并添加连接件 # parts_config: [{name: torso, split_axis: X}, ...] for config in parts_config: SnapSplitAuto.split_model(config[name], config.get(axis, X), config.get(pos, 0.0)) # 添加连接件配对 for pair in parts_config.get(pairs, []): SnapSplitAuto.add_connectors(pair[0], pair[1]) # 执行自动化流程 if __name__ __main__: # 假设场景中已有5个独立部件 pairs [ (base, arm_left), (base, arm_right), (base, leg_left), (base, leg_right), (base, head) ] for a, b in pairs: SnapSplitAuto.add_connectors(a, b, SNAP_PIN, PLA, (2, 1)) print(✅ 所有连接件生成完成)
2026年3D自动拆件与部件拆分ai算法盘点
发布时间:2026/6/9 12:11:15
目录P3-SAMPartPacker 效果怎么样测试结果环境安装Materialize magicsHoloPart依赖项安装P3_SAMnomad调整PartCrafterSnapSplit 自动连接件SnapSplitAutoP3-SAMtencent/Hunyuan3D-Omni和tencent/Hunyuan3D-Part。PartPacker 效果怎么样图片生成3d部件https://github.com/NVlabs/PartPacker测试结果环境安装Materialize magicsHoloPart达不到工业量产效果https://www.bilibili.com/video/BV1dFdoYvESz/?spm_id_from333.337.search-card.all.clickvd_sourced4dc8f82f62c00f6ff1db7a1047e538f依赖项安装pip install diso --no-build-isolationP3_SAMHunyuan3D-Part/P3-SAM at main · Tencent-Hunyuan/Hunyuan3D-Partnomad调整tripostudio.comPartCrafter可以拆分但是不能生成自动连接件PartCrafter是一个开创性的 AI 算法能够将一张普通的 2D 图片在几十秒内自动“拆解”成一个由多个独立、可编辑的 3D 部件组成的完整模型https://github.com/wgsxm/PartCrafterPartCrafter 的显存比较亲民推荐配置为 8GB 显存wgsxm/PartCrafter briaai/RMBG-1.4pip install torch-cluster -f https://data.pyg.org/whl/torch-2.5.0cu124.htmlpython scripts/inference_partcrafter.py \ --image_path assets/images/np3_2f6ab901c5a84ed6bbdf85a67b22a2ee.png \ --num_parts 3 --tag robot --renderSnapSplit 自动连接件import bpy def add_connectors_to_pairs(pairs, connector_typeCYLINDRICAL_PIN): 批量为多对部件添加连接件 pairs: 部件名称对列表如 [(part1, part2), (part2, part3)] connector_type: CYLINDRICAL_PIN, SNAP_PIN, SNAP_PEG, PIN bpy.ops.object.select_all(actionDESELECT) for part_a, part_b in pairs: obj_a bpy.data.objects.get(part_a) obj_b bpy.data.objects.get(part_b) if obj_a and obj_b: # 选中两个部件 obj_a.select_set(True) obj_b.select_set(True) bpy.context.view_layer.objects.active obj_b # 设置连接件参数需根据实际情况调整 bpy.context.scene.snapsplit_connector_type connector_type bpy.context.scene.snapsplit_material_tolerance PLA # 材料预设 # 执行生成具体算子名可能略有差异 bpy.ops.object.snapsplit_add_connectors() print(f✅ 已添加连接件: {part_a} - {part_b}) else: print(f❌ 找不到部件: {part_a} 或 {part_b}) # 使用示例 - 为你的5个部件配对 pairs_to_connect [ (torso, left_arm), (torso, right_arm), (torso, head), (torso, left_leg), (torso, right_leg) ] add_connectors_to_pairs(pairs_to_connect, SNAP_PIN)SnapSplitAutoimport bpy import os class SnapSplitAuto: SnapSplit自动化操作类 staticmethod def split_model(obj_name, axisX, position0.0): 沿指定轴分割模型 obj bpy.data.objects.get(obj_name) if not obj: return False bpy.ops.object.select_all(actionDESELECT) obj.select_set(True) bpy.context.view_layer.objects.active obj # 设置分割参数具体属性名请参考插件源码 bpy.context.scene.snapsplit_split_axis axis bpy.context.scene.snapsplit_split_position position bpy.ops.object.snapsplit_planar_split() return True staticmethod def add_connectors(obj_a_name, obj_b_name, conn_typeSNAP_PIN, materialPLA, grid_size(2, 1)): 为两个部件添加连接件 obj_a bpy.data.objects.get(obj_a_name) obj_b bpy.data.objects.get(obj_b_name) if not obj_a or not obj_b: return False bpy.ops.object.select_all(actionDESELECT) obj_a.select_set(True) obj_b.select_set(True) bpy.context.view_layer.objects.active obj_b # 设置参数 scene bpy.context.scene scene.snapsplit_connector_type conn_type scene.snapsplit_material_tolerance material scene.snapsplit_connector_grid True scene.snapsplit_connector_grid_rows grid_size[0] scene.snapsplit_connector_grid_cols grid_size[1] bpy.ops.object.snapsplit_add_connectors() return True staticmethod def batch_process(parts_config, output_dir): 批量处理分割多个部件并添加连接件 # parts_config: [{name: torso, split_axis: X}, ...] for config in parts_config: SnapSplitAuto.split_model(config[name], config.get(axis, X), config.get(pos, 0.0)) # 添加连接件配对 for pair in parts_config.get(pairs, []): SnapSplitAuto.add_connectors(pair[0], pair[1]) # 执行自动化流程 if __name__ __main__: # 假设场景中已有5个独立部件 pairs [ (base, arm_left), (base, arm_right), (base, leg_left), (base, leg_right), (base, head) ] for a, b in pairs: SnapSplitAuto.add_connectors(a, b, SNAP_PIN, PLA, (2, 1)) print(✅ 所有连接件生成完成)