{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2609-15639","title":"SAM3D-Part: Interactive Part Selection and Generation from 3D Objects","arxiv_id":"2609.15639","date":"2026-09-14","proceeding":null,"authors":["Jiahao Chang","Dong Du","Wanhu Sun","Yujian Zheng","Chuanyu Pan","Bowen Zhao","Chongjie Ye","Yuanming Hu","Xiaoguang Han"],"abstract":"Part-level control is essential for modern 3D asset creation, where objects are frequently edited, reused, animated, or fabricated through their individual components. In many such workflows, users need only several specific components rather than a complete object decomposition. However, existing 3D generation methods produce all parts regardless of user intent, while promptable 3D segmentation methods typically output partial surfaces instead of reusable complete meshes. In addition, image-conditioned part generators further struggle to preserve hidden geometry and accurate placement without directly conditioning on the source mesh. To address these problems, we present SAM3D-Part, a prompt-driven framework for selective part generation from input 3D object meshes. Given a source mesh and a part prompt, SAM3D-Part first encodes the source geometry into compact mesh features and aligns them with the rendered image, selective mask, and point-map observations via pixel-wise channel fusion. The fused representation conditions a feed-forward generative model to produce only the queried component as a completed mesh. To place the generated part back into the source coordinate frame, SAM3D-Part predicts dense per-voxel correspondences and estimates the part transformation from distributed spatial evidence rather than a single global pose code. For sequential multi-part queries, previously generated parts are stored in a part cache and reused as contextual constraints, reducing conflicts among independently requested components. Extensive experiments and ablations demonstrate that SAM3D-Part can significantly improve source alignment, reduce conditioning cost, and enable consistent selective part generation, achieving state-of-the-art. Code and weights will be available at https://github.com/Jiahao620/sam3d-part.","url_abs":"https://arxiv.org/abs/2609.15639","url_pdf":"https://arxiv.org/pdf/2609.15639","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2609.15639","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2609.15639"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/Jiahao620/sam3d-part","reach":{"status":"ok","spdx":"NOASSERTION"}}],"summary":{"ran_draft_wrong":1,"unverified":12},"by_repo_kind":{"found_in_text":{"samples":13,"ran":1,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":13,"samples":[{"code_sha256_prefix":"49ac4006bc03e709","entry":"generate_dense_grid_points","repo":"Jiahao620/sam3d-part","repo_kind":"found_in_text","path":"sam3d_objects/model/autoencoders/volume_decoders.py","file_url":"https://github.com/Jiahao620/sam3d-part/blob/HEAD/sam3d_objects/model/autoencoders/volume_decoders.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"49ac4006bc03e709"}},{"code_sha256_prefix":"98b1d1e3d0a27386","entry":"add_prefix_state_dict_fn","repo":"Jiahao620/sam3d-part","repo_kind":"found_in_text","path":"sam3d_objects/model/io.py","file_url":"https://github.com/Jiahao620/sam3d-part/blob/HEAD/sam3d_objects/model/io.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"98b1d1e3d0a27386"}},{"code_sha256_prefix":"e94ad5080c3c2800","entry":"center_vertices","repo":"Jiahao620/sam3d-part","repo_kind":"found_in_text","path":"sam3d_objects/model/autoencoders/surface_extractors.py","file_url":"https://github.com/Jiahao620/sam3d-part/blob/HEAD/sam3d_objects/model/autoencoders/surface_extractors.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"e94ad5080c3c2800"}},{"code_sha256_prefix":"6fffdf55883d9e88","entry":"expand_latent_mapping_channels","repo":"Jiahao620/sam3d-part","repo_kind":"found_in_text","path":"train_sam3d_part_ss.py","file_url":"https://github.com/Jiahao620/sam3d-part/blob/HEAD/train_sam3d_part_ss.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"6fffdf55883d9e88"}},{"code_sha256_prefix":"a9ce9c3c241059dc","entry":"extract_near_surface_volume_fn","repo":"Jiahao620/sam3d-part","repo_kind":"found_in_text","path":"sam3d_objects/model/autoencoders/volume_decoders.py","file_url":"https://github.com/Jiahao620/sam3d-part/blob/HEAD/sam3d_objects/model/autoencoders/volume_decoders.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"a9ce9c3c241059dc"}},{"code_sha256_prefix":"7f66719568fc567b","entry":"fps","repo":"Jiahao620/sam3d-part","repo_kind":"found_in_text","path":"sam3d_objects/model/autoencoders/attention_blocks.py","file_url":"https://github.com/Jiahao620/sam3d-part/blob/HEAD/sam3d_objects/model/autoencoders/attention_blocks.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"7f66719568fc567b"}},{"code_sha256_prefix":"cd0ea1804fbcab35","entry":"full_class_name","repo":"Jiahao620/sam3d-part","repo_kind":"found_in_text","path":"sam3d_objects/config/utils.py","file_url":"https://github.com/Jiahao620/sam3d-part/blob/HEAD/sam3d_objects/config/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"cd0ea1804fbcab35"}},{"code_sha256_prefix":"6948f73bf610da54","entry":"full_instance_name","repo":"Jiahao620/sam3d-part","repo_kind":"found_in_text","path":"sam3d_objects/config/utils.py","file_url":"https://github.com/Jiahao620/sam3d-part/blob/HEAD/sam3d_objects/config/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"6948f73bf610da54"}},{"code_sha256_prefix":"3259a540408f2c1c","entry":"get_sparse_valid_voxels","repo":"Jiahao620/sam3d-part","repo_kind":"found_in_text","path":"sam3d_objects/model/autoencoders/surface_extractors.py","file_url":"https://github.com/Jiahao620/sam3d-part/blob/HEAD/sam3d_objects/model/autoencoders/surface_extractors.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"3259a540408f2c1c"}},{"code_sha256_prefix":"8c3bf2720b3a4c47","entry":"locate","repo":"Jiahao620/sam3d-part","repo_kind":"found_in_text","path":"sam3d_objects/config/utils.py","file_url":"https://github.com/Jiahao620/sam3d-part/blob/HEAD/sam3d_objects/config/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"8c3bf2720b3a4c47"}},{"code_sha256_prefix":"6e91c694e8f27b9e","entry":"normalized_gaussian","repo":"Jiahao620/sam3d-part","repo_kind":"found_in_text","path":"notebook/inference_part.py","file_url":"https://github.com/Jiahao620/sam3d-part/blob/HEAD/notebook/inference_part.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"6e91c694e8f27b9e"}},{"code_sha256_prefix":"41670397f7865f86","entry":"ready_gaussian_for_video_rendering","repo":"Jiahao620/sam3d-part","repo_kind":"found_in_text","path":"notebook/inference_part.py","file_url":"https://github.com/Jiahao620/sam3d-part/blob/HEAD/notebook/inference_part.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"41670397f7865f86"}},{"code_sha256_prefix":"a19625c9cd72f939","entry":"remove_prefix_state_dict_fn","repo":"Jiahao620/sam3d-part","repo_kind":"found_in_text","path":"sam3d_objects/model/io.py","file_url":"https://github.com/Jiahao620/sam3d-part/blob/HEAD/sam3d_objects/model/io.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"a19625c9cd72f939"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.CV","source":"arxiv_backlog_21d_20260915.json"},"syntology_extracted_results":{"kind":"leaderboard_placements","source":"Syntology's leaderboard-shaped extractor over the paper's own arXiv-HTML tables: a model pointed at a cell, the number was read from that cell and checked against the board's metric, dataset, split and scale, and an independent check accepted the entry; not reviewed by the paper's authors or the archive's editors","extractor_model":"global.anthropic.claude-sonnet-4-5-20250929-v1:0","verifier_model":null,"prompt_sha":"fa63d4bb9d755694","coverage":{"sentence":"Syntology has checked 6,264 of the 9,581 papers on this site that are newer than the archive; results from the others appear after they are checked.","papers_newer_than_archive":9581,"papers_checked":6264},"entries":[],"not_placed":{"boards":0,"rejected_by_independent_check":0,"refused_by_a_rule":0,"check_did_not_answer":0,"proposed_without_a_cell":0,"declined_by_site":0}}}