{"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/surfgen-adversarial-3d-shape-synthesis-with-1","title":"SurfGen: Adversarial 3D Shape Synthesis with Explicit Surface Discriminators","arxiv_id":"2201.00112","date":"2022-01-01","proceeding":"ICCV 2021 10","authors":["Andrew Luo","Tianqin Li","Wen-Hao Zhang","Tai Sing Lee"],"abstract":"Recent advances in deep generative models have led to immense progress in 3D shape synthesis. While existing models are able to synthesize shapes represented as voxels, point-clouds, or implicit functions, these methods only indirectly enforce the plausibility of the final 3D shape surface. Here we present a 3D shape synthesis framework (SurfGen) that directly applies adversarial training to the object surface. Our approach uses a differentiable spherical projection layer to capture and represent the explicit zero isosurface of an implicit 3D generator as functions defined on the unit sphere. By processing the spherical representation of 3D object surfaces with a spherical CNN in an adversarial setting, our generator can better learn the statistics of natural shape surfaces. We evaluate our model on large-scale shape datasets, and demonstrate that the end-to-end trained model is capable of generating high fidelity 3D shapes with diverse topology.","url_abs":"https://arxiv.org/abs/2201.00112v1","url_pdf":"https://arxiv.org/pdf/2201.00112v1.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":"surfgen-adversarial-3d-shape-synthesis-with-1","repo_url":"https://github.com/aluo-x/neuralraycaster","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2201.00112","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2201.00112"}},"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/aluo-x/neuralraycaster","reach":{"status":"ok","spdx":"Apache-2.0"}}],"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":"657f38f4a9a6737e","entry":"compute_bary_new","repo":"aluo-x/neuralraycaster","repo_kind":"official","path":"misc_differentiable.py","file_url":"https://github.com/aluo-x/neuralraycaster/blob/HEAD/misc_differentiable.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"657f38f4a9a6737e"}},{"code_sha256_prefix":"82f5c7cf8aa97a27","entry":"expand_trig_np","repo":"aluo-x/neuralraycaster","repo_kind":"official","path":"misc.py","file_url":"https://github.com/aluo-x/neuralraycaster/blob/HEAD/misc.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"82f5c7cf8aa97a27"}},{"code_sha256_prefix":"9862a9dbb2bf58dd","entry":"get_centroids","repo":"aluo-x/neuralraycaster","repo_kind":"official","path":"embree_rays.py","file_url":"https://github.com/aluo-x/neuralraycaster/blob/HEAD/embree_rays.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9862a9dbb2bf58dd"}},{"code_sha256_prefix":"54a8ffc4b17d8af5","entry":"get_cross_products","repo":"aluo-x/neuralraycaster","repo_kind":"official","path":"embree_rays.py","file_url":"https://github.com/aluo-x/neuralraycaster/blob/HEAD/embree_rays.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"54a8ffc4b17d8af5"}},{"code_sha256_prefix":"43f7bbe04a1a8cc0","entry":"get_face_areas","repo":"aluo-x/neuralraycaster","repo_kind":"official","path":"embree_rays.py","file_url":"https://github.com/aluo-x/neuralraycaster/blob/HEAD/embree_rays.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"43f7bbe04a1a8cc0"}},{"code_sha256_prefix":"1c5c57fb508ad27d","entry":"make_list_parallel","repo":"aluo-x/neuralraycaster","repo_kind":"official","path":"misc.py","file_url":"https://github.com/aluo-x/neuralraycaster/blob/HEAD/misc.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1c5c57fb508ad27d"}},{"code_sha256_prefix":"3c1be6b096c1eff2","entry":"point_line_distance","repo":"aluo-x/neuralraycaster","repo_kind":"official","path":"misc_differentiable.py","file_url":"https://github.com/aluo-x/neuralraycaster/blob/HEAD/misc_differentiable.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"3c1be6b096c1eff2"}},{"code_sha256_prefix":"73eb14c99e282f04","entry":"point_triangle_distance","repo":"aluo-x/neuralraycaster","repo_kind":"official","path":"misc_differentiable.py","file_url":"https://github.com/aluo-x/neuralraycaster/blob/HEAD/misc_differentiable.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"73eb14c99e282f04"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}