๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ˜ŽAI/3D Reconstruction

[Code Build][Ubuntu] SuGaR: Surface-Aligned Gaussian Splatting for Efficient 3D Mesh Reconstruction and High-Quality Mesh Rendering

by SolaKim 2025. 1. 10.

https://github.com/Anttwo/SuGaR?tab=readme-ov-file

 

GitHub - Anttwo/SuGaR: [CVPR 2024] Official PyTorch implementation of SuGaR: Surface-Aligned Gaussian Splatting for Efficient 3D

[CVPR 2024] Official PyTorch implementation of SuGaR: Surface-Aligned Gaussian Splatting for Efficient 3D Mesh Reconstruction and High-Quality Mesh Rendering - Anttwo/SuGaR

github.com

 

 

[ required ubuntu environment]
ubuntu 20.04
cuda 11.8

 

# HTTPS
git clone https://github.com/Anttwo/SuGaR.git --recursive

 

SuGaR/ ๊ฒฝ๋กœ๋กœ ๋“ค์–ด๊ฐ€์„œ

python install.py
conda activate sugar

 

 

python train_full_pipeline.py -s <path to COLMAP dataset> -r <"dn_consistency", "density" or "sdf"> --high_poly True --export_obj True

colmap ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค€๋น„๋˜์–ด์žˆ๋‹ค๋Š” ์ „์ œํ•˜์— train ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

-r argument ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ regularization method ์˜ ์„ ํƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

 

  • Regularization Method (-r ์ธ์ž):
    • ์„ ํƒ ๊ฐ€๋Šฅ ์˜ต์…˜: "dn_consistency", "density", "sdf"
    • ์ถ”์ฒœ: "dn_consistency" (์ตœ์‹  ๋ฐฉ์‹, ์ตœ๊ณ  ํ’ˆ์งˆ ๋ฉ”์‰ฌ ์ œ๊ณต)
    • ๋…ผ๋ฌธ ๊ฒฐ๊ณผ:
      • ๊ฐ์ฒด ์ค‘์‹ฌ ์žฅ๋ฉด: "density"
      • ๋ฐฐ๊ฒฝ์ด ๋ณต์žกํ•œ ์žฅ๋ฉด (Mip-NeRF 360 ๋ฐ์ดํ„ฐ์…‹): "sdf"
  • Polygon ์„ค์ • (--high_poly, --low_poly ์ธ์ž):
    • --high_poly True: 100๋งŒ ๊ฐœ์˜ ์ •์ , ์‚ผ๊ฐํ˜•๋‹น 1๊ฐœ Gaussian
    • --low_poly True: 20๋งŒ ๊ฐœ์˜ ์ •์ , ์‚ผ๊ฐํ˜•๋‹น 6๊ฐœ Gaussian
  • Refinement Time (--refinement_time ์ธ์ž):
    • ์„ค์ • ๊ฐ€๋Šฅ ์˜ต์…˜: "short" (2k ๋ฐ˜๋ณต), "medium", "long" (15k ๋ฐ˜๋ณต)
    • ๊ธฐ๋ณธ๊ฐ’: "long" (15k ๋ฐ˜๋ณต)
    • "short"๋„ ์ถฉ๋ถ„ํžˆ ์ข‹์€ ํ’ˆ์งˆ ์ œ๊ณต ๊ฐ€๋Šฅ
  • OBJ ํŒŒ์ผ ๋‚ด๋ณด๋‚ด๊ธฐ (--export_obj ์ธ์ž):
    • ๊ธฐ๋ณธ ์„ค์ •: OBJ ํŒŒ์ผ ์ถ”์ถœ ํ™œ์„ฑํ™”
    • ์šฉ๋„: Blender์—์„œ ์žฅ๋ฉด ํŽธ์ง‘, ๊ฒฐํ•ฉ, ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ž‘์—… ์‹œ ํ•„์š”

 

