{"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/splatflow-multi-view-rectified-flow-model-for","title":"SplatFlow: Multi-View Rectified Flow Model for 3D Gaussian Splatting Synthesis","arxiv_id":"2411.16443","date":"2024-11-25","proceeding":"CVPR 2025 1","authors":["Hyojun Go","Byeongjun Park","Jiho Jang","Jin-Young Kim","Soonwoo Kwon","Changick Kim"],"abstract":"Text-based generation and editing of 3D scenes hold significant potential for streamlining content creation through intuitive user interactions. While recent advances leverage 3D Gaussian Splatting (3DGS) for high-fidelity and real-time rendering, existing methods are often specialized and task-focused, lacking a unified framework for both generation and editing. In this paper, we introduce SplatFlow, a comprehensive framework that addresses this gap by enabling direct 3DGS generation and editing. SplatFlow comprises two main components: a multi-view rectified flow (RF) model and a Gaussian Splatting Decoder (GSDecoder). The multi-view RF model operates in latent space, generating multi-view images, depths, and camera poses simultaneously, conditioned on text prompts, thus addressing challenges like diverse scene scales and complex camera trajectories in real-world settings. Then, the GSDecoder efficiently translates these latent outputs into 3DGS representations through a feed-forward 3DGS method. Leveraging training-free inversion and inpainting techniques, SplatFlow enables seamless 3DGS editing and supports a broad range of 3D tasks-including object editing, novel view synthesis, and camera pose estimation-within a unified framework without requiring additional complex pipelines. We validate SplatFlow's capabilities on the MVImgNet and DL3DV-7K datasets, demonstrating its versatility and effectiveness in various 3D generation, editing, and inpainting-based tasks.","url_abs":"https://arxiv.org/abs/2411.16443v3","url_pdf":"https://arxiv.org/pdf/2411.16443v3.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":"splatflow-multi-view-rectified-flow-model-for","repo_url":"https://github.com/gohyojun15/SplatFlow","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"3d-generation","task_name":"3D Generation"},{"task_slug":"3dgs","task_name":"3DGS"},{"task_slug":"camera-pose-estimation","task_name":"Camera Pose Estimation"},{"task_slug":"decoder","task_name":"Decoder"},{"task_slug":"novel-view-synthesis","task_name":"Novel View Synthesis"},{"task_slug":"pose-estimation","task_name":"Pose Estimation"}],"methods":[{"method_slug":"pixel-prediction","method_name":"Inpainting"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2411.16443","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2411.16443"}},"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/gohyojun15/SplatFlow","reach":{"status":"ok"}}],"summary":{"ran_honours":1,"unverified":17},"by_repo_kind":{"official":{"samples":18,"ran":1,"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":18,"samples":[{"code_sha256_prefix":"b488da571728b636","entry":"inverse_sigmoid","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/refiner/camera_util.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/model/refiner/camera_util.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b488da571728b636"}},{"code_sha256_prefix":"48834becde29d122","entry":"build_covariance","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/gsdecoder/decoder_splatting.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/model/gsdecoder/decoder_splatting.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":"48834becde29d122"}},{"code_sha256_prefix":"4a20087245ac0d11","entry":"build_rotation","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/refiner/gs_util.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/model/refiner/gs_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":"4a20087245ac0d11"}},{"code_sha256_prefix":"55ff88461e88d4c4","entry":"compute_text_embeddings","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/multiview_rf/text_embedding.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/model/multiview_rf/text_embedding.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":"55ff88461e88d4c4"}},{"code_sha256_prefix":"f398bb10a60029ed","entry":"create_depth","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/util.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/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":"f398bb10a60029ed"}},{"code_sha256_prefix":"eba7c5bb84f9ef7a","entry":"encode_prompt","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/multiview_rf/text_embedding.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/model/multiview_rf/text_embedding.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":"eba7c5bb84f9ef7a"}},{"code_sha256_prefix":"4de89febe74a2491","entry":"get_fov","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/gsdecoder/cuda_splatting.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/model/gsdecoder/cuda_splatting.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":"4de89febe74a2491"}},{"code_sha256_prefix":"42fea4062f8f937c","entry":"get_plucker_rays","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/gsdecoder/camera_embedding.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/model/gsdecoder/camera_embedding.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":"42fea4062f8f937c"}},{"code_sha256_prefix":"4f3e5fc11cdbd309","entry":"get_projection_matrix","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/gsdecoder/cuda_splatting.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/model/gsdecoder/cuda_splatting.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":"4f3e5fc11cdbd309"}},{"code_sha256_prefix":"8bb8a6da53b10ad3","entry":"import_model_class_from_model_name_or_path","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/multiview_rf/load_mv_sd3.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/model/multiview_rf/load_mv_sd3.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":"8bb8a6da53b10ad3"}},{"code_sha256_prefix":"e5e924570703db04","entry":"inverse_softplus","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/refiner/gs_util.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/model/refiner/gs_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":"e5e924570703db04"}},{"code_sha256_prefix":"78c3241f3ce64664","entry":"matrix_to_quaternion","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/refiner/camera_util.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/model/refiner/camera_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":"78c3241f3ce64664"}},{"code_sha256_prefix":"2266df92cced520e","entry":"meshgrid","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/gsdecoder/camera_embedding.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/model/gsdecoder/camera_embedding.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":"2266df92cced520e"}},{"code_sha256_prefix":"542896f696811cdd","entry":"optimize_plucker_ray","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/gsdecoder/camera_embedding.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/model/gsdecoder/camera_embedding.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":"542896f696811cdd"}},{"code_sha256_prefix":"0a94a9b656c3ca3a","entry":"quaternion_to_matrix","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/gsdecoder/decoder_splatting.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/model/gsdecoder/decoder_splatting.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":"0a94a9b656c3ca3a"}},{"code_sha256_prefix":"4b834cf369f7dd35","entry":"quaternion_to_matrix","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/refiner/camera_util.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/model/refiner/camera_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":"4b834cf369f7dd35"}},{"code_sha256_prefix":"032693981b87da9c","entry":"stack_depth_images","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/util.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/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":"032693981b87da9c"}},{"code_sha256_prefix":"02aa413663394d0c","entry":"tokenize_prompt","repo":"gohyojun15/SplatFlow","repo_kind":"official","path":"model/multiview_rf/text_embedding.py","file_url":"https://github.com/gohyojun15/SplatFlow/blob/HEAD/model/multiview_rf/text_embedding.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":"02aa413663394d0c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}