完全解析——從原理到實戰(zhàn)的終極指南)
Relightable3DGaussian實時3D高斯重光照技術(shù)完全解析——從原理到實戰(zhàn)的終極指南【免費下載鏈接】Relightable3DGaussian[ECCV2024] Relightable 3D Gaussian: Real-time Point Cloud Relighting with BRDF Decomposition and Ray Tracing項目地址: https://gitcode.com/gh_mirrors/re/Relightable3DGaussianRelightable3DGaussian可重光照 3D 高斯是南京大學(xué)與復(fù)旦大學(xué)聯(lián)合推出的開源項目基于3D 高斯?jié)姙R3D Gaussian Splatting BRDF 材質(zhì)分解 光線追蹤實現(xiàn)實時 3D 點云重光照。傳統(tǒng) 3DGS 訓(xùn)練出的模型光打不上去——換個環(huán)境光就穿幫而本項目能把場景分解為反照率、粗糙度、金屬度等物理材質(zhì)再結(jié)合 HDR 環(huán)境光實時重新打光還能把多個物體自由合成到同一場景中渲染是數(shù)字人、虛擬展示、游戲資產(chǎn)管線中的重要工具。為什么需要 3D 高斯重光照普通 3D Gaussian Splatting 渲染出的顏色是烘焙了當(dāng)時光照的換不了環(huán)境光。Relightable3DGaussian 的解決思路可以概括為三步模塊作用對應(yīng)代碼位置BRDF 材質(zhì)分解把每個高斯點的顏色分解為基礎(chǔ)色base color、粗糙度roughness、金屬度metallicscene/gaussian_model.py、r3dg-rasterization/render_equation.cuBVH 光線追蹤用 BVH 加速結(jié)構(gòu)對入射方向做采樣光線追蹤計算自遮蔽/環(huán)境光遮蔽visibilitybvh/bvh.cu、bvh/trace.cuPBR 渲染方程結(jié)合 HDR 環(huán)境光與材質(zhì)實時合成重光照圖像gaussian_renderer/neilf.py、r3dg-rasterization/rasterize_points.cu訓(xùn)練階段還會引入 MVS 深度圖/法線作為幾何正則讓點云幾何更干凈材質(zhì)分解更穩(wěn)定——這部分由 vismvsnet/ 子模塊完成。一鍵環(huán)境搭建安裝步驟 官方推薦CUDA 11.8編譯擴展單張 RTX 309024G即可復(fù)現(xiàn)論文結(jié)果。# 1. 克隆倉庫 git clone https://gitcode.com/gh_mirrors/re/Relightable3DGaussian cd Relightable3DGaussian # 2. 創(chuàng)建 conda 環(huán)境Python 3.7 conda env create --file environment.yml conda activate r3dg conda install pytorch1.12.1 torchvision0.13.1 torchaudio0.12.1 cudatoolkit11.6 -c pytorch -c conda-forge pip install torch_scatter2.1.1 kornia0.6.12 # 3. 編譯三個 PyTorch 擴展順序執(zhí)行 pip install ./submodules/simple-knn pip install ./bvh pip install ./r3dg-rasterization?? 若擴展編譯報錯優(yōu)先檢查 CUDA 版本是否為 11.8這是 3DGS 系項目最常見的坑。兩階段訓(xùn)練從 3D 高斯到可重光照模型訓(xùn)練分兩步走先跑普通 3DGS再在其基礎(chǔ)上精調(diào)出 PBR 材質(zhì)。以 NeRF 合成數(shù)據(jù)集為例直接執(zhí)行 script/run_nerf.sh 即可核心邏輯是# 階段一標(biāo)準(zhǔn) 3DGS 訓(xùn)練含深度/法線幾何正則 python train.py --eval -s datasets/nerf_synthetic/lego -m output/NeRF_Syn/lego/3dgs \ --lambda_normal_render_depth 0.01 --lambda_mask_entropy 0.1 --densification_interval 500 # 階段二加載 3DGS 權(quán)重精調(diào) BRDF 材質(zhì) 可見性 python train.py --eval -s datasets/nerf_synthetic/lego -m output/NeRF_Syn/lego/neilf \ -c output/NeRF_Syn/lego/3dgs/chkpnt30000.pth -t neilf \ --use_global_shs --finetune_visibility --iterations 40000 \ --lambda_light 0.01 --lambda_visibility 0.1關(guān)鍵參數(shù)速查-t neilf啟用 PBR 渲染類型普通渲染用render--finetune_visibility用光線追蹤精調(diào)遮蔽項--use_global_shs用全局 SH 入射光做正則避免材質(zhì)分解歧義--save_training_vis周期性保存訓(xùn)練可視化圖方便觀察收斂數(shù)據(jù)支持三套NeRF Synthetic合成、DTU 與 Tanks and Temples真實場景預(yù)處理版數(shù)據(jù)集目錄結(jié)構(gòu)與下載方式見 readme.md 的 Data preparation 章節(jié)。重光照實戰(zhàn)多物體合成 HDR 環(huán)境光這是項目最驚艷的部分。訓(xùn)練得到的點云是顯式點云天然支持自由變換縮放/平移/旋轉(zhuǎn)后合成新場景。合成與相機軌跡由配置文件驅(qū)動例如 configs/teaser/transform.json 里為 chair、lego、hotdog 等每個物體指定了 PLY 路徑和 4x4 變換矩陣。# 復(fù)現(xiàn)官方 teaser多物體合成 重光照輸出 9 種 capture 圖 python relighting.py \ -co configs/teaser \ -e env_map/teaser.hdr \ --output output/relighting/teaser_trace \ --sample 384 # 換一張環(huán)境光一鍵換天氣/換場景 python relighting.py \ -co configs/tnt \ -e env_map/ocean_from_horn.jpg \ --output output/relighting/tnt \ --sample_num 384 --video上面這張ocean_from_horn.jpg就是倉庫自帶的海岸全景環(huán)境光換一張 HDR/JPG 全景圖就能讓同一個場景呈現(xiàn)完全不同的光照氛圍。常用參數(shù)參數(shù)含義-co/--config場景與相機軌跡配置目錄含 transform.json、trajectory.json-e/--envmap_pathHDR 環(huán)境光路徑如 env_map/ 下的 teaser.hdr、composition.hdr--sample/--sample_num每個點采樣入射光線數(shù)越高越細(xì)膩越慢--bake烘焙可見性并精調(diào)--video同時輸出各通道的 mp4 視頻--capture_list指定輸出哪些層base_color、metallic、roughness、normal、pbr、visibility 等GUI 可視化實時監(jiān)控訓(xùn)練過程項目內(nèi)置交互式 GUI基于 dearpygui訓(xùn)練時加--gui即可實時拖動視角觀察訓(xùn)練完成后也能單獨查看模型# 查看普通 3DGS 模型 python gui.py -m output/NeRF_Syn/lego/3dgs -t render # 查看可重光照模型PBR 模式 python gui.py -m output/NeRF_Syn/lego/neilf -t neilf入口代碼在 gui.py支持實時切換渲染模式、HDR→LDR 顯示非常適合新手直觀理解材質(zhì)分解到底分解出了什么。用自己的數(shù)據(jù)跑一遍真實場景流程詳見 readme.md 的 Try on your own dataCOLMAP重建位姿vismvsnet/convert.py轉(zhuǎn)換為 MVSNet 格式vismvsnet/colmap2mvsnet.py跑 Vis-MVSNet 獲取多視深度vismvsnet/test.py深度過濾 法線估計vismvsnet/filter.py、vismvsnet/prepare_neilf.py執(zhí)行上文兩階段訓(xùn)練命令常見問題與性能建議顯存不夠調(diào)低分辨率或減少--sample_numRTX 3090 為官方基準(zhǔn)配置。材質(zhì)分解出現(xiàn)灰霧多半是幾何正則缺失確認(rèn)訓(xùn)練時帶了深度/法線數(shù)據(jù)與--finetune_visibility。合成物體穿模/錯位檢查 configs/ 中 transform.json 的變換矩陣或用 Cloud Compare 等工具先做點云對齊。環(huán)境光偏暗/過曝HDR 圖.hdr保留高光細(xì)節(jié)更佳可參考 scene/envmap.py 中的 EnvLight 縮放參數(shù)scale??偨Y(jié)Relightable3DGaussian 把3D 高斯?jié)姙R從看什么就是什么推進到隨光而變BRDF 分解賦予材質(zhì)物理屬性光線追蹤算出遮蔽HDR 環(huán)境光隨心切換合成與重光照實時完成。按本文安裝 → 兩階段訓(xùn)練 → 合成重光照 → GUI 查看的路徑走一遍你即可擁有完整的實時重光照工作流 延伸閱讀readme.md官方說明與全部命令、script/各數(shù)據(jù)集一鍵腳本、vismvsnet/幾何增強子模塊【免費下載鏈接】Relightable3DGaussian[ECCV2024] Relightable 3D Gaussian: Real-time Point Cloud Relighting with BRDF Decomposition and Ray Tracing項目地址: https://gitcode.com/gh_mirrors/re/Relightable3DGaussian創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考