<ํŒŒ๋ผ๋ฏธํ„ฐ ์š”์•ฝ>

--scene_path / -s str COLMAP ๋ฐ์ดํ„ฐ์…‹์ด ํฌํ•จ๋œ ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ. N/A
--gs_output_dir str ๊ธฐ๋ณธ 3D Gaussian Splatting ๋ชจ๋ธ ์ฒดํฌํฌ์ธํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ. ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋ธ์„ ์ตœ์ ํ™”ํ•˜์—ฌ ํ•™์Šต์„ ์‹œ์ž‘ํ•จ. N/A
--regularization_type / -r str Gaussians ์ •๋ ฌ ์‹œ ์‚ฌ์šฉํ•˜๋Š” Regularization ์œ ํ˜•: "dn_consistency", "density", "sdf". "dn_consistency" ์‚ฌ์šฉ ๊ถŒ์žฅ. N/A
--eval bool True์ผ ๊ฒฝ์šฐ ํ•™์Šต ์ด๋ฏธ์ง€์˜ ํ‰๊ฐ€ ๋ถ„ํ• ์„ ์ˆ˜ํ–‰ํ•จ. True
--low_poly bool True์ผ ๊ฒฝ์šฐ Low Poly ๋ฉ”์‰ฌ ์‚ฌ์šฉ (20๋งŒ ์ •์ , ์‚ผ๊ฐํ˜•๋‹น 6๊ฐœ์˜ Gaussian). False
--high_poly bool True์ผ ๊ฒฝ์šฐ High Poly ๋ฉ”์‰ฌ ์‚ฌ์šฉ (100๋งŒ ์ •์ , ์‚ผ๊ฐํ˜•๋‹น 1๊ฐœ์˜ Gaussian). False
--refinement_time str Refinement ๋‹จ๊ณ„์— ์‚ฌ์šฉํ•  ๋ฐ˜๋ณต ์‹œ๊ฐ„: "short" (2k ๋ฐ˜๋ณต), "medium" (7k ๋ฐ˜๋ณต), "long" (15k ๋ฐ˜๋ณต). "long"
--export_ply bool True์ผ ๊ฒฝ์šฐ 3D Gaussian์„ .ply ํŒŒ์ผ๋กœ ๋‚ด๋ณด๋ƒ„. ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ํฌ์ง€๋งŒ (์•ฝ 500MB), 3DGS ๋ทฐ์–ด ์‚ฌ์šฉ์— ํ•„์š”ํ•จ. True
--export_obj / -t bool True์ผ ๊ฒฝ์šฐ ์ •์ œ๋œ SuGaR ๋ชจ๋ธ์—์„œ ์ „ํ†ต์ ์ธ ํ…์Šค์ฒ˜ ๋ฉ”์‰ฌ๋ฅผ .obj ํŒŒ์ผ๋กœ ์ตœ์ ํ™” ํ›„ ๋‚ด๋ณด๋ƒ„. UV ํ…์Šค์ฒ˜ ๊ณ„์‚ฐ์€ Nvdiffrast๋กœ ๋ช‡ ์ดˆ ๋งŒ์— ์ฒ˜๋ฆฌ๋จ. True
--square_size int UV ํ…์Šค์ฒ˜์—์„œ ๊ฐ ์‚ผ๊ฐํ˜• ์Œ์— ํ• ๋‹น๋œ ์‚ฌ๊ฐํ˜• ํฌ๊ธฐ. ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ฐ’ ๊ฐ์†Œ ํ•„์š”. 8
--white_background bool True์ผ ๊ฒฝ์šฐ ์ด๋ฏธ์ง€ ๋ฐฐ๊ฒฝ์„ ํฐ์ƒ‰์œผ๋กœ ์„ค์ •ํ•จ. False
 
 
 
