{"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/nerrf-3d-reconstruction-and-view-synthesis","title":"NeRRF: 3D Reconstruction and View Synthesis for Transparent and Specular Objects with Neural Refractive-Reflective Fields","arxiv_id":"2309.13039","date":"2023-09-22","proceeding":null,"authors":["Xiaoxue Chen","Junchen Liu","Hao Zhao","Guyue Zhou","Ya-Qin Zhang"],"abstract":"Neural radiance fields (NeRF) have revolutionized the field of image-based view synthesis. However, NeRF uses straight rays and fails to deal with complicated light path changes caused by refraction and reflection. This prevents NeRF from successfully synthesizing transparent or specular objects, which are ubiquitous in real-world robotics and A/VR applications. In this paper, we introduce the refractive-reflective field. Taking the object silhouette as input, we first utilize marching tetrahedra with a progressive encoding to reconstruct the geometry of non-Lambertian objects and then model refraction and reflection effects of the object in a unified framework using Fresnel terms. Meanwhile, to achieve efficient and effective anti-aliasing, we propose a virtual cone supersampling technique. We benchmark our method on different shapes, backgrounds and Fresnel terms on both real-world and synthetic datasets. We also qualitatively and quantitatively benchmark the rendering results of various editing applications, including material editing, object replacement/insertion, and environment illumination estimation. Codes and data are publicly available at https://github.com/dawning77/NeRRF.","url_abs":"https://arxiv.org/abs/2309.13039v1","url_pdf":"https://arxiv.org/pdf/2309.13039v1.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":"nerrf-3d-reconstruction-and-view-synthesis","repo_url":"https://github.com/dawning77/nerrf","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"3d-reconstruction","task_name":"3D Reconstruction"},{"task_slug":"nerf","task_name":"NeRF"},{"task_slug":"object","task_name":"Object"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2309.13039","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2309.13039"}},"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/dawning77/nerrf","reach":{"status":"ok"}}],"summary":{"ran":14,"unverified":2},"by_repo_kind":{"official":{"samples":16,"ran":14,"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":16,"samples":[{"code_sha256_prefix":"4bca9dffc88981f7","entry":"calculate_psnr","repo":"dawning77/nerrf","repo_kind":"official","path":"eval/eval_approx.py","file_url":"https://github.com/dawning77/nerrf/blob/HEAD/eval/eval_approx.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4bca9dffc88981f7"}},{"code_sha256_prefix":"238bc14d1510f9c0","entry":"create_window","repo":"dawning77/nerrf","repo_kind":"official","path":"eval/eval_approx.py","file_url":"https://github.com/dawning77/nerrf/blob/HEAD/eval/eval_approx.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"238bc14d1510f9c0"}},{"code_sha256_prefix":"95540b97f1c5bde1","entry":"depth2rgb","repo":"dawning77/nerrf","repo_kind":"official","path":"src/dataset/utils.py","file_url":"https://github.com/dawning77/nerrf/blob/HEAD/src/dataset/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"95540b97f1c5bde1"}},{"code_sha256_prefix":"3d4779f0b7c01ab1","entry":"gaussian","repo":"dawning77/nerrf","repo_kind":"official","path":"eval/eval_approx.py","file_url":"https://github.com/dawning77/nerrf/blob/HEAD/eval/eval_approx.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3d4779f0b7c01ab1"}},{"code_sha256_prefix":"bf28ce0de1a71cef","entry":"get_alpha_loss","repo":"dawning77/nerrf","repo_kind":"official","path":"src/model/loss.py","file_url":"https://github.com/dawning77/nerrf/blob/HEAD/src/model/loss.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"bf28ce0de1a71cef"}},{"code_sha256_prefix":"d8360a58b79df90e","entry":"get_depth_loss","repo":"dawning77/nerrf","repo_kind":"official","path":"src/model/loss.py","file_url":"https://github.com/dawning77/nerrf/blob/HEAD/src/model/loss.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d8360a58b79df90e"}},{"code_sha256_prefix":"5bb07837a66a0414","entry":"get_encoder","repo":"dawning77/nerrf","repo_kind":"official","path":"src/model/encoding.py","file_url":"https://github.com/dawning77/nerrf/blob/HEAD/src/model/encoding.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5bb07837a66a0414"}},{"code_sha256_prefix":"ef9a1e86780cd2e3","entry":"get_focal","repo":"dawning77/nerrf","repo_kind":"official","path":"src/dataset/dataloader.py","file_url":"https://github.com/dawning77/nerrf/blob/HEAD/src/dataset/dataloader.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ef9a1e86780cd2e3"}},{"code_sha256_prefix":"378f980d487f35ff","entry":"get_image_to_tensor_balanced","repo":"dawning77/nerrf","repo_kind":"official","path":"src/dataset/dataloader.py","file_url":"https://github.com/dawning77/nerrf/blob/HEAD/src/dataset/dataloader.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"378f980d487f35ff"}},{"code_sha256_prefix":"67c00b05abcd2be8","entry":"get_mvp","repo":"dawning77/nerrf","repo_kind":"official","path":"src/dataset/dataloader.py","file_url":"https://github.com/dawning77/nerrf/blob/HEAD/src/dataset/dataloader.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"67c00b05abcd2be8"}},{"code_sha256_prefix":"8500e3e7336c97dd","entry":"get_rgb_loss","repo":"dawning77/nerrf","repo_kind":"official","path":"src/model/loss.py","file_url":"https://github.com/dawning77/nerrf/blob/HEAD/src/model/loss.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8500e3e7336c97dd"}},{"code_sha256_prefix":"c3db69b5896d149a","entry":"grid_sample","repo":"dawning77/nerrf","repo_kind":"official","path":"src/model/grad_sample.py","file_url":"https://github.com/dawning77/nerrf/blob/HEAD/src/model/grad_sample.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c3db69b5896d149a"}},{"code_sha256_prefix":"40f070d25a1f9fad","entry":"grid_sample_old","repo":"dawning77/nerrf","repo_kind":"official","path":"src/model/encoder.py","file_url":"https://github.com/dawning77/nerrf/blob/HEAD/src/model/encoder.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"40f070d25a1f9fad"}},{"code_sha256_prefix":"6826e2269fddeeee","entry":"scale_depth","repo":"dawning77/nerrf","repo_kind":"official","path":"src/dataset/utils.py","file_url":"https://github.com/dawning77/nerrf/blob/HEAD/src/dataset/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6826e2269fddeeee"}},{"code_sha256_prefix":"09578629f7267e4b","entry":"make_encoder","repo":"dawning77/nerrf","repo_kind":"official","path":"src/model/model_util.py","file_url":"https://github.com/dawning77/nerrf/blob/HEAD/src/model/model_util.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"09578629f7267e4b"}},{"code_sha256_prefix":"84c6f39475151566","entry":"make_mlp","repo":"dawning77/nerrf","repo_kind":"official","path":"src/model/model_util.py","file_url":"https://github.com/dawning77/nerrf/blob/HEAD/src/model/model_util.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"84c6f39475151566"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}