3D ๋ฅ๋ฌ๋์์๋ mesh ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ๋ชจ๋ธ์ ๋ฃ๊ธฐ ์ด๋ ต๋ค. ๋ฉ์ฌ๋ vertex์ face๋ก ๊ตฌ์ฑ๋ ๋น์ ํ ๊ตฌ์กฐ์ด๋ฉฐ, ๊ฐ์ฒด๋ง๋ค topology๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ํ ์ ํํ๋ก ๊ณ ์ ํ๊ธฐ ์ด๋ ต๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Signed Distance Function(SDF)์ด ๋๋ฆฌ ํ์ฉ๋๋ค.
SDF(Signed Distance Function)
SDF๋, 3D ๊ณต๊ฐ์ ๊ฐ ์ขํ์ ๋ํด ํด๋น ์ ์ด ์ด๋ค ํ๋ฉด์ผ๋ก๋ถํฐ ์ผ๋ง๋ ๋จ์ด์ ธ ์๋์ง๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ํ๋ด๋ ํจ์์ด๋ค. ํ๋ฉด ๋ด๋ถ์ ์ ์ ์์, ํ๋ฉด ์๋ 0, ํ๋ฉด ์ธ๋ถ๋ ์์ ๊ฐ์ ๊ฐ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ตฌ(sphere)์ ์ค์ฌ์์ ๋ฉ์ด์ง์๋ก ๊ฐ์ด ์ฆ๊ฐํ๊ณ , ๋ด๋ถ๋ก ๊ฐ์๋ก ๊ฐ์ด ๊ฐ์ํ๋ค. ์ด ์ ๋ณด๋ฅผ 3D ๊ฒฉ์ ํํ์ voxel grid๋ก ์ํ๋งํ๋ฉด ๊ณ ์ ๋ ํฌ๊ธฐ์ 3D ํ ์๋ก ํํํ ์ ์๊ฒ ๋๋ค.
์ด๋ฌํ 3D ํ ์๋ CNN, Transformer ๋ฑ ๋ฅ๋ฌ๋ ๋ชจ๋ธ์์ ์ฒ๋ฆฌํ๊ธฐ ์ ํฉํ๋ค. ์๋ฅผ ๋ค์ด SDF๋ฅผ 128x128x128 ํด์๋๋ก voxelizeํ๋ฉด, ์ด๋ค ํํ์ ๋ณต์กํ 3D ๋ฉ์ฌ๋ ๊ฐ์ ๋์ผํ ํด์๋์ ์ ๋ ฅ์ผ๋ก ๋ณํ ๊ฐ๋ฅํ๋ค. ์ด๋ก ์ธํด SDF๋ 3D generative modeling, mesh reconstruction, implicit surface learning ๋ฑ์์ ํ์ค์ฒ๋ผ ์ฌ์ฉ๋๋ค.
SDF ๊ณ์ฐ ๊ณผ์
SDF๋ฅผ ๊ณ์ฐํ๋ ๊ณผ์ ์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ๋ค. ๋จผ์ 3D ๋ฉ์ฌ๋ฅผ ๊ฐ์ ธ์์, ์ ์ฒด ๊ณต๊ฐ์ ์ผ์ ํ ํด์๋์ voxel grid๋ก ๋๋๋ค. ๊ฐ ๊ฒฉ์์ (voxel center)์ ๋ํด, ํด๋น ์ ์ด ๋ฉ์ฌ ํ๋ฉด์์ ์ผ๋ง๋ ๋จ์ด์ ธ ์๋์ง๋ฅผ ์ธก์ ํ์ฌ signed distance ๊ฐ์ ๊ณ์ฐํ๋ค. ์ด๋ฅผ ์ํด ๋ณดํต ๋ฉ์ฌ์์ ๊ฐ์ฅ ๊ฐ๊น์ด face์ ์ฐพ๊ณ , ๊ทธ ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก signed ๊ฐ์ ์ ํ๋ค. ์ ์ด ํ๋ฉด ๋ด๋ถ์ ์๋์ง๋ ๋ณดํต ray casting์ด๋ winding number ๊ฐ์ ๊ธฐ๋ฒ์ ํตํด ํ๋จํ๋ค.
์ด๋ฌํ ๊ณผ์ ์ ํตํด ์ป์ด์ง signed distance ๊ฐ๋ค์ 3D numpy ๋ฐฐ์ด์ด๋ tensor๋ก ์ ์ฅ๋๋ฉฐ, -1์์ +1 ์ฌ์ด์ ๊ฐ์ผ๋ก ์ ๊ทํ๋๊ธฐ๋ ํ๋ค. ์ด ์ ๊ทํ๋ SDF ๋ณผ๋ฅจ์ ์ดํ 3D CNN์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉ๋๊ฑฐ๋, latent representation์ผ๋ก ์ธ์ฝ๋ฉ๋์ด downstream task์ ํ์ฉ๋๋ค.
SDF ํ์ฉ ์์ ์์
SDF๋ ์ฃผ๋ก ๋ค์๊ณผ ๊ฐ์ ์์๋ก ์ฌ์ฉ๋๋ค.
- (1) ๋ฉ์ฌ → SDF ๋ณํ
- (2) SDF๋ฅผ ์ธ์ฝ๋(VAE ๋ฑ)๋ฅผ ํตํด latent vector๋ก ์์ถ
- (3) latent vector๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ต ๋ฐ ์์ฑ ์ํ (์: diffusion, transformer)
- (4) ์์ฑ๋ latent๋ฅผ ๋ค์ SDF๋ก ๋ณต์
- (5) SDF๋ฅผ Marching Cubes ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ฉ์ฌ surface ์ถ์ถ
TripoSG, PartCrafter, DreamFusion ๋ฑ ์ต๊ทผ 3D ์์ฑ ๋ชจ๋ธ์ ์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฅธ๋ค. ํนํ diffusion ๊ธฐ๋ฐ ๋ชจ๋ธ์์ U-Net ๋์ Transformer(DiT)๋ฅผ ์ฌ์ฉํ๋๋ผ๋, ์ ๋ ฅ ํํ์ผ๋ก๋ ์ฌ์ ํ SDF ๊ธฐ๋ฐ latent๊ฐ ์ฐ์ธ๋ค.
SDF์ ํ์ฉ ๋ถ์ผ
SDF๋ ๋ฅ๋ฌ๋ ์ธ์๋ ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์ , ์ถฉ๋ ๊ฐ์ง, ๊ฒฝ๋ก ๊ณํ ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ๊ณต๊ฐ ๊ตฌ์กฐ๋ฅผ ํํํ๋ ํต์ฌ ์๋จ์ผ๋ก ํ์ฉ๋๋ค. ๋ฌด์๋ณด๋ค ์ฐ์์ ์ด๋ฉฐ ํด์๋ ๋ ๋ฆฝ์ ์ธ surface ํํ์ด ๊ฐ๋ฅํ๋ค๋ ์ ์์ ๋งค์ฐ ๊ฐ๋ ฅํ๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, SDF๋ 3D ๊ตฌ์กฐ๋ฅผ ์ ๋ฐํ๊ฒ ํํํ๊ณ , ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ์ฝ๊ฒ ์ฐ๋ํ ์ ์๋ ๊ฐ์ฅ ๋ณดํธ์ ์ด๋ฉฐ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ ์ค ํ๋์ด๋ค.
SDF๋ฅผ ๊ณ์ฐํ๊ฑฐ๋ ํ์ฉํ๊ธฐ ์ํด ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์กด์ฌํ๋ค. ์๋ฅผ ๋ค์ด, PyMCubes, Trimesh, PyMesh, Kaolin(PyTorch3D ๊ธฐ๋ฐ), Open3D ๋ฑ์ SDF๋ฅผ voxel grid๋ก ์ํ๋งํ๊ฑฐ๋, SDF ๋ณผ๋ฅจ์ผ๋ก๋ถํฐ ๋ฉ์ฌ๋ฅผ ์ถ์ถํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. PyMCubes๋ Marching Cubes ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด SDF๋ฅผ mesh๋ก ๋ณํํ๋ ๋ฐ ์์ฃผ ์ฐ์ด๋ฉฐ, Trimesh๋ Open3D๋ ๋ฉ์ฌ์ ํฌ์ธํธ ํด๋ผ์ฐ๋์ ์ ์ฒ๋ฆฌ ๋ฐ ์๊ฐํ์๋ ์ ์ฉํ๋ค.
๋ํ NeRF(Neural Radiance Fields)๋ 3D Gaussian Splatting(3DGS) ๊ฐ์ ์ต์ 3D ํํ ๋ชจ๋ธ๋ค๋ SDF์ ๊ฐ๋ ์ ์ผ๋ก ์ฐ๊ฒฐ๋๋ค. NeRF๋ ์ฅ๋ฉด์ ๋ณผ๋ฅจ ๋ฐ๋์ ์์ผ๋ก ํํํ์ง๋ง, ์ด๋ฅผ implicit surface๋ก ๋ฐ๊พธ๊ธฐ ์ํด SDF๋ฅผ ์ถ์ ํ๊ฑฐ๋ ํ์ตํ๋ ๋ฐฉ์์ด ์์ฃผ ์ฌ์ฉ๋๋ค. 3DGS๋ ํ๋ฉด ๊ธฐ๋ฐ ํํ์ ์๋์ง๋ง, NeRF์ ์ ์ฌํ ๋ฐฉ์์ผ๋ก ๋ทฐ ์ผ๊ด์ฑ ๋ฐ ๊ณต๊ฐ ๊ตฌ์กฐ๋ฅผ ํ์ตํ๋ฉฐ, ๊ฒฝ์ฐ์ ๋ฐ๋ผ SDF ๊ธฐ๋ฐ์ prior๋ ๋ณด์ ๊ธฐ๋ฒ์ด ํจ๊ป ์ฌ์ฉ๋๊ธฐ๋ ํ๋ค.
์ด์ฒ๋ผ SDF๋ ๊ณ ์ ์ ์ธ 3D geometry๋ถํฐ ํ๋์ neural implicit field๊น์ง ํญ๋๊ฒ ์์ฉ๋๋ ํํ ๋ฐฉ์์ผ๋ก, 3D ๋ฅ๋ฌ๋ ์ฐ๊ตฌ ๋ฐ ์์ฉ์์ ์ฌ์ ํ ์ค์ฌ์ ์ธ ์ญํ ์ ํ๊ณ ์๋ค.