SuGaR documentation ์—์„œ๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•™์Šตํ•˜๋Š” scratch ๋ฐฉ๋ฒ•๊ณผ ๊ธฐ์กด ๋ชจ๋ธ ๊ธฐ๋ฐ˜ ํ•™์Šต์ธ ๋ฐฉ๋ฒ• ๋‘๊ฐœ ๋‹ค ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
 

1. Training from Scratch (์ฒ˜์Œ๋ถ€ํ„ฐ ํ•™์Šต)

  • ์ดˆ๊ธฐํ™” ๋ฐฉ์‹:
    • ์•„๋ฌด๋Ÿฐ ์‚ฌ์ „ ํ•™์Šต ์—†์ด Gaussian splats๋ฅผ ๋ฌด์ž‘์œ„๋กœ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ํ•™์Šต์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•™์Šต ์‹œ๊ฐ„:
    • ์ฒ˜์Œ๋ถ€ํ„ฐ ์ตœ์ ์˜ Gaussians ์œ„์น˜์™€ ์ƒ‰์ƒ, ๋ฐ€๋„ ๋“ฑ์„ ํ•™์Šตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.
  • ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค:
    • ๋Œ€๊ทœ๋ชจ ์—ฐ์‚ฐ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ์ดˆ๊ธฐ ์ˆ˜๋ ด ์†๋„๊ฐ€ ๋Š๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ ํ’ˆ์งˆ:
    • ์ตœ์ ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ฐพ์•„๊ฐ€๋ฉฐ ํ•™์Šตํ•˜๋ฏ€๋กœ ๊ฒฐ๊ณผ๊ฐ€ ์ข‹์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•™์Šต ๊ณผ์ •์ด ๋” ๊ธธ์–ด์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

2. Training from a Vanilla Gaussian Splatting Model (๊ธฐ์กด ๋ชจ๋ธ ๊ธฐ๋ฐ˜ ํ•™์Šต)

  • ์ดˆ๊ธฐํ™” ๋ฐฉ์‹:
    • ๊ธฐ์กด Vanilla Gaussian Splatting ๋ชจ๋ธ์˜ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ํ•™์Šต์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•™์Šต ์‹œ๊ฐ„:
    • ๊ธฐ์กด ๋ชจ๋ธ์˜ ์‚ฌ์ „ ํ•™์Šต๋œ Gaussians๊ฐ€ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•™์Šต ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค:
    • ํ•™์Šต์ด ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์—ฐ์‚ฐ ํšจ์œจ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ ํ’ˆ์งˆ:
    • ์‚ฌ์ „ ํ•™์Šต๋œ ์ •๋ณด๊ฐ€ ๊ธฐ๋ฐ˜์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ์•ˆ์ •์ ์ด๊ณ  ๋น ๋ฅด๊ฒŒ ์ข‹์€ ํ’ˆ์งˆ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ•˜์ง€๋งŒ ์‚ฌ์ „ ํ•™์Šต๋œ ๋ชจ๋ธ์ด ํŠน์ • ๋ฐ์ดํ„ฐ์— ๋งž์ถฐ์ ธ ์žˆ์œผ๋ฉด, ์ผ๋ฐ˜ํ™”๋œ ๋ชจ๋ธ๋ณด๋‹ค ์•ฝ๊ฐ„ ์ œํ•œ์ ์ธ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ €๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•™์Šตํ•˜๋Š” scratch ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ํ•™์Šต์„ ํ•˜๋‹ˆ, output ํด๋”์— fined_mesh ์™€ refined_ply ํŒŒ์ผ์ด ์ €์žฅ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

