{"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/ucsg-net-unsupervised-discovering-of","title":"UCSG-Net -- Unsupervised Discovering of Constructive Solid Geometry Tree","arxiv_id":"2006.09102","date":"2020-06-16","proceeding":null,"authors":["Kacper Kania","Maciej Zięba","Tomasz Kajdanowicz"],"abstract":"Signed distance field (SDF) is a prominent implicit representation of 3D meshes. Methods that are based on such representation achieved state-of-the-art 3D shape reconstruction quality. However, these methods struggle to reconstruct non-convex shapes. One remedy is to incorporate a constructive solid geometry framework (CSG) that represents a shape as a decomposition into primitives. It allows to embody a 3D shape of high complexity and non-convexity with a simple tree representation of Boolean operations. Nevertheless, existing approaches are supervised and require the entire CSG parse tree that is given upfront during the training process. On the contrary, we propose a model that extracts a CSG parse tree without any supervision - UCSG-Net. Our model predicts parameters of primitives and binarizes their SDF representation through differentiable indicator function. It is achieved jointly with discovering the structure of a Boolean operators tree. The model selects dynamically which operator combination over primitives leads to the reconstruction of high fidelity. We evaluate our method on 2D and 3D autoencoding tasks. We show that the predicted parse tree representation is interpretable and can be used in CAD software.","url_abs":"https://arxiv.org/abs/2006.09102v3","url_pdf":"https://arxiv.org/pdf/2006.09102v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"ucsg-net-unsupervised-discovering-of","repo_url":"https://github.com/kacperkan/ucsgnet","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"3d-shape-reconstruction","task_name":"3D Shape Reconstruction"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2006.09102","atlas_url":"https://app.syntology.ai/?focus=2006.09102","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2006.09102"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/kacperkan/ucsgnet","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":10},"by_repo_kind":{"official":{"samples":10,"ran":0,"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":0,"samples":[{"code_sha256_prefix":"dc9c028cc9e9b9f2","entry":"generate_single_image","repo":"kacperkan/ucsgnet","repo_kind":"official","path":"ucsgnet/generators/generate_cross_diamond_dataset.py","file_url":"https://github.com/kacperkan/ucsgnet/blob/HEAD/ucsgnet/generators/generate_cross_diamond_dataset.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"dc9c028cc9e9b9f2"}},{"code_sha256_prefix":"051a5c92c5f8ef95","entry":"generate_single_image","repo":"kacperkan/ucsgnet","repo_kind":"official","path":"ucsgnet/generators/generate_csg_dataset.py","file_url":"https://github.com/kacperkan/ucsgnet/blob/HEAD/ucsgnet/generators/generate_csg_dataset.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"051a5c92c5f8ef95"}},{"code_sha256_prefix":"88c737ef55663bd3","entry":"get_chamfer_distance_and_normal_consistency","repo":"kacperkan/ucsgnet","repo_kind":"official","path":"ucsgnet/ucsgnet/evaluate_on_3d_data.py","file_url":"https://github.com/kacperkan/ucsgnet/blob/HEAD/ucsgnet/ucsgnet/evaluate_on_3d_data.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"88c737ef55663bd3"}},{"code_sha256_prefix":"3b46b02c3562dfe3","entry":"get_logger","repo":"kacperkan/ucsgnet","repo_kind":"official","path":"ucsgnet/common.py","file_url":"https://github.com/kacperkan/ucsgnet/blob/HEAD/ucsgnet/common.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3b46b02c3562dfe3"}},{"code_sha256_prefix":"3ebafac58ce4e2a7","entry":"get_points","repo":"kacperkan/ucsgnet","repo_kind":"official","path":"ucsgnet/generators/generate_edge_data_from_point.py","file_url":"https://github.com/kacperkan/ucsgnet/blob/HEAD/ucsgnet/generators/generate_edge_data_from_point.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3ebafac58ce4e2a7"}},{"code_sha256_prefix":"3392cd46110fb6ab","entry":"get_simple_dataset_paths_from_config","repo":"kacperkan/ucsgnet","repo_kind":"official","path":"ucsgnet/utils.py","file_url":"https://github.com/kacperkan/ucsgnet/blob/HEAD/ucsgnet/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3392cd46110fb6ab"}},{"code_sha256_prefix":"d717287309b3231a","entry":"process_single_2d_image","repo":"kacperkan/ucsgnet","repo_kind":"official","path":"ucsgnet/dataset.py","file_url":"https://github.com/kacperkan/ucsgnet/blob/HEAD/ucsgnet/dataset.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d717287309b3231a"}},{"code_sha256_prefix":"0a85b5ce23d43dc8","entry":"quat_to_rot_matrix","repo":"kacperkan/ucsgnet","repo_kind":"official","path":"ucsgnet/utils.py","file_url":"https://github.com/kacperkan/ucsgnet/blob/HEAD/ucsgnet/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0a85b5ce23d43dc8"}},{"code_sha256_prefix":"78c7feffcb6fda0d","entry":"quat_to_rot_matrix_numpy","repo":"kacperkan/ucsgnet","repo_kind":"official","path":"ucsgnet/utils.py","file_url":"https://github.com/kacperkan/ucsgnet/blob/HEAD/ucsgnet/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"78c7feffcb6fda0d"}},{"code_sha256_prefix":"646a545e25900f47","entry":"to_tensor","repo":"kacperkan/ucsgnet","repo_kind":"official","path":"ucsgnet/generators/generate_edge_data_from_point.py","file_url":"https://github.com/kacperkan/ucsgnet/blob/HEAD/ucsgnet/generators/generate_edge_data_from_point.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"646a545e25900f47"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}