{"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/neural-dual-contouring","title":"Neural Dual Contouring","arxiv_id":"2202.01999","date":"2022-02-04","proceeding":null,"authors":["Zhiqin Chen","Andrea Tagliasacchi","Thomas Funkhouser","Hao Zhang"],"abstract":"We introduce neural dual contouring (NDC), a new data-driven approach to mesh reconstruction based on dual contouring (DC). Like traditional DC, it produces exactly one vertex per grid cell and one quad for each grid edge intersection, a natural and efficient structure for reproducing sharp features. However, rather than computing vertex locations and edge crossings with hand-crafted functions that depend directly on difficult-to-obtain surface gradients, NDC uses a neural network to predict them. As a result, NDC can be trained to produce meshes from signed or unsigned distance fields, binary voxel grids, or point clouds (with or without normals); and it can produce open surfaces in cases where the input represents a sheet or partial surface. During experiments with five prominent datasets, we find that NDC, when trained on one of the datasets, generalizes well to the others. Furthermore, NDC provides better surface reconstruction accuracy, feature preservation, output complexity, triangle quality, and inference time in comparison to previous learned (e.g., neural marching cubes, convolutional occupancy networks) and traditional (e.g., Poisson) methods. Code and data are available at https://github.com/czq142857/NDC.","url_abs":"https://arxiv.org/abs/2202.01999v3","url_pdf":"https://arxiv.org/pdf/2202.01999v3.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":"neural-dual-contouring","repo_url":"https://github.com/czq142857/NDC","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"neural-dual-contouring","repo_url":"https://github.com/xzb030/img_survey","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}}],"tasks":[{"task_slug":"surface-reconstruction","task_name":"Surface Reconstruction"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2202.01999","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2202.01999"}},"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":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/xzb030/img_survey","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/czq142857/NDC","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":8},"by_repo_kind":{"official":{"samples":8,"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":"db7b8ed270980904","entry":"dual_contouring_ndc_test","repo":"czq142857/NDC","repo_kind":"official","path":"data_preprocessing/get_groundtruth_NDC/utils.py","file_url":"https://github.com/czq142857/NDC/blob/HEAD/data_preprocessing/get_groundtruth_NDC/utils.py","link_basis":"harvester_set","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":"db7b8ed270980904"}},{"code_sha256_prefix":"390ee5602e7c599f","entry":"load_obj","repo":"czq142857/NDC","repo_kind":"official","path":"eval_tri_angle.py","file_url":"https://github.com/czq142857/NDC/blob/HEAD/eval_tri_angle.py","link_basis":"harvester_set","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":"390ee5602e7c599f"}},{"code_sha256_prefix":"659aa8d8ccd54d9e","entry":"load_obj","repo":"czq142857/NDC","repo_kind":"official","path":"data_preprocessing/augment_obj.py","file_url":"https://github.com/czq142857/NDC/blob/HEAD/data_preprocessing/augment_obj.py","link_basis":"harvester_set","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":"659aa8d8ccd54d9e"}},{"code_sha256_prefix":"1953889d90edaf2f","entry":"postprocessing","repo":"czq142857/NDC","repo_kind":"official","path":"modelpc.py","file_url":"https://github.com/czq142857/NDC/blob/HEAD/modelpc.py","link_basis":"harvester_set","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":"1953889d90edaf2f"}},{"code_sha256_prefix":"f9cb2213d18de100","entry":"read_binvox_file_as_3d_array","repo":"czq142857/NDC","repo_kind":"official","path":"utils.py","file_url":"https://github.com/czq142857/NDC/blob/HEAD/utils.py","link_basis":"harvester_set","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":"f9cb2213d18de100"}},{"code_sha256_prefix":"2f6a21f017189aff","entry":"read_data_input_only","repo":"czq142857/NDC","repo_kind":"official","path":"utils.py","file_url":"https://github.com/czq142857/NDC/blob/HEAD/utils.py","link_basis":"harvester_set","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":"2f6a21f017189aff"}},{"code_sha256_prefix":"1c1ad35af827e412","entry":"read_intersectionpn_file_as_2d_array","repo":"czq142857/NDC","repo_kind":"official","path":"data_preprocessing/get_groundtruth_NDC/utils.py","file_url":"https://github.com/czq142857/NDC/blob/HEAD/data_preprocessing/get_groundtruth_NDC/utils.py","link_basis":"harvester_set","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":"1c1ad35af827e412"}},{"code_sha256_prefix":"37fff14c82d73480","entry":"read_sdf_file_as_3d_array","repo":"czq142857/NDC","repo_kind":"official","path":"data_preprocessing/get_groundtruth_NDC/utils.py","file_url":"https://github.com/czq142857/NDC/blob/HEAD/data_preprocessing/get_groundtruth_NDC/utils.py","link_basis":"harvester_set","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":"37fff14c82d73480"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}