์ž ์ด์ œ, Viewer ๋ฅผ ์ด์šฉํ•ด์„œ output ์„ ๋ Œ๋”๋งํ•˜์—ฌ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

  • ์ž๋™ .ply ํŒŒ์ผ ๋‚ด๋ณด๋‚ด๊ธฐ: ์ตœ์ ํ™” ํ›„ ./output/refined_ply/ ๋””๋ ‰ํ† ๋ฆฌ์— SuGaR ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํ‘œํ˜„์ด ํฌํ•จ๋œ refined 3D Gaussian .ply ํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
    • ์ด .ply ํŒŒ์ผ์€ ๋ชจ๋“  3D Gaussian Splatting Viewer์—์„œ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.
  • ์ถ”์ฒœ Viewer:
    1. ์˜ค๋ฆฌ์ง€๋„ 3D Gaussian Splatting Viewer (์›๋ณธ ๊ตฌํ˜„์˜ Viewer)
    2. SuperSplat Viewer (๊ฐ•๋ ฅํ•œ ์„ฑ๋Šฅ์˜ ๋ทฐ์–ด)
    3. SuperSplat ์›น ๋ฒ„์ „: ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง์ ‘ ์‹œ๊ฐํ™” ๊ฐ€๋Šฅ.
  • SuGaR ์ „์šฉ ๋ทฐ์–ด:
    • ํ…์Šค์ฒ˜ ๋ฉ”์‰ฌ, ์™€์ด์–ดํ”„๋ ˆ์ž„ ๋ฉ”์‰ฌ, refined 3D Gaussian์„ ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์ „์šฉ ์‹ค์‹œ๊ฐ„ ๋ทฐ์–ด๋„ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

 

 

SIBR_gaussianViewer_app.exe ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ€์šฐ์‹œ์•ˆ ply ํŒŒ์ผ์„ ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ, ์ž˜ ํ•™์Šต๋˜์–ด ๋ Œ๋”๋ง ๋œ ๋ชจ์Šต์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

ํ•˜์ง€๋งŒ SuGaR ๋…ผ๋ฌธ ๋‚ด์—์„œ๋„ ์ œ๊ณตํ•˜๋Š” viewer๊ฐ€ ๋”ฐ๋กœ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

SuGaR ์—์„œ ์ œ๊ณตํ•˜๋Š” viewer ๋Š” linux ํ™˜๊ฒฝ๊ณผ Mac OS ํ™˜๊ฒฝ์—์„œ๋Š” build ๊ฐ€ ๋œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ์ด์ œ ubuntu ์˜ vessl ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฅธ ์„ค์ •์—†์ด follow up ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

(window ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ WSL ์„ ํ†ตํ•ด์„œ linux ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.)

 

curl -fsSL https://deb.nodesource.com/setup_21.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install aptitude
sudo aptitude install -y npm

 

./sugar_viewer/ ํด๋”๋กœ ๋“ค์–ด๊ฐ€์„œ

npm install
cd ..
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash

 

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด, ํ„ฐ๋ฏธ๋„์„ ๋‹ซ์•˜๋‹ค๊ฐ€ ๋‹ค์‹œ ์—ด๊ฑฐ๋‚˜ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค

 

 

python train_full_pipeline.py -s <path to COLMAP dataset> -r <"dn_consistency", "density" or "sdf"> --high_poly True --export_obj True --gs_output_dir <path to the Gaussian Splatting output directory>
๋”๋ณด๊ธฐ

python train_full_pipeline.py -s /source/sola/SuGaR/data/tandt_db/db/drjohnson -r dn_consistency --high_poly True --export_obj True --gs_output_dir /source/sola/SuGaR/data/3dgs_model/drjohnson

์ด๋ ‡๊ฒŒ ๋Œ๋ฆฌ๋‹ˆ, ํ•ด๋‹น colmap data set ํด๋”์— ์ด๋ฏธ์ง€๊ฐ€ ์—†๋‹ค๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

FileNotFoundError: [Errno 2] No such file or directory: '/source/sola/SuGaR/data/tandt_db/db/drjohnson/images/IMG_6292.jpg.jpg'

์—๋Ÿฌ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ˆ, ํŒŒ์ผ๋ช…์— ํ™•์žฅ์ž๊ฐ€ ์ค‘๋ณต๋˜์–ด ๋“ค์–ด๊ฐ€ ์žˆ๋Š”๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

