{"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/text2room-extracting-textured-3d-meshes-from","title":"Text2Room: Extracting Textured 3D Meshes from 2D Text-to-Image Models","arxiv_id":"2303.11989","date":"2023-03-21","proceeding":"ICCV 2023 1","authors":["Lukas Höllein","Ang Cao","Andrew Owens","Justin Johnson","Matthias Nießner"],"abstract":"We present Text2Room, a method for generating room-scale textured 3D meshes from a given text prompt as input. To this end, we leverage pre-trained 2D text-to-image models to synthesize a sequence of images from different poses. In order to lift these outputs into a consistent 3D scene representation, we combine monocular depth estimation with a text-conditioned inpainting model. The core idea of our approach is a tailored viewpoint selection such that the content of each image can be fused into a seamless, textured 3D mesh. More specifically, we propose a continuous alignment strategy that iteratively fuses scene frames with the existing geometry to create a seamless mesh. Unlike existing works that focus on generating single objects or zoom-out trajectories from text, our method generates complete 3D scenes with multiple objects and explicit 3D geometry. We evaluate our approach using qualitative and quantitative metrics, demonstrating it as the first method to generate room-scale 3D geometry with compelling textures from only text as input.","url_abs":"https://arxiv.org/abs/2303.11989v2","url_pdf":"https://arxiv.org/pdf/2303.11989v2.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":"text2room-extracting-textured-3d-meshes-from","repo_url":"https://github.com/lukashoel/text2room","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"3d-geometry","task_name":"3D geometry"},{"task_slug":"text-to-3d","task_name":"Text to 3D"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"},{"method_slug":"pixel-prediction","method_name":"Inpainting"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2303.11989","atlas_url":"https://app.syntology.ai/?focus=2303.11989","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2303.11989"}},"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/lukashoel/text2room","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":13},"by_repo_kind":{"official":{"samples":13,"ran":13,"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":"1bf43bc41fcd3fa4","entry":"edge_threshold_filter","repo":"lukashoel/text2room","repo_kind":"official","path":"model/mesh_fusion/render.py","file_url":"https://github.com/lukashoel/text2room/blob/HEAD/model/mesh_fusion/render.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1bf43bc41fcd3fa4"}},{"code_sha256_prefix":"721d622f67a06ca3","entry":"get_pixel_grids","repo":"lukashoel/text2room","repo_kind":"official","path":"model/mesh_fusion/util.py","file_url":"https://github.com/lukashoel/text2room/blob/HEAD/model/mesh_fusion/util.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"721d622f67a06ca3"}},{"code_sha256_prefix":"ca7fb024c005965d","entry":"img_to_pts","repo":"lukashoel/text2room","repo_kind":"official","path":"model/mesh_fusion/util.py","file_url":"https://github.com/lukashoel/text2room/blob/HEAD/model/mesh_fusion/util.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ca7fb024c005965d"}},{"code_sha256_prefix":"eeae9901967f7f80","entry":"interpolate_noise","repo":"lukashoel/text2room","repo_kind":"official","path":"model/trajectories/pose_noise_util.py","file_url":"https://github.com/lukashoel/text2room/blob/HEAD/model/trajectories/pose_noise_util.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"eeae9901967f7f80"}},{"code_sha256_prefix":"a1edc86df5512e7e","entry":"parse_seen_poses","repo":"lukashoel/text2room","repo_kind":"official","path":"model/trajectories/convert_to_nerf_convention.py","file_url":"https://github.com/lukashoel/text2room/blob/HEAD/model/trajectories/convert_to_nerf_convention.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a1edc86df5512e7e"}},{"code_sha256_prefix":"23c6f8663a0b0977","entry":"pil_to_torch","repo":"lukashoel/text2room","repo_kind":"official","path":"model/utils/utils.py","file_url":"https://github.com/lukashoel/text2room/blob/HEAD/model/utils/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"23c6f8663a0b0977"}},{"code_sha256_prefix":"87c4c2474bd1e51d","entry":"pose_spherical","repo":"lukashoel/text2room","repo_kind":"official","path":"model/trajectories/trajectory_util.py","file_url":"https://github.com/lukashoel/text2room/blob/HEAD/model/trajectories/trajectory_util.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"87c4c2474bd1e51d"}},{"code_sha256_prefix":"40fe3e5b96d9ed64","entry":"prepare_input","repo":"lukashoel/text2room","repo_kind":"official","path":"model/iron_depth/predict_depth.py","file_url":"https://github.com/lukashoel/text2room/blob/HEAD/model/iron_depth/predict_depth.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"40fe3e5b96d9ed64"}},{"code_sha256_prefix":"36674b1cdb0eab60","entry":"pts_to_image","repo":"lukashoel/text2room","repo_kind":"official","path":"model/mesh_fusion/util.py","file_url":"https://github.com/lukashoel/text2room/blob/HEAD/model/mesh_fusion/util.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"36674b1cdb0eab60"}},{"code_sha256_prefix":"e6fffec018d7dd86","entry":"sample_noise","repo":"lukashoel/text2room","repo_kind":"official","path":"model/trajectories/pose_noise_util.py","file_url":"https://github.com/lukashoel/text2room/blob/HEAD/model/trajectories/pose_noise_util.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e6fffec018d7dd86"}},{"code_sha256_prefix":"593f9e065a7464c0","entry":"scale_shift_linear","repo":"lukashoel/text2room","repo_kind":"official","path":"model/depth_alignment/depth_alignment.py","file_url":"https://github.com/lukashoel/text2room/blob/HEAD/model/depth_alignment/depth_alignment.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"593f9e065a7464c0"}},{"code_sha256_prefix":"580df8e07f77cad3","entry":"to_degrees","repo":"lukashoel/text2room","repo_kind":"official","path":"model/trajectories/pose_noise_util.py","file_url":"https://github.com/lukashoel/text2room/blob/HEAD/model/trajectories/pose_noise_util.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"580df8e07f77cad3"}},{"code_sha256_prefix":"a9b9a982a85106e3","entry":"visualize_depth_numpy","repo":"lukashoel/text2room","repo_kind":"official","path":"model/utils/utils.py","file_url":"https://github.com/lukashoel/text2room/blob/HEAD/model/utils/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a9b9a982a85106e3"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}