hcl14/omnipart 🔢🖼️✓📝 → ❓
About
OmniPart: Part-Aware 3D Generation with Semantic Decoupling and Structural Cohesion

Example Output
Output
Performance Metrics
22.03s
Prediction Time
22.04s
Total Time
All Input Parameters
{ "seed": 42, "image": "https://replicate.delivery/pbxt/NUazCYmyuBsDfbfZiu5W2cBbCfB05tBAIjTTN7WRVr1uscfr/ComfyUI_01005_80.jpg", "contrast": 5, "brightness": 0.18, "generate_3d": true, "merge_input": "3,10;3,2;9,4;0,6;9,0;8,5;1,7;1,11;8,1", "cfg_strength": 7.5, "size_threshold": 2000 }
Input Parameters
- seed
- Generation seed
- image (required)
- Input image
- contrast
- Final contrast stretch around mid-grey (texture post-processing)
- brightness
- Final global brightness gain (texture post-processing)
- generate_3d
- Run full 3-D pipeline
- merge_input
- Merge groups, e.g. '0,1;3,4' (leave blank for none)
- cfg_strength
- CFG strength for Part-Synthesis
- size_threshold
- Minimum segment size (pixels)
Output Schema
- bbox_mesh
- Bbox Mesh
- merged_seg
- Merged Seg
- whole_mesh
- Whole Mesh
- combined_gs
- Combined Gs
- exploded_gs
- Exploded Gs
- initial_seg
- Initial Seg
- exploded_mesh
- Exploded Mesh
- pre_merge_vis
- Pre Merge Vis
Example Execution Logs
Generating raw SAM masks without post-processing... Skipping mask 0, background ratio: 1.00 Assigned mask 1 with area 26633 to group 0 Assigned mask 2 with area 26003 to group 1 Assigned mask 3 with area 20851 to group 2 Assigned mask 4 with area 9424 to group 3 Assigned mask 5 with area 8933 to group 4 Assigned mask 6 with area 3190 to group 5 Assigned mask 7 with area 3138 to group 6 Assigned mask 8 with area 3123 to group 7 Assigned mask 9 with area 2559 to group 8 Assigned mask 10 with area 2534 to group 9 Assigned mask 11 with area 2528 to group 10 Assigned mask 12 with area 2514 to group 11 Assigned mask 13 with area 2502 to group 12 Assigned mask 14 with area 2226 to group 13 Assigned mask 15 with area 2161 to group 14 Skipping mask 16, area too small: 1612 < 2000 Skipping mask 17, area too small: 1531 < 2000 Skipping mask 18, area too small: 1489 < 2000 Skipping mask 19, area too small: 1463 < 2000 Skipping mask 20, area too small: 1348 < 2000 Skipping mask 21, area too small: 1196 < 2000 Skipping mask 22, area too small: 1193 < 2000 Skipping mask 23, area too small: 1164 < 2000 Skipping mask 24, area too small: 1163 < 2000 Skipping mask 25, area too small: 1132 < 2000 Skipping mask 26, area too small: 938 < 2000 Skipping mask 27, area too small: 908 < 2000 Skipping mask 28, area too small: 872 < 2000 Skipping mask 29, area too small: 870 < 2000 Skipping mask 30, area too small: 658 < 2000 Skipping mask 31, area too small: 623 < 2000 Skipping mask 32, area too small: 600 < 2000 Skipping mask 33, area too small: 578 < 2000 Skipping mask 34, area too small: 556 < 2000 Skipping mask 35, area too small: 552 < 2000 Skipping mask 36, area too small: 464 < 2000 Skipping mask 37, area too small: 394 < 2000 Skipping mask 38, area too small: 315 < 2000 Skipping mask 39, area too small: 285 < 2000 Skipping mask 40, area too small: 272 < 2000 Skipping mask 41, area too small: 257 < 2000 Skipping mask 42, area too small: 256 < 2000 Skipping mask 43, area too small: 252 < 2000 Skipping mask 44, area too small: 175 < 2000 Skipping mask 45, area too small: 174 < 2000 Skipping mask 46, area too small: 166 < 2000 Skipping mask 47, area too small: 165 < 2000 Skipping mask 48, area too small: 155 < 2000 Skipping mask 49, area too small: 118 < 2000 Skipping mask 50, area too small: 116 < 2000 Skipping mask 51, area too small: 110 < 2000 Skipping mask 52, area too small: 60 < 2000 Skipping mask 53, area too small: 26 < 2000 Skipping mask 54, area too small: 25 < 2000 Skipping mask 55, area too small: 18 < 2000 Splitting disconnected parts in initial segmentation... Part 0 has 4 disconnected regions, splitting... Skipping small disconnected region (1 pixels) Skipping small disconnected region (8 pixels) Skipping small disconnected region (2 pixels) Part 1 has 4 disconnected regions, splitting... Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Part 2 has 5 disconnected regions, splitting... Skipping small disconnected region (5 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Part 5 has 46 disconnected regions, splitting... Skipping small disconnected region (5 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (2 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (4 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (2 pixels) Skipping small disconnected region (2 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (2 pixels) Skipping small disconnected region (5 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (3 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (4 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (2 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Part 7 has 13 disconnected regions, splitting... Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (4 pixels) Skipping small disconnected region (8 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Part 8 has 13 disconnected regions, splitting... Skipping small disconnected region (2 pixels) Skipping small disconnected region (11 pixels) Skipping small disconnected region (7 pixels) Skipping small disconnected region (2 pixels) Skipping small disconnected region (2 pixels) Skipping small disconnected region (2 pixels) Skipping small disconnected region (2 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Part 9 has 13 disconnected regions, splitting... Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (17 pixels) Skipping small disconnected region (6 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (2 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Part 10 has 12 disconnected regions, splitting... Skipping small disconnected region (2 pixels) Skipping small disconnected region (3 pixels) Skipping small disconnected region (3 pixels) Skipping small disconnected region (2 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Skipping small disconnected region (1 pixels) Part 12 has 3 disconnected regions, splitting... Skipping small disconnected region (3 pixels) Skipping small disconnected region (4 pixels) Split disconnected parts: original 15 parts -> 12 connected parts After early splitting, now have 12 regions (excluding background) Checking for undetected parts using RGBA image... Image has alpha channel, checking for undetected parts... Saved mask segments visualization to /src/tmp/20250807070827232083/tmprv1wxz_jComfyUI_01005_80_mask_segments_2.png No parts needed splitting - all parts are already connected After splitting disconnected parts, now have 12 regions (excluding background) Labeling region 0, area: 12044 pixels Labeling region 1, area: 11955 pixels Labeling region 2, area: 15634 pixels Labeling region 3, area: 3004 pixels Labeling region 4, area: 9424 pixels Labeling region 5, area: 8933 pixels Labeling region 6, area: 3138 pixels Labeling region 7, area: 950 pixels Labeling region 8, area: 2514 pixels Labeling region 9, area: 2495 pixels Labeling region 10, area: 2226 pixels Labeling region 11, area: 2161 pixels Pre-split segmentation (before disconnected parts handling) saved to /src/tmp/20250807070827232083/tmprv1wxz_jComfyUI_01005_80_pre_split.png Saved mask segments visualization to /src/tmp/20250807070827232083/tmprv1wxz_jComfyUI_01005_80_mask_segments_2.png Original segment IDs (used for merging): [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] Valid merge group: [3, 10] (missing: none) Valid merge group: [3, 2] (missing: none) Valid merge group: [9, 4] (missing: none) Valid merge group: [0, 6] (missing: none) Valid merge group: [9, 0] (missing: none) Valid merge group: [8, 5] (missing: none) Valid merge group: [1, 7] (missing: none) Valid merge group: [1, 11] (missing: none) Valid merge group: [8, 1] (missing: none) Using merge groups: [[3, 10], [3, 2], [9, 4], [0, 6], [9, 0], [8, 5], [1, 7], [1, 11], [8, 1]] Checking for undetected parts using RGBA image... Image has alpha channel, checking for undetected parts... Including original ID 3 (3004 pixels) Including original ID 10 (2226 pixels) Merging 5230 pixels to ID 3 Including original ID 3 (5230 pixels) Including original ID 2 (15634 pixels) Merging 20864 pixels to ID 3 Including original ID 9 (2495 pixels) Including original ID 4 (9424 pixels) Merging 11919 pixels to ID 9 Including original ID 0 (12044 pixels) Including original ID 6 (3138 pixels) Merging 15182 pixels to ID 0 Including original ID 9 (11919 pixels) Including original ID 0 (15182 pixels) Merging 27101 pixels to ID 9 Including original ID 8 (2514 pixels) Including original ID 5 (8933 pixels) Merging 11447 pixels to ID 8 Including original ID 1 (11955 pixels) Including original ID 7 (950 pixels) Merging 12905 pixels to ID 1 Including original ID 1 (12905 pixels) Including original ID 11 (2161 pixels) Merging 15066 pixels to ID 1 Including original ID 8 (11447 pixels) Including original ID 1 (15066 pixels) Merging 26513 pixels to ID 8 ID reassignment complete: 3 groups now have sequential IDs from 0 to 2 Merging complete, now have 3 regions (excluding background) Labeling region 0, area: 20864 pixels Labeling region 1, area: 26513 pixels Labeling region 2, area: 27101 pixels New segment IDs (after merging): [0, 1, 2] Cleaned edges for 3 segments Saved mask segments visualization to /src/tmp/20250807070827232083/tmprv1wxz_jComfyUI_01005_80_mask_segments_3.png mask done Sampling: 0%| | 0/25 [00:00<?, ?it/s] Sampling: 8%|▊ | 2/25 [00:00<00:01, 13.65it/s] Sampling: 16%|█▌ | 4/25 [00:00<00:01, 12.29it/s] Sampling: 24%|██▍ | 6/25 [00:00<00:01, 11.91it/s] Sampling: 32%|███▏ | 8/25 [00:00<00:01, 11.72it/s] Sampling: 40%|████ | 10/25 [00:00<00:01, 11.63it/s] Sampling: 48%|████▊ | 12/25 [00:01<00:01, 11.56it/s] Sampling: 56%|█████▌ | 14/25 [00:01<00:00, 11.53it/s] Sampling: 64%|██████▍ | 16/25 [00:01<00:00, 11.50it/s] Sampling: 72%|███████▏ | 18/25 [00:01<00:00, 11.48it/s] Sampling: 80%|████████ | 20/25 [00:01<00:00, 12.41it/s] Sampling: 92%|█████████▏| 23/25 [00:01<00:00, 15.17it/s] Sampling: 100%|██████████| 25/25 [00:01<00:00, 13.20it/s] voxel done [INFO] Voxel coordinates saved [INFO] BboxGen output saved part synthesis done entering get_slat entered get_slat sampling3 Sampling: 0%| | 0/25 [00:00<?, ?it/s] Sampling: 4%|▍ | 1/25 [00:00<00:04, 4.94it/s] Sampling: 8%|▊ | 2/25 [00:00<00:04, 4.99it/s] Sampling: 12%|█▏ | 3/25 [00:00<00:04, 5.01it/s] Sampling: 16%|█▌ | 4/25 [00:00<00:04, 5.03it/s] Sampling: 20%|██ | 5/25 [00:00<00:03, 5.03it/s] Sampling: 24%|██▍ | 6/25 [00:01<00:03, 5.03it/s] Sampling: 28%|██▊ | 7/25 [00:01<00:03, 5.05it/s] Sampling: 32%|███▏ | 8/25 [00:01<00:03, 5.06it/s] Sampling: 36%|███▌ | 9/25 [00:01<00:03, 5.05it/s] Sampling: 40%|████ | 10/25 [00:01<00:02, 5.06it/s] Sampling: 44%|████▍ | 11/25 [00:02<00:02, 5.06it/s] Sampling: 48%|████▊ | 12/25 [00:02<00:02, 5.07it/s] Sampling: 52%|█████▏ | 13/25 [00:02<00:02, 5.08it/s] Sampling: 56%|█████▌ | 14/25 [00:02<00:02, 5.08it/s] Sampling: 60%|██████ | 15/25 [00:02<00:01, 5.07it/s] Sampling: 64%|██████▍ | 16/25 [00:03<00:01, 5.07it/s] Sampling: 68%|██████▊ | 17/25 [00:03<00:01, 5.05it/s] Sampling: 72%|███████▏ | 18/25 [00:03<00:01, 5.04it/s] Sampling: 76%|███████▌ | 19/25 [00:03<00:01, 5.04it/s] Sampling: 84%|████████▍ | 21/25 [00:03<00:00, 6.54it/s] Sampling: 92%|█████████▏| 23/25 [00:04<00:00, 7.60it/s] Sampling: 100%|██████████| 25/25 [00:04<00:00, 8.34it/s] Sampling: 100%|██████████| 25/25 [00:04<00:00, 5.73it/s] Warning: Feature dimensions mismatch. Using 8 dimensions for normalization decoding3 Discarded 0/12288 points (0.00%) Discarded 2067/5857 points (35.29%) Discarded 1886/6142 points (30.71%) Discarded 1883/6146 points (30.64%) slat done Before save_parts_outputs Before postprocess: 68390 vertices, 136752 faces Rasterizing: 0%| | 0/1000 [00:00<?, ?it/s] Rasterizing: 12%|█▏ | 116/1000 [00:00<00:00, 1158.22it/s] Rasterizing: 24%|██▍ | 245/1000 [00:00<00:00, 1232.88it/s] Rasterizing: 38%|███▊ | 380/1000 [00:00<00:00, 1285.64it/s] Rasterizing: 52%|█████▏ | 517/1000 [00:00<00:00, 1316.11it/s] Rasterizing: 65%|██████▌ | 654/1000 [00:00<00:00, 1333.85it/s] Rasterizing: 79%|███████▉ | 790/1000 [00:00<00:00, 1340.91it/s] Rasterizing: 92%|█████████▎| 925/1000 [00:00<00:00, 1328.55it/s] Rasterizing: 100%|██████████| 1000/1000 [00:00<00:00, 1303.23it/s] Found 10440 invisible faces Dual graph: 205125 edges Mincut solved, start checking the cut Removed 10461 faces by mincut INFO- Loaded 63154 vertices and 126291 faces. 0% done 5% done 11% done 16% done 22% done 27% done 33% done 38% done 44% done 50% done 55% done 61% done 66% done 72% done 77% done 83% done 88% done 94% done 100% done After remove invisible faces: 63154 vertices, 126320 faces Before postprocess: 74236 vertices, 148444 faces Rasterizing: 0%| | 0/1000 [00:00<?, ?it/s] Rasterizing: 11%|█▏ | 114/1000 [00:00<00:00, 1132.51it/s] Rasterizing: 24%|██▎ | 236/1000 [00:00<00:00, 1180.66it/s] Rasterizing: 36%|███▌ | 359/1000 [00:00<00:00, 1200.16it/s] Rasterizing: 48%|████▊ | 484/1000 [00:00<00:00, 1217.87it/s] Rasterizing: 61%|██████ | 610/1000 [00:00<00:00, 1231.24it/s] Rasterizing: 74%|███████▎ | 736/1000 [00:00<00:00, 1239.44it/s] Rasterizing: 86%|████████▌ | 861/1000 [00:00<00:00, 1242.80it/s] Rasterizing: 99%|█████████▊| 986/1000 [00:00<00:00, 1226.48it/s] Rasterizing: 100%|██████████| 1000/1000 [00:00<00:00, 1218.15it/s] Found 2514 invisible faces Dual graph: 222666 edges Mincut solved, start checking the cut Removed 4156 faces by mincut INFO- Loaded 72213 vertices and 144288 faces. 0% done 5% done 10% done 15% done 20% done 25% done 30% done 35% done 40% done 45% done 50% done 55% done 60% done 65% done 70% done 75% done 80% done 85% done 90% done 95% done 100% done After remove invisible faces: 72432 vertices, 144860 faces Before postprocess: 75032 vertices, 150048 faces Rasterizing: 0%| | 0/1000 [00:00<?, ?it/s] Rasterizing: 11%|█▏ | 114/1000 [00:00<00:00, 1135.57it/s] Rasterizing: 24%|██▎ | 235/1000 [00:00<00:00, 1175.14it/s] Rasterizing: 36%|███▌ | 358/1000 [00:00<00:00, 1199.14it/s] Rasterizing: 48%|████▊ | 482/1000 [00:00<00:00, 1213.04it/s] Rasterizing: 61%|██████ | 607/1000 [00:00<00:00, 1223.57it/s] Rasterizing: 73%|███████▎ | 732/1000 [00:00<00:00, 1229.66it/s] Rasterizing: 86%|████████▌ | 856/1000 [00:00<00:00, 1230.41it/s] Rasterizing: 98%|█████████▊| 980/1000 [00:00<00:00, 1216.08it/s] Rasterizing: 100%|██████████| 1000/1000 [00:00<00:00, 1209.34it/s] Found 2919 invisible faces Dual graph: 225072 edges Mincut solved, start checking the cut Removed 5804 faces by mincut INFO- Loaded 72205 vertices and 144244 faces. 0% done 6% done 13% done 20% done 26% done 33% done 40% done 46% done 53% done 60% done 66% done 73% done 80% done 86% done 93% done 100% done After remove invisible faces: 72669 vertices, 145338 faces done parts done 1st ply done 2nd ply After save_parts_outputs Merging parts: 0%| | 0/3 [00:00<?, ?it/s] Merging parts: 100%|██████████| 3/3 [00:00<00:00, 40.26it/s] [INFO] PartSynthesis output saved [EXPLODE_MESH] Starting mesh explosion with scale 0.3 [EXPLODE_MESH] Processing 3 parts [EXPLODE_MESH] Part geometry_0: center = [ 0.00034105 0.00651239 -0.00163417] [EXPLODE_MESH] Part geometry_1: center = [-0.24468086 0.12840271 -0.0004098 ] [EXPLODE_MESH] Part geometry_2: center = [ 2.44510905e-01 1.27667406e-01 -2.76175755e-05] [EXPLODE_MESH] Global center: [ 5.70299438e-05 8.75275011e-02 -6.90530452e-04] [EXPLODE_MESH] Part geometry_0: moved by 0.3000 [EXPLODE_MESH] Part geometry_1: moved by 0.3000 [EXPLODE_MESH] Part geometry_2: moved by 0.3000 [EXPLODE_MESH] Mesh explosion complete
Version Details
- Version ID
036de120ef9211a6de00b742be8ebf2f467aa6d79f0f7119e37f609db9effe96
- Version Created
- October 20, 2025