=> name์— ํ™•์žฅ์ž๊ฐ€ ์ด๋ฏธ ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ, ๋‹ค์‹œ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋„๋ก ์กฐ๊ฑด๋ฌธ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

(rootํด๋”)/sugar_scene ํด๋”๋กœ ๋“ค์–ด๊ฐ€์„œ cameras.py ์ฝ”๋“œ๋ฅผ ์ผ๋ถ€ ์ˆ˜์ •ํ•ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.


์ˆ˜์ •๋œ ์ฝ”๋“œ ์˜ˆ์‹œ:

 
# ํ™•์žฅ์ž๊ฐ€ ์ด๋ฏธ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ ํ›„ ์ถ”๊ฐ€
if not name.endswith(('.jpg', '.png', '.jpeg', '.JPG', '.PNG')): 
    image_path = os.path.join(image_dir, name + extension)
else: image_path = os.path.join(image_dir, name)

์ฝ”๋“œ ์ ์šฉ ์œ„์น˜:

load_gs_cameras ํ•จ์ˆ˜ ๋‚ด, ๋‹ค์Œ ์ฝ”๋“œ ๋ถ€๋ถ„์„ ์œ„ ์ฝ”๋“œ๋กœ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค:

image_path = os.path.join(image_dir, name + extension)

 

 

* antialiasing issue

sugar_scene ํด๋”์— ์žˆ๋Š” sugar_model.py ์ˆ˜์ • ํ•„์š”.

raster_settings = GaussianRasterizationSettings(
            image_height=int(self.image_height),
            image_width=int(self.image_width),
            tanfovx=self.tanfovx,
            tanfovy=self.tanfovy,
            bg=bg_color,
            scale_modifier=1.,
            viewmatrix=world_view_transform,
            projmatrix=full_proj_transform,
            sh_degree=sh_deg,
            campos=camera_center,
            prefiltered=False,
            debug=False,
            antialiasing=True  # antialiasing ๋งค๊ฐœ๋ณ€์ˆ˜ ์ถ”๊ฐ€
        )

 

* rasterizer ์˜ output ๊ฐœ์ˆ˜ ์˜ค๋ฅ˜.

# error code

rendered_image, radii = rasterizer(
ValueError: too many values to unpack (expected 2)

rasterizer์˜ output ์„ ์ง์ ‘ ์ถœ๋ ฅํ•ด์„œ ๋ณด๋‹ˆ๊นŒ, 3๊ฐœ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Œ.
๊ทธ๋Ÿฐ๋ฐ rendered_image ์™€ radii ๋‘๊ฐœ๋กœ๋งŒ output ์„ ๋ฐ›์œผ๋ ค๊ณ  ํ•˜๋‹ˆ๊นŒ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜... 
๊ทผ๋ฐ ์™œ ์ด๊ฒŒ ์•ˆ๋งž๋Š”์ง€๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.... ์ฝ”๋“œ ์›์ž‘์ž๋“ค์ด ์ž˜ ๋งž์ถฐ๋†“์•˜์„ํ…๋ฐ...?

rendered_image, radii, additional_output = rasterizer(
            means3D = positions,
            means2D = means2D,
            shs = shs,
            colors_precomp = splat_colors,
            opacities = splat_opacities,
            scales = scales,
            rotations = quaternions,
            cov3D_precomp = cov3D)

 ๊ทธ๋ž˜์„œ ์œ„์™€ ๊ฐ™์ด sugar_scene/sugar_model.py ๋ฅผ ์ˆ˜์ •ํ•ด์ฃผ์—ˆ๋‹ค.
additional_output ์ด ์–ด๋””์— ์‚ฌ์šฉ๋˜๋Š”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ...

 

 

๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ train ์‹œํ‚ค๋Š” ๋ช…๋ น๋ฌธ์„ ์ž‘์„ฑํ•ด๋ณด๋ฉด, ์ž˜ ํ•™์Šต๋˜๋Š”๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹น.