WebXR์ ์กฐ๋ช ์ถ์ ๊ธฐ์ ์ด ์ฆ๊ฐ ํ์ค์ ์ด๋ป๊ฒ ํ์ ํ๋์ง ์์๋ณด์ธ์. ๊ฐ์ ๊ฐ์ฒด๊ฐ ์ฌ์ค์ ์ธ ๋จธํฐ๋ฆฌ์ผ ๋ ๋๋ง์ผ๋ก ํ์ค ์ธ๊ณ์ ์๋ฒฝํ๊ฒ ํตํฉ๋ฉ๋๋ค. ๊ธฐ์ ์ ๊น์ด, ๊ธ๋ก๋ฒ ์ ์ฉ ์ฌ๋ก, ๋ฏธ๋ ์ ์ฌ๋ ฅ์ ํ์ํฉ๋๋ค.
WebXR ์กฐ๋ช ์ถ์ : ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ์ฌ์ค์ ์ธ AR ๋จธํฐ๋ฆฌ์ผ ๋ ๋๋ง์ ์ ์ฌ๋ ฅ ํด์
์ฆ๊ฐ ํ์ค(AR)์ ๋์งํธ ์ ๋ณด๊ฐ ์ฐ๋ฆฌ์ ๋ฌผ๋ฆฌ์ ํ๊ฒฝ๊ณผ ์์ฐ์ค๋ฝ๊ฒ ์ตํฉ๋๋ ๋ฏธ๋๋ฅผ ์ฝ์ํ๋ฉฐ ์ ์ธ๊ณ์ ์์๋ ฅ์ ์ฌ๋ก์ก์์ต๋๋ค. ๋ถ์ฃผํ ์์ฅ์์์ ํจ์ ๊ฐ์ ์ฐฉ์ฉ๋ถํฐ ๊ฑด์ค ํ์ฅ์ ๊ฑด์ถ ์ค๊ณ ์๊ฐํ์ ์ด๋ฅด๊ธฐ๊น์ง, AR์ ์ ์ฌ๋ ฅ์ ๋ฐฉ๋ํ๋ฉฐ ์ ์ธ๊ณ์ ์ผ๋ก ๋ณํ์ ๊ฐ์ ธ์ฌ ๊ฒ์ ๋๋ค. ํ์ง๋ง AR์ ๊ถ๊ทน์ ์ธ ์ฝ์์ ๊ฐ๋ก๋ง๋ ๊ณ ์ง์ ์ธ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ๋ฐ๋ก ๊ฐ์ ๊ฐ์ฒด์ ์ค์ ํ๊ฒฝ ๊ฐ์ ์ข ์ข ๊ฑฐ์ฌ๋ฆฌ๋ ์๊ฐ์ ๋ถ์กฐํ์ ๋๋ค. ๋์งํธ ์์๋ ์ข ์ข "๋ถ์ฌ๋ฃ๊ธฐ"ํ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ฉฐ, ๋ฌผ๋ฆฌ์ ๊ฐ์ฒด๋ฅผ ํ์ค์ ๊ณ ์ ์ํค๋ ์์ฐ์ค๋ฌ์ด ์กฐ๋ช , ๊ทธ๋ฆผ์, ๋ฐ์ฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. ์ด๋ฌํ ์ฌ์ค์ฑ์ ๊ฒฐ์ ์ ์ธ ๊ฒฉ์ฐจ๋ ๋ชฐ์ ๊ฐ์ ๊ฐ์์ํค๊ณ , ์ฌ์ฉ์ ์์ฉ์ ์ํฅ์ ๋ฏธ์น๋ฉฐ, ๋ค์ํ ๊ธ๋ก๋ฒ ํ๊ฒฝ์์ AR์ ์ค์ฉ์ ์ ์ฉ์ฑ์ ์ ํํฉ๋๋ค.
์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋์์๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฐ์ฅ ์ค์ํ ๋ฐ์ ์ค ํ๋์ธ WebXR ์กฐ๋ช ์ถ์ (WebXR Lighting Estimation)์ ๋ํด ์์ธํ ๋ค๋ฃน๋๋ค. ์ด ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ์๊ฐ ๊ฐ์ ์ฝํ ์ธ ๊ฐ ๋จ์ํ ํ์ค ์ธ๊ณ๋ฅผ ๋ฎ์ด์์ฐ๋ ๊ฒ์ด ์๋๋ผ, ๋ง์น ์ฅ๋ฉด์ ๋ณธ์ง์ ์ธ ๋ถ๋ถ์ธ ๊ฒ์ฒ๋ผ ์ง์ ์ผ๋ก ์ํ๋ AR ๊ฒฝํ์ ๋ง๋ค ์ ์๋๋ก ์ง์ํฉ๋๋ค. ์ฌ์ฉ์์ ํ๊ฒฝ ์กฐ๋ช ์กฐ๊ฑด์ ์ ํํ๊ฒ ์ธ์ํ๊ณ ์ฌํํจ์ผ๋ก์จ, WebXR ์กฐ๋ช ์ถ์ ์ ์ฌ์ค์ ์ธ ๋จธํฐ๋ฆฌ์ผ ๋ ๋๋ง์ ์๋ก์ด ์๋๋ฅผ ์ด์ด, ์ ์ธ๊ณ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์ ๊ทผ ๊ฐ๋ฅํ ์ฆ๊ฐ ํ์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ๋นํ ๋ฐ ์๋ ์ง์ ์ฑ์ ๋ถ์ฌํฉ๋๋ค.
์ฆ๊ฐ ํ์ค์์์ ์ฌ์ค์ฑ ์ถ๊ตฌ๋ ๊ณ์๋๋ค
์ธ๊ฐ์ ์๊ฐ ์์คํ ์ ๋ถ์ผ์น๋ฅผ ์๋ณํ๋ ๋ฐ ๋งค์ฐ ๋ฅ์ํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ฌผ๋ฆฌ์ ๊ฐ์ฒด๋ฅผ ๋ณผ ๋, ์ฐ๋ฆฌ์ ๋๋ ๋ณธ๋ฅ์ ์ผ๋ก ๋น์ด ๊ทธ ํ๋ฉด๊ณผ ์ด๋ป๊ฒ ์ํธ ์์ฉํ๋์ง๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ์ฃผ๋ณ๊ด์ ๋ฐ์ฌํ๋ ๋ฐฉ์, ์ฃผ๋ ๊ด์์ผ๋ก๋ถํฐ ๊ทธ๋ฆผ์๋ฅผ ๋๋ฆฌ์ฐ๋ ๋ฐฉ์, ๊ทธ๋ฆฌ๊ณ ์ฌ์ง ํน์ฑ์ ๋ฐ๋ผ ์ ๋ฐ์ฌ ๋๋ ๋๋ฐ์ฌ๋ฅผ ๋ํ๋ด๋ ๋ฐฉ์ ๋ฑ์ ๋ง์ด์ฃ . ์ด๊ธฐ AR์์ ๊ฐ์ ๊ฐ์ฒด๋ ์ข ์ข ์ด๋ฌํ ๊ฒฐ์ ์ ์ธ ์๊ฐ์ ๋จ์๊ฐ ๋ถ์กฑํ์ต๋๋ค. ์๋ฌด๋ฆฌ ์์ธํ๊ฒ ํ ์ค์ฒ๋ง๋ 3D ๋ชจ๋ธ์ด๋ผ๋ ๊ท ์ผํ๊ณ ๋นํ์ค์ ์ธ ์กฐ๋ช ์ ๋ฐ์ผ๋ฉด ์ธ์์ ์ผ๋ก ๋ณด์ผ ์๋ฐ์ ์์ผ๋ฉฐ, ์ค์ ๋ฐ๋ฅ์ ๊ทธ๋ฆผ์๋ฅผ ๋๋ฆฌ์ฐ๊ฑฐ๋ ์ฃผ๋ณ ํ๊ฒฝ์ ๋ฐ์ฌํ์ง ๋ชปํ์ต๋๋ค.
AR ์ฌ์ค์ฑ์ ์ด๋ฌํ "๋ถ์พํ ๊ณจ์ง๊ธฐ"๋ ์ฌ๋ฌ ์์ธ์์ ๋น๋กฏ๋ฉ๋๋ค:
- ์ฃผ๋ณ๊ด ๋ถ์ผ์น: ๊ฐ์ ๊ฐ์ฒด๋ ์ข ์ข ๊ธฐ๋ณธ์ ์ด๊ณ ํํํ ์ฃผ๋ณ๊ด์ ๋ฐ์, ์ผ๋ชฐ์ ๋ฐ๋ปํ ๋น, ํ๋ฆฐ ํ๋์ ์ฐจ๊ฐ์ด ํค, ๋๋ ์ค๋ด ์กฐ๋ช ์ ํน์ ์์จ๋์ ์ผ์นํ์ง ๋ชปํฉ๋๋ค.
- ๋ฐฉํฅ์ฑ ์กฐ๋ช ์ ๋ถ์ฌ: ํ์ค ์ธ๊ณ์ ์ฅ๋ฉด์๋ ์ผ๋ฐ์ ์ผ๋ก ํ๋ ์ด์์ ์ฃผ๋ ๊ด์(ํ์, ๋จํ)์ด ์์ต๋๋ค. ์ด๋ฅผ ์ ํํ๊ฒ ์๋ณํ๊ณ ๋ณต์ ํ์ง ์์ผ๋ฉด ๊ฐ์ ๊ฐ์ฒด๋ ์ ํํ ๊ทธ๋ฆผ์๋ฅผ ๋๋ฆฌ์ฐ๊ฑฐ๋ ์ฌ์ค์ ์ธ ํ์ด๋ผ์ดํธ๋ฅผ ํํํ ์ ์์ด, ํ๋ฉด์ ๋์ฌ ์๊ธฐ๋ณด๋ค๋ ๋ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
- ๋ถ์ ํํ ๋ฐ์ฌ์ ์ ๋ฐ์ฌ: ๋ฐ์ฌ์จ์ด ๋์ ๊ฐ์ ๊ฐ์ฒด(์: ๊ธ์ ๊ฐ๊ตฌ, ๊ดํ ์๋ ์ ๋ฆฌ)๋ ์ฃผ๋ณ ํ๊ฒฝ์ ๋๋ฌ๋ ๋๋ค. ์ด๋ฌํ ๋ฐ์ฌ๊ฐ ์๊ฑฐ๋ ๋ถ์ ํํ๋ฉด ๊ฐ์ฒด๋ ์ค์ ํ๊ฒฝ๊ณผ์ ์ฐ๊ฒฐ์ฑ์ ์๊ฒ ๋ฉ๋๋ค.
- ๊ทธ๋ฆผ์ ๋ถ์ผ์น: ๊ทธ๋ฆผ์๋ ๊น์ด์ ์์น์ ๋ํ ๊ทผ๋ณธ์ ์ธ ๋จ์์ ๋๋ค. ๊ฐ์ ๊ฐ์ฒด๊ฐ ์ค์ ๊ด์๊ณผ ์ผ์นํ์ง ์๋ ๊ทธ๋ฆผ์๋ฅผ ๋๋ฆฌ์ฐ๊ฑฐ๋, ๊ทธ ๊ทธ๋ฆผ์๊ฐ ์ค์ ๊ทธ๋ฆผ์์ ๊ฐ๋ ๋ฐ ์์๊ณผ ์ผ์นํ์ง ์์ผ๋ฉด ํ์์ด ๊นจ์ง๋๋ค.
- ํ๊ฒฝ ์์ ๋ฒ์ง(Color Bleed): ์ฃผ๋ณ ํ๋ฉด์ ์์์ ๋ฐ์ฌ๋ ๋น์ ํตํด ๊ฐ์ฒด์ ์ธ๊ด์ ๋ฏธ๋ฌํ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ด๊ฒ์ด ์์ผ๋ฉด ๊ฐ์ ๊ฐ์ฒด๋ ๋๋ ทํ๊ฒ ๊ณ ๋ฆฝ๋์ด ๋ณด์ผ ์ ์์ต๋๋ค.
์ด๋ฌํ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๋ ๊ฒ์ ๋จ์ํ ๋ฏธํ์ ์ธ ์ถ๊ตฌ๊ฐ ์๋๋ผ AR์ ์ ์ฉ์ฑ์ ๊ทผ๋ณธ์ ์ธ ์์์ ๋๋ค. ๊ฐ์ ์ฐฉ์ฉ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๊ธ๋ก๋ฒ ํจ์ ๋ธ๋๋์ ๊ฒฝ์ฐ, ๊ณ ๊ฐ์ ๋ญ๋ฐ์ด์ ๋ฐ์ ์ผ์ธ ์์ฅ์์๋ถํฐ ํ๋ฆฌ์ ์ด๋์ด ๋ถํฐํฌ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ์กฐ๋ช ์กฐ๊ฑด์์ ์์์ด ์ด๋ป๊ฒ ๋ณด์ด๋์ง ํ์ธํ ํ์๊ฐ ์์ต๋๋ค. ๋ ์ผ ๊ณต์ฅ์์ ์ฐ์ ๊ธฐ๊ณ์ ์ค๊ณ๋๋ฅผ ์ค๋ฒ๋ ์ดํ๊ธฐ ์ํด AR์ ์ฌ์ฉํ๋ ์์ง๋์ด์๊ฒ๋, ๊ณต์ฅ์ ๋์ ์ธ ์กฐ๋ช ๊ณผ ๊ด๊ณ์์ด ๋์งํธ ์ง์นจ์ด ๋ช ํํ๊ฒ ๋ณด์ด๊ณ ์ํํ๊ฒ ํตํฉ๋์ด์ผ ํฉ๋๋ค. WebXR ์กฐ๋ช ์ถ์ ์ ์ด๋ฌํ ์ฌ์ค์ฑ์ ๊ฒฉ์ฐจ๋ฅผ ๋ฉ์ฐ๋ ์ค์ํ ๋๊ตฌ๋ฅผ ์ ๊ณตํ์ฌ, ๋ง์ ์๋๋ฆฌ์ค์์ AR์ด ํ์ค๊ณผ ์ง์ ์ผ๋ก ๊ตฌ๋ณํ ์ ์๊ฒ ๋ง๋ญ๋๋ค.
WebXR ์กฐ๋ช ์ถ์ : ํ๊ฒฝ ์ธ์์ ๋ํ ์ฌ์ธต ๋ถ์
WebXR ์กฐ๋ช ์ถ์ ์ WebXR ๋๋ฐ์ด์ค API ๋ด์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ผ๋ก, ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ธฐ๋ฐ AR ์์คํ (์: ์๋๋ก์ด๋์ ARCore, iOS์ ARKit)์ ์ํด ์ธ์๋ ์ค์ ํ๊ฒฝ์ ์กฐ๋ช ์กฐ๊ฑด์ ๋ํ ์ ๋ณด๋ฅผ ์ฟผ๋ฆฌํ๊ณ ์์ ํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๊ฒ์ ๋จ์ํ ๋ฐ๊ธฐ์ ๊ดํ ๊ฒ์ด ์๋๋ผ, ์ ์ฒด ์กฐ๋ช ํ๊ฒฝ์ ๋ํ ์ ๊ตํ ๋ถ์์ด๋ฉฐ, ๋ณต์กํ ํ์ค ์ธ๊ณ์ ๋ฌผ๋ฆฌํ์ ๊ฐ์ ์ฝํ ์ธ ๋ ๋๋ง์ ์ํ ์คํ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ก ๋ณํํฉ๋๋ค.
ํต์ฌ ๋ฉ์ปค๋์ฆ์ AR ์ฅ์น์ ์นด๋ฉ๋ผ์ ์ผ์๊ฐ ์ค์๊ฐ์ผ๋ก ์ฅ๋ฉด์ ์ง์์ ์ผ๋ก ๋ถ์ํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ๊ณ ๊ธ ์ปดํจํฐ ๋น์ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ํตํด ์์คํ ์ ์ฃผ์ ์กฐ๋ช ๋งค๊ฐ๋ณ์๋ฅผ ์๋ณํ๊ณ , ์ด๋ `XRLightEstimate` ๊ฐ์ฒด๋ฅผ ํตํด WebXR ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ธ์ถ๋ฉ๋๋ค. ์ด ๊ฐ์ฒด๋ ์ผ๋ฐ์ ์ผ๋ก ๋ช ๊ฐ์ง ์ค์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค:
1. ๊ตฌ๋ฉด ์กฐํ ํจ์(Ambient Spherical Harmonics)
์ด๊ฒ์ ์๋ง๋ ์กฐ๋ช ์ถ์ ์ ๊ฐ์ฅ ๋ฏธ๋ฌํ๊ณ ๊ฐ๋ ฅํ ์ธก๋ฉด์ผ ๊ฒ์ ๋๋ค. ๋จ์ผ ํ๊ท ์ฃผ๋ณ ์์ ๋์ , ๊ตฌ๋ฉด ์กฐํ ํจ์๋ ๋ชจ๋ ๋ฐฉํฅ์์ ์ค๋ ์ฃผ๋ณ๊ด์ ๋ํ ๊ณ ์ถฉ์ค๋ ํํ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ์ฒด ์ฃผ์์ ๊ฐ์์ ๊ตฌ๊ฐ ์๋ค๊ณ ์์ํด ๋ณด์ธ์. ๊ตฌ๋ฉด ์กฐํ ํจ์๋ ๋ชจ๋ ๊ฐ๋์์ ๋น์ด ๊ทธ ๊ตฌ์ ์ด๋ป๊ฒ ๋ฟ๋์ง๋ฅผ ์ค๋ช ํ์ฌ, ๋ฏธ๋ฌํ ์์ ๋ณํ, ๊ทธ๋ผ๋ฐ์ด์ ๋ฐ ์ ์ฒด ๊ฐ๋๋ฅผ ํฌ์ฐฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ ๊ฐ์ฒด๋ ์ฐฝ๋ฌธ์์ ๋ค์ด์ค๋ ๋ฐ๋ปํ ๋น, ์ฒ์ฅ ์กฐ๋ช ์์ ๋์ค๋ ์ฐจ๊ฐ์ด ๋น, ๋๋ ๊ทผ์ฒ ํ์ธํธ ๋ฒฝ์์ ๋ฐ์ฌ๋ ์์๊ณผ ๊ฐ์ ๋ฐฉ์ ๋ฏธ๋ฌํ ์ฃผ๋ณ๊ด์ ํฌ์ฐฉํ ์ ์์ต๋๋ค.
- ์๋ ๋ฐฉ์: ๊ตฌ๋ฉด ์กฐํ ํจ์๋ ๊ตฌ์ ํ๋ฉด์ ์๋ ํจ์๋ฅผ ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉ๋๋ ์ํ์ ๊ธฐ์ ์ ๋๋ค. ์กฐ๋ช ์ ๋งฅ๋ฝ์์, ์ด๋ค์ ์ ์ฃผํ ์กฐ๋ช ์ ๋ณด, ์ฆ ํ๊ฒฝ ์ ๋ฐ์ ๊ฑธ์น ๋น๊ณผ ์์์ ๋์ ๋ณํ๋ฅผ ํจ์จ์ ์ผ๋ก ํฌ์ฐฉํฉ๋๋ค. AR ์์คํ ์ ์นด๋ฉ๋ผ ํผ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฌํ ๊ณ์๋ฅผ ์ถ์ ํฉ๋๋ค.
- ์ฌ์ค์ฑ์ ๋ฏธ์น๋ ์ํฅ: ์ด๋ฌํ ๊ตฌ๋ฉด ์กฐํ ํจ์๋ฅผ ๊ฐ์ ๊ฐ์ฒด์ ๋ฌผ๋ฆฌ ๊ธฐ๋ฐ ๋ ๋๋ง(PBR) ๋จธํฐ๋ฆฌ์ผ์ ์ ์ฉํจ์ผ๋ก์จ, ๊ฐ์ฒด๋ ์ ์ฒด ํ๊ฒฝ์ ์ํด ์ฌ๋ฐ๋ฅด๊ฒ ์กฐ๋ช ๋์ด ์ฅ๋ฉด์ ์ค์ ์ฃผ๋ณ ์์๊ณผ ๊ฐ๋๋ฅผ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค. ์ด๋ ๋น์ ์ง์ ๋ฐ์ฌํ๊ธฐ๋ณด๋ค๋ ์ฃผ๋ก ์ฐ๋์ํค๋ ํ์ฐ ํ๋ฉด์ ๊ฐ์ง ๊ฐ์ฒด์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
2. ๋ฐฉํฅ์ฑ ์กฐ๋ช ์ถ์
์ฃผ๋ณ๊ด์ ์ด๋์๋ ์กด์ฌํ์ง๋ง, ๋๋ถ๋ถ์ ์ฅ๋ฉด์๋ ํ์, ๋ฐ์ ๋จํ ๋๋ ์คํฌํธ๋ผ์ดํธ์ ๊ฐ์ ํ๋ ์ด์์ ์ง๋ฐฐ์ ์ด๊ณ ๋๋ ทํ ๊ด์์ด ์์ต๋๋ค. ์ด๋ฌํ ๋ฐฉํฅ์ฑ ์กฐ๋ช ์ ๋ ์นด๋ก์ด ๊ทธ๋ฆผ์๋ฅผ ๋๋ฆฌ์ฐ๊ณ ๊ฐ์ฒด์ ๋๋ ทํ ํ์ด๋ผ์ดํธ(์ ๋ฐ์ฌ)๋ฅผ ๋ง๋๋ ์ญํ ์ ํฉ๋๋ค.
- ์๋ ๋ฐฉ์: AR ์์คํ
์ ์ฃผ ๋ฐฉํฅ์ฑ ๊ด์์ ์กด์ฌ์ ์์ฑ์ ์๋ณํฉ๋๋ค. ๋ค์์ ์ ๊ณตํฉ๋๋ค:
- ๋ฐฉํฅ: ๊ฐ์ฒด์์ ๊ด์์ ํฅํ๋ ๋ฒกํฐ์ ๋๋ค. ์ด๋ ์ ํํ ๊ทธ๋ฆผ์ ๋ฐฉํฅ๊ณผ ์ ๋ฐ์ฌ ํ์ด๋ผ์ดํธ๋ฅผ ๊ณ์ฐํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
- ๊ฐ๋: ๋น์ ๋ฐ๊ธฐ์ ๋๋ค.
- ์์: ๋น์ ์์จ๋์ ๋๋ค (์: ๋ฐ๋ปํ ๋ฐฑ์ด๋ฑ, ์ฐจ๊ฐ์ด ์ฃผ๊ด).
- ์ฌ์ค์ฑ์ ๋ฏธ์น๋ ์ํฅ: ์ด ๋ฐ์ดํฐ๋ฅผ ํตํด ๊ฐ๋ฐ์๋ 3D ์ฅ๋ฉด์ ์ค์ ์ฃผ ๊ด์์ ์ ๋ฐํ๊ฒ ๋ชจ๋ฐฉํ๋ ๊ฐ์ ๋ฐฉํฅ์ฑ ์กฐ๋ช ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ ๊ฐ์ฒด๋ ์ ํํ ์ง์ ์กฐ๋ช ์ ๋ฐ๊ณ , ์ฌ์ค์ ์ธ ์ ๋ฐ์ฌ๋ฅผ ์์ฑํ๋ฉฐ, ๊ฐ์ฅ ์ค์ํ๊ฒ๋ ์ค์ ๊ทธ๋ฆผ์์ ์๋ฒฝํ๊ฒ ์ ๋ ฌ๋๋ ๊ทธ๋ฆผ์๋ฅผ ๋๋ฆฌ์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ค๋๋ ฅ ์๊ฒ ๊ณ ์ ์ํต๋๋ค.
3. ๋ฐ์ฌ๋ฅผ ์ํ ํ๊ฒฝ ํ๋ธ๋งต
๋ฐ์ฌ์จ์ด ๋งค์ฐ ๋์ ํ๋ฉด(๊ธ์, ๊ดํ ํ๋ผ์คํฑ, ์ ๋ฆฌ)์ ๊ฒฝ์ฐ, ๊ตฌ๋ฉด ์กฐํ ํจ์๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ ์ ์์ต๋๋ค. ์ด๋ฌํ ํ๋ฉด์ ์ฃผ๋ณ ํ๊ฒฝ์ ์ ํํ๊ฒ ๋ฐ์ฌํ์ฌ ํ๊ฒฝ์ ์ ๋ช ํ๊ณ ๊ณ ์ฃผํ์ ์ธ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ์ด์ผ ํฉ๋๋ค. ๋ฐ๋ก ์ฌ๊ธฐ์์ ํ๊ฒฝ ํ๋ธ๋งต์ด ์ฌ์ฉ๋ฉ๋๋ค.
- ์๋ ๋ฐฉ์: ํ๊ฒฝ ํ๋ธ๋งต์ ํน์ ์ง์ ์์ ํ๊ฒฝ์ ํ๋ ธ๋ผ๋ง ๋ทฐ๋ฅผ ์บก์ฒํ๋ 6๊ฐ์ ํ ์ค์ฒ ์ธํธ(ํ๋ธ์ ๋ฉด์ ๋ํ๋)์ ๋๋ค. AR ์์คํ ์ ์นด๋ฉ๋ผ ํผ๋์ ํ๋ ์์ ํจ๊ป ์ฐ๊ฒฐํ์ฌ ์ด ํ๋ธ๋งต์ ์์ฑํ๋ฉฐ, ์ข ์ข ๋ ๋ฎ์ ํด์๋๋ก ๋๋ AR ์ฝํ ์ธ ์์ฒด๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํ ํน์ ์ฒ๋ฆฌ๋ฅผ ๊ฑฐ์นฉ๋๋ค.
- ์ฌ์ค์ฑ์ ๋ฏธ์น๋ ์ํฅ: ์ด ํ๋ธ๋งต์ PBR ๋จธํฐ๋ฆฌ์ผ์ ๋ฐ์ฌ ๊ตฌ์ฑ ์์์ ์ ์ฉํจ์ผ๋ก์จ, ๋ฐ์ฌ์จ์ด ๋์ ๊ฐ์ ๊ฐ์ฒด๋ ์ฃผ๋ณ ํ๊ฒฝ์ ์ ํํ๊ฒ ๋น์ถ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํฌ๋กฌ ๊ฐ์ฒด๋ ๋ฒฝ, ์ฒ์ฅ, ์ฌ์ง์ด ๊ทผ์ฒ์ ์ค์ ๊ฐ์ฒด๊น์ง ๋ฐ์ฌํ์ฌ ์ง์ ํ ํฌ๋กฌ์ฒ๋ผ ๋ณด์ด๊ฒ ํ์ฌ, ์ฅ๋ฉด ๋ด์์์ ์กด์ฌ๊ฐ๊ณผ ํตํฉ๊ฐ์ ๋์ฑ ํฅ์์ํต๋๋ค.
๊ธฐ์ ์ ๊ธฐ๋ฐ: ์ฅ์น๊ฐ ๋น์ ์ธ์ํ๋ ๋ฐฉ๋ฒ
WebXR ์กฐ๋ช ์ถ์ ์ ๋ง๋ฒ์ ๋จ์ํ ์์์๊ฐ ์๋๋๋ค. ์ด๋ ํ๋์จ์ด, ๊ณ ๊ธ ์๊ณ ๋ฆฌ์ฆ, ๊ทธ๋ฆฌ๊ณ ์ ์ ์๋ API์ ์ ๊ตํ ์ํธ ์์ฉ์ ๋๋ค. ์ด๋ฌํ ๊ธฐ๋ณธ ํ๋ก์ธ์ค๋ฅผ ์ดํดํ๋ฉด ์ด ๊ธฐ์ ์ ํ๊ณผ ์ ๋ฐ์ฑ์ ์ ์ ์์ต๋๋ค.
1. ์ผ์ ๋ฐ์ดํฐ ์ตํฉ ๋ฐ ์นด๋ฉ๋ผ ์คํธ๋ฆผ ๋ถ์
์ต์ AR ์ง์ ์ฅ์น(์ค๋งํธํฐ, ์ ์ฉ AR/VR ํค๋์ )๋ ๋ค์ํ ์ผ์๋ก ๊ฐ๋ ์ฐจ ์์ผ๋ฉฐ, ์ด ๋ชจ๋ ๊ฒ์ด ํ๋ ฅํ์ฌ ์๋ํฉ๋๋ค:
- RGB ์นด๋ฉ๋ผ: ์๊ฐ ์ ๋ณด์ ์ฃผ์ ์์ค์ ๋๋ค. ๋น๋์ค ์คํธ๋ฆผ์ ํ๋ ์ ๋จ์๋ก ์ง์์ ์ผ๋ก ๋ถ์๋ฉ๋๋ค.
- IMU (๊ด์ฑ ์ธก์ ์ฅ์น): ๊ฐ์๋๊ณ์ ์์ด๋ก์ค์ฝํ๋ก ๊ตฌ์ฑ๋ IMU๋ ์ฅ์น์ ์์ง์๊ณผ ๋ฐฉํฅ์ ์ถ์ ํ์ฌ, ์ฌ์ฉ์์ ์์ ์ด ํ๊ฒฝ์ ๋ํด ์ด๋ป๊ฒ ๊ด๋ จ๋๋์ง ์ดํดํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
- ๊น์ด ์ผ์ (LiDAR/ToF): ์ ์ ๋ ๋ณดํธํ๋๊ณ ์๋ ์ด ์ผ์๋ค์ ์ ํํ ๊น์ด ์ ๋ณด๋ฅผ ์ ๊ณตํ์ฌ ๋ ๋์ ์ฅ๋ฉด ์ดํด, ๊ฐ๋ ค์ง(occlusion), ๊ทธ๋ฆฌ๊ณ ์ ์ฌ์ ์ผ๋ก ๋ ์ ํํ ๋น ์ ํ ๋ชจ๋ธ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ์ฃผ๋ณ๊ด ์ผ์: ์นด๋ฉ๋ผ ๊ธฐ๋ฐ ๋ถ์๋ณด๋ค ๋ ์ ๋ฐํ์ง๋ง, ์ด ์ผ์๋ ์ด๊ธฐ ์กฐ๋ช ์ถ์ธก์ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์๋ ์ผ๋ฐ์ ์ธ ๋ฐ๊ธฐ ์ธก์ ๊ฐ์ ์ ๊ณตํฉ๋๋ค.
์์ ์นด๋ฉ๋ผ ์คํธ๋ฆผ์ ์กฐ๋ช ์ถ์ ์ ๊ฐ์ฅ ์ค์ํ ์ ๋ ฅ์ ๋๋ค. ์ปดํจํฐ ๋น์ ์๊ณ ๋ฆฌ์ฆ์ ์ด ๋น๋์ค ํผ๋๋ฅผ ๋ถ์ํ์ฌ ์ธก๊ด ์ ๋ณด๋ฅผ ์ถ์ถํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- ํ๋ ๋ฐ ์์ฐจ ๋ถ์: ์ฅ๋ฉด์ ์ ์ฒด ๋ฐ๊ธฐ์ ์์ ๊ตฌ์ฑ ์์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
- ์ฃผ ๊ด์ ๊ฐ์ง: ๊ฐ๋ ฌํ ๋ฐ๊ธฐ ์์ญ์ ์๋ณํ๊ณ ํ๋ ์ ๊ฐ์ ์์น์ ํน์ฑ์ ์ถ์ ํ์ฌ ๋ฐฉํฅ์ฑ ์กฐ๋ช ์ ์ถ๋ก ํฉ๋๋ค.
- ์ฅ๋ฉด ๋ถํ : ๊ณ ๊ธ ๋ชจ๋ธ์ ๊ด์, ์กฐ๋ช ๋ ํ๋ฉด, ๊ทธ๋ฆผ์ ์์ญ์ ๊ตฌ๋ณํ์ฌ ๋ ๊ฒฌ๊ณ ํ ์กฐ๋ช ๋ชจ๋ธ์ ๊ตฌ์ถํ๋ ค๊ณ ์๋ํ ์ ์์ต๋๋ค.
- HDR (High Dynamic Range) ์ฌ๊ตฌ์ฑ: ์ผ๋ถ ์์คํ ์ ํ์ค ์นด๋ฉ๋ผ ์์์์ HDR ํ๊ฒฝ ๋งต์ ์ฌ๊ตฌ์ฑํ ์ ์์ผ๋ฉฐ, ์ด๋ ๊ตฌ๋ฉด ์กฐํ ํจ์์ ํ๋ธ๋งต์ ํ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๊ณผ์ ์ ์ฌ๋ฌ ๋ ธ์ถ์ ์ง๋ฅ์ ์ผ๋ก ๊ฒฐํฉํ๊ฑฐ๋ ์ ๊ตํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์นด๋ฉ๋ผ์ ์ง์ ์บก์ฒ ๋ฒ์๋ฅผ ๋์ด์๋ ์กฐ๋ช ๊ฐ์ ์ถ๋ก ํฉ๋๋ค.
2. ํ๊ฒฝ ๋งคํ์ ์ํ ๋จธ์ ๋ฌ๋ ๋ฐ ์ปดํจํฐ ๋น์
ํ๋ AR ์กฐ๋ช ์ถ์ ์ ํต์ฌ์๋ ๋จธ์ ๋ฌ๋์ด ์์ต๋๋ค. ๋ฐฉ๋ํ ์์ ์ค์ ํ๊ฒฝ ๋ฐ์ดํฐ์ ์ผ๋ก ํ๋ จ๋ ์ ๊ฒฝ๋ง์ ์ง์ ์ธก์ ํ๊ธฐ ์ด๋ ค์ด ์กฐ๋ช ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๋ก ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ฌํ ๋ชจ๋ธ์ ๋ค์์ ์ํํ ์ ์์ต๋๋ค:
- ๊ตฌ๋ฉด ์กฐํ ํจ์ ์ถ์ : ์ด๋ฏธ์ง ํ๋ ์์ด ์ฃผ์ด์ง๋ฉด, ์ ๊ฒฝ๋ง์ ์ฃผ๋ณ๊ด ๋ถํฌ๋ฅผ ๊ฐ์ฅ ์ ์ค๋ช ํ๋ ๊ณ์๋ฅผ ์ถ๋ ฅํ ์ ์์ต๋๋ค.
- ๊ด์ ์์ฑ ์์ธก: ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ์ฌ๋ฌ ๊ด์์ด๋ ์ด๋ ค์ด ๋๋ถ์ฌ์ด ์๋ ๋ณต์กํ ์ฅ๋ฉด์์๋ ์ฃผ ๊ด์์ ๋ฐฉํฅ, ์์ ๋ฐ ๊ฐ๋๋ฅผ ์ ํํ๊ฒ ์์ธกํ ์ ์์ต๋๋ค.
- ๋ฐ์ฌ ํ๋ก๋ธ ์์ฑ: ๊ณ ๊ธ ๊ธฐ์ ์ ์ ํ๋ ์์ผ๊ฐ์ ์นด๋ฉ๋ผ ๋ฐ์ดํฐ์์๋ ํ์ต๋ ํ๊ฒฝ ํจํด์ ๊ธฐ๋ฐ์ผ๋ก '๋๋ฝ๋ ์ ๋ณด'๋ฅผ ์ฑ์ ์ฌ์ค์ ์ธ ๋ฐ์ฌ ํ๋ธ๋งต์ ํฉ์ฑํ ์ ์์ต๋๋ค.
- ๊ฒฌ๊ณ ์ฑ ํฅ์: ML ๋ชจ๋ธ์ ์ ์กฐ๋ ํ๊ฒฝ์์๋ถํฐ ๋ฐ๊ฒ ๋น๋๋ ์ผ์ธ ์ฅ๋ฉด์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ์กฐ๊ฑด์ ๋ํ ์ถ์ ์ ๊ฒฌ๊ณ ์ฑ์ ๋์ฌ์ฃผ๋ฉฐ, ์ ์ธ๊ณ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ๊ฑธ์ณ ๋ค์ํ ์นด๋ฉ๋ผ ํ์ง๊ณผ ํ๊ฒฝ์ ๋ณต์ก์ฑ์ ์์ฉํฉ๋๋ค.
3. WebXR ๋๋ฐ์ด์ค API์ `XRLightEstimate`
WebXR ๋๋ฐ์ด์ค API๋ ๊ธฐ๋ฐ AR ํ๋ซํผ(ARCore ๋๋ ARKit ๋ฑ)์์ ์์งํ ์ ๊ตํ ๋ฐ์ดํฐ๋ฅผ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ธ์ถํ๋ ๋ค๋ฆฌ ์ญํ ์ ํฉ๋๋ค. `light-estimation` ๊ธฐ๋ฅ์ด ์์ฒญ๋ WebXR ์ธ์ ์ด ์์๋๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ๊ฐ ์ ๋๋ฉ์ด์ ํ๋ ์์์ `XRLightEstimate` ๊ฐ์ฒด์ ๋ํ ์ง์์ ์ธ ์ ๊ทผ์ ์ ๊ณตํฉ๋๋ค.
๊ฐ๋ฐ์๋ ๋ค์๊ณผ ๊ฐ์ ์์ฑ์ ์ ๊ทผํ ์ ์์ต๋๋ค:
lightEstimate.sphericalHarmonicsCoefficients: ์ฃผ๋ณ๊ด ๋ถํฌ๋ฅผ ๋ํ๋ด๋ ์ซ์ ์งํฉ.lightEstimate.primaryLightDirection: ์ฃผ ๊ด์์ ๋ฐฉํฅ์ ๋ํ๋ด๋ ๋ฒกํฐ.lightEstimate.primaryLightIntensity: ์ฃผ ๊ด์์ ๊ฐ๋๋ฅผ ๋ํ๋ด๋ ์ค์(float).lightEstimate.primaryLightColor: ์ฃผ ๊ด์์ RGB ์์ ๊ฐ.lightEstimate.environmentMap: ๋ฐ์ฌ์ ์ฌ์ฉํ ์ ์๋ ํ ์ค์ฒ ๊ฐ์ฒด(์ผ๋ฐ์ ์ผ๋ก ํ๋ธ๋งต).
์ด ์ค์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์๋นํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ๋ธ๋ผ์ฐ์ ๋ด์์ ๊ฐ์ 3D ๋ชจ๋ธ์ ์กฐ๋ช ์ ๋์ ์ผ๋ก ์กฐ์ ํ ์ ์์ผ๋ฉฐ, ํ๋ซํผ๋ณ ๋ค์ดํฐ๋ธ ๊ฐ๋ฐ ์์ด๋ ์ ๋ก ์๋ ์์ค์ ํตํฉ๊ณผ ์ฌ์ค์ฑ์ ๋ง๋ค์ด๋ผ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ๊ฒฝํ ํ์ : ์ฌ์ค์ ์ธ AR ๋จธํฐ๋ฆฌ์ผ ๋ ๋๋ง์ ์ด์
์ค์ ์กฐ๋ช ์ผ๋ก ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ ๋๋งํ๋ ๋ฅ๋ ฅ์ ๋จ์ํ ๊ธฐ์ ์ ์ฑ๊ณผ๊ฐ ์๋๋๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ์ฆ๊ฐ ํ์ค์ ์ธ์ํ๊ณ ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ๊ทผ๋ณธ์ ์ธ ๋ณํ์ ๋๋ค. ์ด์ ์ ๋ฏธํ์ ํจ์ฌ ๋ฐ์ด๋์ด, ๋ค์ํ ์ฐ์ ๊ณผ ๋ฌธํ์ ๊ฑธ์ณ AR์ ์ฌ์ฉ์ฑ, ์ ๋ขฐ๋ ๋ฐ ์ ๋ฐ์ ์ธ ๊ฐ์น ์ ์์ ๊น์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
1. ํฅ์๋ ๋ชฐ์ ๊ฐ๊ณผ ํ์ค๊ฐ
๊ฐ์ ๊ฐ์ฒด๊ฐ ์ฃผ๋ณ ์กฐ๋ช ๊ณผ ์๋ฒฝํ๊ฒ ์ผ์นํ์ฌ ์ ํํ ๊ทธ๋ฆผ์๋ฅผ ๋๋ฆฌ์ฐ๊ณ , ํ๊ฒฝ์ ๋ฐ์ฌํ๋ฉฐ, ์ฃผ๋ณ๊ด ํน์ฑ์ ์์๋ฐ์ ๋, ์ธ๊ฐ์ ๋๋ ๊ทธ๊ฒ์ '์ค์ ' ๋๋ ์ ์ด๋ ๋ฌผ๋ฆฌ์ ๊ณต๊ฐ์ '์กด์ฌ'ํ๋ ๊ฒ์ผ๋ก ๋ฐ์๋ค์ผ ๊ฐ๋ฅ์ฑ์ด ํจ์ฌ ๋์์ง๋๋ค. ์ด ๋์์ง ๋ชฐ์ ๊ฐ์ ๋ชจ๋ AR ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ํ๋ฉฐ, ๋จ์ํ ์ค๋ฒ๋ ์ด๋ฅผ ์ง์ ์ผ๋ก ํตํฉ๋ ๊ฒฝํ์ผ๋ก ๋ณํ์ํต๋๋ค. ์ฌ์ฉ์๋ ๋ ์ด์ ์์ ์ ์ธ๊ณ์ ์ค์ฒฉ๋ ๋์งํธ ๊ทธ๋ํฝ์ ๋ณด๋ ๊ฒ์ด ์๋๋ผ, ํจ์ฌ ๋ ์ ํํ ํํ์ ๋ณด๊ฒ ๋ฉ๋๋ค. ์ด๋ฌํ ์ฌ๋ฆฌ์ ๋ณํ๋ ๋๊ฐ ์๊ฐ์ ๋ถ์ผ์น๋ฅผ ๋์์์ด ์กฐ์ ํ ํ์๊ฐ ์๊ฒ ํ๋ฏ๋ก ์ฐธ์ฌ๋๋ฅผ ๊ทน์ ์ผ๋ก ํฅ์์ํค๊ณ ์ธ์ง ๋ถํ๋ฅผ ์ค์ฌ์ค๋๋ค.
2. ํฅ์๋ ์ฌ์ฉ์ ์ ๋ขฐ์ ์์ฌ ๊ฒฐ์
๊ฐ์ ์ฝํ ์ธ ๊ฐ ์ค์ ์์ฌ ๊ฒฐ์ ์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ, ์ฌ์ค์ฑ์ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ๋์ฟ์ ์ํ ์ํํธ์์๋ถํฐ ์ํ์ธ๋ฃจ์ ๋์ ๋น๋ผ์ ์ด๋ฅด๊ธฐ๊น์ง, ๊ณ ๊ฐ์ ์ง์์ ์ ํ์ AR ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ ๊ณตํ๋ ๊ธ๋ก๋ฒ ๊ฐ๊ตฌ ์๋งค์ ์ฒด๋ฅผ ์๊ฐํด ๋ณด์ธ์. ๊ฐ์ ์ํ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์กฐ๋ช ๋๊ณ ๊ทธ๋ฆผ์๊ฐ ๋๋ฆฌ์์ง๋ฉด, ์ฌ์ฉ์๋ ๊ทธ ํฌ๊ธฐ, ์์ ๋ฐ ๊ณต๊ฐ์ ์ค์ ๋ก ์ด๋ป๊ฒ ์ด์ธ๋ฆฌ๋์ง๋ฅผ ์์ ์๊ฒ ํ๊ฐํ ์ ์์ต๋๋ค. ์ฌ์ค์ ์ธ ์กฐ๋ช ์ด ์์ผ๋ฉด ์์์ด ๋ถ์ ํํ๊ฒ ๋ณด์ผ ์ ์๊ณ , ๊ฐ์ฒด์ ์กด์ฌ๊ฐ ๋ชจํธํ๊ฒ ๋๊ปด์ ธ ๊ตฌ๋งค๋ ์ค์ํ ๋์์ธ ์ ํ์ ๋ง์ค์์ ์ ๋ฐํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ๋ขฐ๋ ๋น์ฆ๋์ค์ ์ ํ์จ์ ์ง์ ์ ์ผ๋ก ๋์ด๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ๋ ํจ๊ณผ์ ์ธ ๊ฒฐ๊ณผ๋ก ์ด์ด์ง๋๋ค.
3. ๋ ๋์ ์ ๊ทผ์ฑ๊ณผ ์ธ์ง ๋ถํ ๊ฐ์
์ฌ์ค์ฑ์ด ๋จ์ด์ง๋ AR ๊ฒฝํ์ ์๊ฐ์ ์ผ๋ก ํผ๋กํ๊ณ ์ ์ ์ ์ผ๋ก ๋ถ๋ด์ค๋ฌ์ธ ์ ์์ต๋๋ค. ๋๋ ๋ถ์ผ์น๋ฅผ ์ดํดํ๊ธฐ ์ํด ๋ ์ด์ฌํ ์ผํฉ๋๋ค. WebXR ์กฐ๋ช ์ถ์ ์ ๋งค์ฐ ์ฌ์ค์ ์ธ ๋ ๋๋ง์ ์ ๊ณตํจ์ผ๋ก์จ ์ด๋ฌํ ์ธ์ง ๋ถํ๋ฅผ ์ค์ฌ, ๊ธฐ์ ์ ์น์๋๋ ๋ฌธํ์ ๋ฐฐ๊ฒฝ์ ๊ด๊ณ์์ด ๋ ๋์ ๋ฒ์์ ์ฌ์ฉ์๊ฐ AR ๊ฒฝํ์ ๋ ํธ์ํ๊ณ ์ ๊ทผํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. ๋ ์์ฐ์ค๋ฌ์ด ์๊ฐ์ ๊ฒฝํ์ ์ข์ ๊ฐ์ ์ค์ด๊ณ ๋น๋ฉดํ ๊ณผ์ ๋ ์ฝํ ์ธ ์ ๋ ์ง์คํ ์ ์๊ฒ ํด์ค๋๋ค.
์ฐ์ ์ ๋ฐ์ ์ค์ ์ ์ฉ ์ฌ๋ก: ๊ธ๋ก๋ฒ ๊ด์
WebXR ์กฐ๋ช ์ถ์ ์ ์ํด ๊ตฌ๋๋๋ ์ฌ์ค์ ์ธ AR ๋จธํฐ๋ฆฌ์ผ ๋ ๋๋ง์ ์ํฅ์ ์ ์ธ๊ณ์ ์ผ๋ก ์๋ง์ ๋ถ๋ฌธ์ ์ฌํธํ๊ณ , ์ค๋ ๊ณผ์ ์ ๋ํ ํ์ ์ ์ธ ํด๊ฒฐ์ฑ ์ ์ ๊ณตํ ์ค๋น๊ฐ ๋์ด ์์ต๋๋ค.
๋ฆฌํ ์ผ ๋ฐ ์ ์์๊ฑฐ๋: ํ์ ์ ์ธ ์ผํ ๊ฒฝํ
๊ณ ๊ฐ์ ์ค์ ํ๊ฒฝ์์ ์ฌ์ค์ ์ธ ์กฐ๋ช ์กฐ๊ฑด ํ์ ๊ฐ์์ผ๋ก ์๋ฅ๋ฅผ ์ ์ด๋ณด๊ฑฐ๋, ๊ฐ๊ตฌ๋ฅผ ๋ฐฐ์นํ๊ฑฐ๋, ์ก์ธ์๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ๋ณผ ์ ์๋ ๋ฅ๋ ฅ์ ๋ฆฌํ ์ผ ์ ๊ณ์ ํ๋๋ฅผ ๋ฐ๊พธ๋ ์์์ ๋๋ค. ๋ฒ ๋ฅผ๋ฆฐ์ ํ ๊ณ ๊ฐ์ด ์ ์ ๊ธ๋ผ์ค๋ฅผ ์ฐฉ์ฉํด ๋ณด๊ณ , ๋ ์ฆ๊ฐ ํ๋์ ์ด๋ป๊ฒ ๋ฐ์ฌํ๋์ง ๋๋ ํ๋ ์์ ์ฌ์ง์ด ์ค๋ด ์กฐ๋ช ์๋์์ ์ด๋ป๊ฒ ๋น๋๋์ง ์ ํํ๊ฒ ๋ณด๋ ๊ฒ์ ์์ํด ๋ณด์ธ์. ๋๋ ์๋๋์ ํ ๊ฐ์กฑ์ด ์ ์ํ์ ์ง์ ๊ฐ์์ผ๋ก ๋ฐฐ์นํ์ฌ, ๊ทธ ๋ชฉ์ฌ ์ง๊ฐ์ด ๋ถ์์ ์์ฐ๊ด๊ณผ ์ธ๊ณต ์ ๋ ์กฐ๋ช ์ ์ด๋ป๊ฒ ๋ฐ์ํ๋์ง ๊ด์ฐฐํ๋ ๊ฒ์ ์์ํด ๋ณด์ธ์. ์ด๋ ์ถ์ธก์ ์์ ๊ณ , ๋ฐํ์ ์ค์ด๋ฉฐ, ์ ์ธ๊ณ ์จ๋ผ์ธ ๋ฐ ์คํ๋ผ์ธ ๋ฆฌํ ์ผ ์ฑ๋์์ ๊ณ ๊ฐ ๋ง์กฑ๋๋ฅผ ๋์ ๋๋ค.
- ๊ฐ์ ์ฐฉ์ฉ: ์ฃผ๋ณ๊ด์ ์ฌ์ค์ ์ผ๋ก ๋ฐ์ฌํ๊ณ ์ฌ์ง ํน์ฑ์ ๊ฐ์กฐํ๋ ์๋ฅ, ์๊ฒฝ, ๋ณด์๋ฅ.
- ๊ฐ๊ตฌ ๋ฐฐ์น: ์ง์ด๋ ์ฌ๋ฌด์ค ํ๊ฒฝ์์ ์์ดํ ์ ๋ฏธ๋ฆฌ ๋ณด๊ณ , ํ์ฌ ์กฐ๋ช ์๋์์ ๊ธฐ์กด ์ฅ์๊ณผ ์์ ๋ฐ ์ง๊ฐ์ ์ผ์น์ํด.
- ์๋์ฐจ ์ปค์คํฐ๋ง์ด์ง: ์ฐจ๋์์ ๋ค์ํ ์๋์ฐจ ์์๊ณผ ๋ง๊ฐ์ ์๊ฐํํ์ฌ, ๊ธ์์ฑ ํ์ธํธ๊ฐ ํ๋น ์๋์์ ์ด๋ป๊ฒ ๋ฐ์ง์ด๋์ง ๋๋ ๋ฌด๊ด ๋ง๊ฐ์ด ๊ทธ๋์์ ์ด๋ป๊ฒ ๋ณด์ด๋์ง ํ์ธ.
๋์์ธ ๋ฐ ๊ฑด์ถ: ํฅ์๋ ์ฌ์ ์๊ฐํ
์ฌ๋ฌ ๋๋ฅ์ ๊ฑด์ถ๊ฐ, ์ธํ ๋ฆฌ์ด ๋์์ด๋, ๋์ ๊ณํ๊ฐ๋ค์ WebXR AR์ ํ์ฉํ์ฌ ๋งฅ๋ฝ์ ๋ง๋ ๋์์ธ์ ์๊ฐํํ ์ ์์ต๋๋ค. ๋๋ฐ์ด์ ํ ํ์ ๊ณํ๋ ์์น์ ์ ๊ฑด๋ฌผ ํ์ฌ๋๋ฅผ ์ค๋ฒ๋ ์ดํ์ฌ, ๋ค์ํ ์ฌ๋ฃ(์ ๋ฆฌ, ์ฝํฌ๋ฆฌํธ, ๊ฐ์ฒ )๊ฐ ํ๋ฃจ ์ข ์ผ ๊ฐ๋ ฌํ ์ฌ๋ง์ ํ์์ ์ด๋ป๊ฒ ๋ฐ์ํ๋์ง ๊ด์ฐฐํ ์ ์์ต๋๋ค. ๋ฐ๋์ ์ธํ ๋ฆฌ์ด ๋์์ด๋๋ ๊ณ ๊ฐ์๊ฒ ์ ์ค๋น๋ ๋ง๊ฐ์ฌ๊ฐ ๊ทธ๋ค์ ์ง์์ ์ด๋ป๊ฒ ๋ณด์ผ์ง ๋ณด์ฌ์ฃผ๋ฉฐ, ๋ถ๋๋ฌ์ด ์์นจ ํ์ด์ด๋ ๋ ์นด๋ก์ด ์ ๋ ์กฐ๋ช ์ ์ ํํ๊ฒ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ ์ปค๋ฎค๋์ผ์ด์ ์ ๊ฐ์ํํ๊ณ , ๋น์ฉ์ด ๋ง์ด ๋๋ ์์ ์ ์ค์ด๋ฉฐ, ๋ ์ ๋ณด์ ์ ๊ฐํ ๋์์ธ ๊ฒฐ์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ๊ฑด๋ฌผ ์ ๋ณด ๋ชจ๋ธ๋ง(BIM) ์๊ฐํ: ์ค์ ๊ฑด์ค ํ์ฅ์ ๊ตฌ์กฐ๋ฌผ์ 3D ๋ชจ๋ธ์ ์ค๋ฒ๋ ์ด.
- ์ธํ ๋ฆฌ์ด ๋์์ธ ๋ชฉ์ : ๊ณ ๊ฐ์ ๊ณต๊ฐ์์ ๊ฐ๊ตฌ, ๋ง๊ฐ์ฌ, ์กฐ๋ช ๊ธฐ๊ตฌ์ ์ฌ์ค์ ์ธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ.
- ๋์ ๊ณํ: ๊ธฐ์กด ๋์ ๊ฒฝ๊ด ๋ด์์ ์๋ก์ด ๊ณต๊ณต ๋ฏธ์ ์ค์น๋ฌผ์ด๋ ์กฐ๊ฒฝ ๋ณํ๋ฅผ ์๊ฐํํ์ฌ, ์์ฐ๊ด๊ณผ์ ์ฌ๋ฃ ์ํธ ์์ฉ์ ๊ด์ฐฐ.
๊ต์ก ๋ฐ ํ๋ จ: ๋ชฐ์ ํ ํ์ต ํ๊ฒฝ
์ฌ์ค์ ์ธ ๋ ๋๋ง์ ๊ฐ์ถ AR์ ์ ์ธ๊ณ์ ์ผ๋ก ๊ต์ก์ ๋ณํ์ํฌ ์ ์์ต๋๋ค. ๋ด์์ ์๋์๋ค์ ๊ฐ์ ํด๋ถํ ๋ชจ๋ธ์ ๊ฒ์ฌํ์ฌ, ๋น์ด ๋ค์ํ ์กฐ์ง๊ณผ ์ฅ๊ธฐ์ ์ด๋ป๊ฒ ์ํธ ์์ฉํ๋์ง ๋ณด๊ณ ๊ตฌ์กฐ์ ๊ธฐ๋ฅ์ ๋ํ ์ดํด๋ฅผ ๋์ผ ์ ์์ต๋๋ค. ์ํ์ด์ ๊ณต๋์๋ค์ ๋ฌผ๋ฆฌ์ ๋ชจ๋ธ์ ๋ณต์กํ ๊ธฐ๊ณ ์ค๊ณ๋๋ฅผ ์ค๋ฒ๋ ์ดํ์ฌ, ๊ฐ์ ๋ถํ์ด ์์ ์ฅ ์กฐ๋ช ์๋์์ ์ด๋ป๊ฒ ์ฌ์ค์ ์ผ๋ก ํตํฉ๋๊ณ ๋ํ๋๋์ง ๊ด์ฐฐํ ์ ์์ต๋๋ค. ์ด๋ ์ ํต์ ์ธ ๊ต์ค์ ํ๊ณ๋ฅผ ๋ฐ์ด๋๋ ๋งค์ฐ ๋งค๋ ฅ์ ์ด๊ณ ์ํธ ์์ฉ์ ์ด๋ฉฐ ์ง๊ฐ์ ์ผ๋ก ํ๋ถํ ํ์ต ๊ฒฝํ์ ์ฐฝ์ถํฉ๋๋ค.
- ํด๋ถํ ๋ฐ ์๋ฌผํ: ์ค์ ํ๊ฒฝ์ ๊ธฐ๋ฐ์ ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ์ ๊ธฐ์ฒด ๋ฐ ๋ด๋ถ ๊ตฌ์กฐ์ ์์ธํ 3D ๋ชจ๋ธ.
- ๊ณตํ ๋ฐ ๊ธฐ๊ณํ: ์กฐ๋ฆฝ ๋๋ ์ ์ง๋ณด์ ํ๋ จ์ ์ํด ๋ฌผ๋ฆฌ์ ๊ธฐ๊ณ์ ์ค๋ฒ๋ ์ด๋ ์ํธ ์์ฉ์ ์ธ ๊ฐ์ ๋ถํ.
- ์ญ์ฌ ๋ฐ ๋ฌธํ ์ ์ฐ: ๊ณ ๋ ์ ๋ฌผ์ด๋ ๊ตฌ์กฐ๋ฌผ์ ์ฌ๊ตฌ์ฑํ์ฌ, ํ์๋ค์ด ์์ ์ ๊ณต๊ฐ ๋ด์์ ์ฌ์ค์ ์ธ ์ง๊ฐ๊ณผ ์กฐ๋ช ์ผ๋ก ์ด๋ฅผ ํ์ํ ์ ์๋๋ก ํจ.
๊ฒ์ ๋ฐ ์ํฐํ ์ธ๋จผํธ: ์ฐจ์ธ๋ ๋ชฐ์ ๊ฐ
๊ฑฐ๋ํ ๊ธ๋ก๋ฒ ๊ฒ์ ์ปค๋ฎค๋ํฐ์๊ฒ ์ฌ์ค์ ์ธ AR์ ์ ๋ก ์๋ ์์ค์ ๋ชฐ์ ๊ฐ์ ์ ๊ณตํฉ๋๋ค. ๊ฑฐ์ค์ ์๋ ๋์งํธ ๋ฐ๋ ค๋๋ฌผ์ด ๊ทธ๋ฆผ์๋ฅผ ๋๋ฆฌ์ฐ๊ณ ์ฃผ๋ณ์ ๋ฐ์ฌํ์ฌ ์ ๋ง๋ก ์กด์ฌํ๋ ๊ฒ์ฒ๋ผ ๋๋ผ๊ฒ ํ๋ ๊ฒ์ ์์ํด ๋ณด์ธ์. ๋๋ ๊ฐ์ ์บ๋ฆญํฐ๊ฐ ์ค์ ํ๊ฒฝ๊ณผ ์ํธ ์์ฉํ๋ฉฐ ์ง์ ๋จํ์ ์ํด ๋์ ์ผ๋ก ์กฐ๋ช ๋๋ AR ๊ฒ์์ ์์ํด ๋ณด์ธ์. ์ด๋ ์บ์ฃผ์ผ ๊ฒ์์ ์๋ก์ด ์ฐจ์์ผ๋ก ๋์ด์ฌ๋ฆฌ๊ณ , ๋์งํธ ์ธ๊ณ์ ๋ฌผ๋ฆฌ์ ์ธ๊ณ ์ฌ์ด์ ๊ฒฝ๊ณ๋ฅผ ํ๋ฆฌ๋ ๊น์ด ์๊ณ ๊ฐ์ธํ๋ ๊ฒฝํ์ ์ฐฝ์ถํฉ๋๋ค.
- ์์น ๊ธฐ๋ฐ ๊ฒ์: ์ ํํ ์กฐ๋ช ์ผ๋ก ์ค์ ํ๊ฒฝ์ ์๋ฒฝํ๊ฒ ํตํฉ๋๋ ๊ฐ์ ์์.
- ์ธํฐ๋ํฐ๋ธ ์คํ ๋ฆฌํ ๋ง: ์ฌ์ฉ์์ ์ฆ๊ฐ์ ์ธ ์ฃผ๋ณ ํ๊ฒฝ์ ์ผ๋ถ์ฒ๋ผ ์ง์ ์ผ๋ก ๋๊ปด์ง๋ ์บ๋ฆญํฐ์ ์ํ.
- ๋ผ์ด๋ธ ์ด๋ฒคํธ ๋ฐ ๊ณต์ฐ: ๊ณต์ฐ์ฅ ์กฐ๋ช ๊ณผ ์๊ฐ์ ์ผ๋ก ์ผ๊ด๋ AR ์ค๋ฒ๋ ์ด๋ก ์ฝ์ํธ๋ ์คํฌ์ธ ์ด๋ฒคํธ๋ฅผ ํฅ์์ํด.
์ฐ์ ๋ฐ ์ ์กฐ: ํฅ์๋ ์ด์ ํจ์จ์ฑ
์ฐ์ ํ๊ฒฝ์์ AR์ ์กฐ๋ฆฝ, ์ ์ง๋ณด์ ๋ฐ ํ์ง ๊ด๋ฆฌ์ ์ค์ํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ์ฌ์ค์ ์ธ ์กฐ๋ช ์ ํตํด ๋ธ๋ผ์ง ๊ณต์ฅ์ ๊ธฐ์ ์๋ค์ ๊ณต์ฅ์ ์ข ์ข ๊น๋ค๋กญ๊ณ ์ญ๋์ ์ธ ์กฐ๋ช ์กฐ๊ฑด์ ๊ด๊ณ์์ด ์ ๋ก ์๋ ์ ๋ช ๋๋ก ๊ฐ์ ์ง์นจ์ ๋ณด๊ฑฐ๋ ๊ธฐ๊ณ ๋ถํ์ ๋์งํธ ํธ์์ ์ค๋ฒ๋ ์ดํ ์ ์์ต๋๋ค. ์ด๋ ์ค๋ฅ๋ฅผ ์ค์ด๊ณ , ์์ ์ ๊ฐ์ ํ๋ฉฐ, ํ๋ จ์ ๊ฐ์ํํ์ฌ ์ ์ธ๊ณ์ ์ผ๋ก ์๋นํ ์ด์ ํจ์จ์ฑ์ ๊ฐ์ ธ์ต๋๋ค.
- ์กฐ๋ฆฝ ์๋ด: ์์ ์ฅ์์ ์ ํํ๊ฒ ์กฐ๋ช ๋๋ ๋ณต์กํ ๊ธฐ๊ณ์ ๋ํ ๋จ๊ณ๋ณ AR ์ง์นจ.
- ์ ์ง๋ณด์ ๋ฐ ์๋ฆฌ: ์ค์ ์กฐ๋ช ์ ๋ฐ์ํ๋ ๊ฐ์ ์์์ ํจ๊ป ์ฅ๋น์ ์ค๊ณ๋ ๋ฐ ์ง๋จ ์ ๋ณด๋ฅผ ์ค๋ฒ๋ ์ด.
- ํ์ง ๊ด๋ฆฌ: ๋ช ํํ๊ณ ์๊ฐ์ ์ผ๋ก ๊ธฐ๋ฐ์ ๋ AR ์ฃผ์์ผ๋ก ์ ํ์ ์ ์ฌ์ ๊ฒฐํจ์ด๋ ํธ์ฐจ๋ฅผ ๊ฐ์กฐ ํ์.
WebXR์์ ์กฐ๋ช ์ถ์ ๊ตฌํํ๊ธฐ: ๊ฐ๋ฐ์ ๊ด์
์ด ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํ์ฉํ๊ณ ์ ํ๋ ๊ฐ๋ฐ์๋ค์๊ฒ WebXR ์กฐ๋ช ์ถ์ ์ ํตํฉํ๋ ๊ฒ์ ๋ช ๊ฐ์ง ์ฃผ์ ๋จ๊ณ๋ฅผ ํฌํจํฉ๋๋ค. WebXR์ ์ฅ์ ์ ์ ๊ทผ์ฑ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ ํ๋ ์น ๋ธ๋ผ์ฐ์ ๋ด์์ ์ง์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ ๋ฌธ์ ์ธ ๋ค์ดํฐ๋ธ ์ฑ ๊ฐ๋ฐ์ด ํ์ ์์ด ๊ธ๋ก๋ฒ ๋ฐฐํฌ์ ๋๋ฌ ๋ฒ์๋ฅผ ๊ฐ์ํํฉ๋๋ค.
1. `light-estimation` ๊ธฐ๋ฅ ์์ฒญํ๊ธฐ
AR ์ธ์ ์ ์์ํ ๋(์: `navigator.xr.requestSession` ์ฌ์ฉ), ๊ฐ๋ฐ์๋ ๋ช ์์ ์ผ๋ก `light-estimation` ๊ธฐ๋ฅ์ ์์ฒญํด์ผ ํฉ๋๋ค. ์ด๋ ๊ธฐ๋ฐ AR ํ๋ซํผ์ ์กฐ๋ช ๋ฐ์ดํฐ๊ฐ ํ์ํจ์ ์๋ฆฌ๊ณ ์์คํ ์ด ๋ถ์์ ์์ํ๋๋ก ํฉ๋๋ค.
navigator.xr.requestSession('immersive-ar', { requiredFeatures: ['local', 'light-estimation'] });
์ด ๊ฐ๋จํ ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ ํ์ฑํํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด๊ฒ์ด ์์ผ๋ฉด `XRLightEstimate` ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
2. `XRLightEstimate` ๋ฐ์ดํฐ ์ ๊ทผ ๋ฐ ์ ์ฉ
์ธ์ ์ด ํ์ฑํ๋๋ฉด, ๊ฐ ์ ๋๋ฉ์ด์ ํ๋ ์( `XRFrame` ๋ฃจํ ๋ด)์์ `XRLightEstimate` ๊ฐ์ฒด๋ฅผ ์ฟผ๋ฆฌํ ์ ์์ต๋๋ค. ์ด ๊ฐ์ฒด๋ ์ค์๊ฐ ์กฐ๋ช ๋งค๊ฐ๋ณ์๋ฅผ ์ ๊ณตํฉ๋๋ค:
const lightEstimate = frame.getLightEstimate(lightProbe);
์ฌ๊ธฐ์ `lightProbe`๋ ์ธ์ ์ด๊ธฐ์ ์์ฑํ `XRLightProbe` ๊ฐ์ฒด๋ก, ํน์ ์ฐธ์กฐ ๊ณต๊ฐ(์ข ์ข ๋ทฐ์ด์ ๋จธ๋ฆฌ ๊ณต๊ฐ ๋๋ ๊ณ ์ ๋ ์๋ ๊ณต๊ฐ)๊ณผ ์ฐ๊ด๋ฉ๋๋ค.
๊ฒ์๋ `lightEstimate` ๊ฐ์ฒด๋ `sphericalHarmonicsCoefficients`, `primaryLightDirection`, `primaryLightIntensity`, `primaryLightColor`, `environmentMap`๊ณผ ๊ฐ์ ์์ฑ์ ํฌํจํฉ๋๋ค. ์ด๋ฌํ ๊ฐ์ 3D ๋ ๋๋ง ์์ง์ด๋ ํ๋ ์์ํฌ(์: Three.js, Babylon.js, A-Frame)์ ์ ๋ ฅ๋์ด์ผ ํฉ๋๋ค.
- ์ฃผ๋ณ๊ด (๊ตฌ๋ฉด ์กฐํ ํจ์): ์ฅ๋ฉด์ ์ฃผ๋ณ๊ด์ ์ ๋ฐ์ดํธํ๊ฑฐ๋, ๋ ๊ฐ๋ ฅํ๊ฒ๋ ์ด ๊ณ์๋ค์ ์ฌ์ฉํ์ฌ ๋ฌผ๋ฆฌ ๊ธฐ๋ฐ ๋ ๋๋ง ์ฌ์ง์ ์ํ ํ๊ฒฝ ๋งต(Three.js์ `PMREMGenerator` ๋ฑ)์ ๊ตฌ๋ํฉ๋๋ค. ๋ง์ ์ต์ 3D ์์ง์๋ ๊ตฌ๋ฉด ์กฐํ ํจ์๋ฅผ PBR ์ฌ์ง์ ์ง์ ์ ์ฉํ๋ ๊ธฐ๋ฅ์ด ๋ด์ฅ๋์ด ์์ต๋๋ค.
- ๋ฐฉํฅ์ฑ ์กฐ๋ช : 3D ์ฅ๋ฉด์ ๋ฐฉํฅ์ฑ ๊ด์์ ์์ฑํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ๊ณ , `primaryLightDirection`, `primaryLightIntensity`, `primaryLightColor`๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐฉํฅ, ๊ฐ๋, ์์์ ์ค์ ํฉ๋๋ค. ์ด ์กฐ๋ช ์ ๋ ๋๋ง ํ์ดํ๋ผ์ธ์์ ์ง์ํ๋ ๊ฒฝ์ฐ ๊ทธ๋ฆผ์๋ฅผ ๋๋ฆฌ์ฐ๋๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
- ๋ฐ์ฌ (ํ๋ธ๋งต): `lightEstimate.environmentMap`์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ, ์ด ํ ์ค์ฒ๋ฅผ PBR ์ฌ์ง์ ๋ฐ์ฌ ๋ฐ ํ์ฐ ๊ตฌ์ฑ ์์์ ๋ํ ํ๊ฒฝ ๋งต์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ธ์์ฑ ๋ฐ ๊ดํ ํ๋ฉด์ด ์ค์ ์ฃผ๋ณ ํ๊ฒฝ์ ์ ํํ๊ฒ ๋ฐ์ฌํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
3. ๊ธฐ์กด ํ๋ ์์ํฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฉ
์ง์ ์ ์ธ WebXR API ์ํธ ์์ฉ์ ์ต๋์ ์ ์ด๋ ฅ์ ์ ๊ณตํ์ง๋ง, ๋ง์ ๊ฐ๋ฐ์๋ ๋ณต์ก์ฑ์ ์๋น ๋ถ๋ถ์ ์ถ์ํํ์ฌ WebXR ๊ฐ๋ฐ์ ๋ ๋น ๋ฅด๊ณ ์ ๊ทผํ๊ธฐ ์ฝ๊ฒ ๋ง๋๋ ์์ ์์ค์ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ํํฉ๋๋ค. ์ธ๊ธฐ ์๋ ์ ํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Three.js: ์น์ ์ํ ๊ฐ๋ ฅํ๊ณ ๋๋ฆฌ ์ฌ์ฉ๋๋ 3D ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๋ฐ์ด๋ PBR ์ฌ์ง ์ง์๊ณผ `XRLightEstimate` ๋ฐ์ดํฐ๋ฅผ ์ฅ๋ฉด ์กฐ๋ช ๋ฐ ์ฌ์ง์ ๊ฐ๋จํ๊ฒ ์ ์ฉํ ์ ์๋ ํฌํผ ํด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ฐ๋ฐ์๋ ๊ตฌ๋ฉด ์กฐํ ํจ์๋ฅผ ํตํฉํ์ฌ ํ๊ฒฝ ๋งต์ ์์ฑํ๊ณ Three.js ์ฅ๋ฉด ๋ด์์ ๋ฐฉํฅ์ฑ ์กฐ๋ช ์ ์ ์ดํ ์ ์์ต๋๋ค.
- Babylon.js: ์กฐ๋ช ์ถ์ ์ ํฌํจํ ํฌ๊ด์ ์ธ WebXR ์ง์์ ์ ๊ณตํ๋ ๋ ๋ค๋ฅธ ๊ฐ๋ ฅํ 3D ์์ง์ ๋๋ค. Babylon.js๋ `XRLightEstimate` ๋ฐ์ดํฐ์ ํตํฉ์ ์๋์ผ๋ก ์ฒ๋ฆฌํ๋ `XREstimatedLight` ๊ฐ์ฒด๋ฅผ ์ ๊ณตํ์ฌ ๋ชจ๋ธ์ ์ฌ์ค์ ์ธ ์กฐ๋ช ์ ์ฝ๊ฒ ์ ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค.
- A-Frame: HTML๋ก VR/AR ๊ฒฝํ์ ๊ตฌ์ถํ๊ธฐ ์ํ ์น ํ๋ ์์ํฌ์ ๋๋ค. A-Frame์ ์ฅ๋ฉด ์์ฑ์ ๋จ์ํํ์ง๋ง, ์์ ์กฐ๋ช ์ถ์ ๋ฐ์ดํฐ์ ์ง์ ์ ๊ทผํ๋ ค๋ฉด ์ฌ์ฉ์ ์ ์ ์ปดํฌ๋ํธ๋ Three.js์์ ํตํฉ์ด ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ์ธ์ ํน์ฑ ๋๋ถ์ ์ ์ํ ํ๋กํ ํ์ดํ์ ๋งค์ฐ ๋งค๋ ฅ์ ์ ๋๋ค.
์ด๋ฌํ ํ๋ ์์ํฌ๋ ์์ฉ๊ตฌ ์ฝ๋๋ฅผ ํฌ๊ฒ ์ค์ด๊ณ ์ต์ ํ๋ ๋ ๋๋ง ํ์ดํ๋ผ์ธ์ ์ ๊ณตํ์ฌ, ๊ฐ๋ฐ์๊ฐ AR ๊ฒฝํ์ ์ฐฝ์์ ์ธ ์ธก๋ฉด์ ์ง์คํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ฌํ ์คํ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํ๋ ๊ธ๋ก๋ฒ ์ปค๋ฎค๋ํฐ๋ ํ์ ์ ๋์ฑ ๊ฐ์ํํ๊ณ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์๊ฒ ํ๋ถํ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋์ ๊ณผ์ ์ ์์ผ๋ก์ ๊ธธ: AR ์ฌ์ค์ฑ์ ๊ฒฝ๊ณ๋ฅผ ๋ํ๋ค
WebXR ์กฐ๋ช ์ถ์ ์ ๊ธฐ๋ ๋น์ ์ธ ๋์ฝ์ ์๋ฏธํ์ง๋ง, ์ง์ ์ผ๋ก ๊ตฌ๋ณํ ์ ์๋ AR ์ฌ์ค์ฑ์ ํฅํ ์ฌ์ ์ ๊ณ์๋๊ณ ์์ต๋๋ค. ๋ช ๊ฐ์ง ๋์ ๊ณผ์ ์ ํฅ๋ฏธ๋ก์ด ๋ฏธ๋ ๋ฐฉํฅ์ด ์ฐ๊ตฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ณ์ํด์ ํ์ฑํ๊ณ ์์ต๋๋ค.
1. ์ฑ๋ฅ ๊ณ ๋ ค ์ฌํญ ๋ฐ ์ฅ์น ์ด์ง์ฑ
์ค์๊ฐ ์กฐ๋ช ์ถ์ ์ ๊ณ์ฐ ์ง์ฝ์ ์ ๋๋ค. ์ํํ AR ๊ฒฝํ(์ผ๋ฐ์ ์ผ๋ก ์ด๋น 60ํ๋ ์)์ ์ ์งํ๋ฉด์ ์ง์์ ์ธ ์นด๋ฉ๋ผ ๋ถ์, ๋ณต์กํ ์ปดํจํฐ ๋น์ ๋ฐ ๋จธ์ ๋ฌ๋ ์ถ๋ก ์ด ํ์ํฉ๋๋ค. ์ด๋ ํนํ ๋ง์ ์ ํฅ ์์ฅ์์ ๋ณดํธ์ ์ธ ์ ์ฌ์ ์ค๋งํธํฐ์ ๊ฒฝ์ฐ ์ฅ์น ๋ฆฌ์์ค์ ๋ถ๋ด์ ์ค ์ ์์ต๋๋ค. ์ฑ๋ฅ์ ์ํ ์๊ณ ๋ฆฌ์ฆ ์ต์ ํ, ์ฅ์น๋ณ ํ๋์จ์ด ๊ฐ์๊ธฐ(์: AI ์ถ๋ก ์ฉ NPU) ํ์ฉ, ํจ์จ์ ์ธ ๋ ๋๋ง ๊ธฐ์ ๊ตฌํ์ ๋ค์ํ ๊ธ๋ก๋ฒ WebXR ์ง์ ์ฅ์น ์ํ๊ณ ์ ๋ฐ์ ๊ฑธ์ณ ๊ด๋ฒ์ํ ์ ๊ทผ์ฑ๊ณผ ์ผ๊ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
2. ๋์ ์กฐ๋ช ๋ณํ ๋ฐ ๊ฒฌ๊ณ ์ฑ
ํ์ค ์ธ๊ณ์ ์กฐ๋ช ์ ๊ฑฐ์ ์ ์ ์ด์ง ์์ต๋๋ค. ๋ฐ๊ฒ ๋น๋๋ ๋ฐฉ์์ ๊ทธ๋์ง ๋ณต๋๋ก ์ด๋ํ๊ฑฐ๋, ๊ตฌ๋ฆ์ด ํด๋ฅผ ๊ฐ๋ฆฌ๋ฉด ํ๊ฒฝ ์กฐ๋ช ์ ๊ฐ์์ค๋ฝ๊ณ ์๋นํ ๋ณํ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. AR ์์คํ ์ ๊ฑฐ์ฌ๋ฆฌ๋ ์๊ฐ์ ํ์ด๋ ๋ถ์ผ์น ์์ด ์ด๋ฌํ ์ ํ์ ๋น ๋ฅด๊ณ ๋ถ๋๋ฝ๊ฒ ์ ์ํด์ผ ํฉ๋๋ค. ๊ธ๊ฒฉํ ๋ณํ, ๊ฐ๋ ค์ง(์: ์์ผ๋ก ์นด๋ฉ๋ผ๋ฅผ ๊ฐ๋ฆฌ๋ ๊ฒฝ์ฐ), ๋ณต์กํ ์กฐ๋ช ์๋๋ฆฌ์ค(์: ์ฌ๋ฌ ์์ถฉ๋๋ ๊ด์)๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์กฐ๋ช ์ถ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฌ๊ณ ์ฑ์ ๊ฐ์ ํ๋ ๊ฒ์ ์ฌ์ ํ ํ๋ฐํ ์ฐ๊ตฌ ๋ถ์ผ์ ๋๋ค.
3. ๊ณ ๊ธ ๊ทธ๋ฆผ์ ๋ฐ ๊ฐ๋ ค์ง ์ฒ๋ฆฌ
์กฐ๋ช ์ถ์ ์ ๊ทธ๋ฆผ์๋ฅผ ๋๋ฆฌ์ฐ๊ธฐ ์ํ ๋ฐฉํฅ์ฑ ์กฐ๋ช ์ ์ ๊ณตํ์ง๋ง, ๊ฐ์ ๊ฐ์ฒด๊ฐ ์ค์ ํ๋ฉด์ ๋๋ฆฌ์ฐ๋ ๊ทธ๋ฆผ์("์ค์ ์ง์ค๋ฉํธ๋ฆฌ์ ๊ฐ์ ๊ทธ๋ฆผ์"๋ผ๊ณ ํจ)๋ฅผ ์ ํํ๊ฒ ๋ ๋๋งํ๋ ๊ฒ์ ์ฌ์ ํ ๋ณต์กํ ๊ณผ์ ์ ๋๋ค. ๋์ฑ์ด, ์ค์ ๊ฐ์ฒด๊ฐ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌ๊ณ ๊ฐ์ ๊ฐ์ฒด๊ฐ ์ค์ ์ง์ค๋ฉํธ๋ฆฌ์ ์ ํํ๊ฒ ์ํธ ์์ฉํ๋ ๋ฅ๋ ฅ์ ํ๊ฒฝ์ ์ ๋ฐํ ๊น์ด ์ดํด์ ์ค์๊ฐ ๋ฉ์ ์ฌ๊ตฌ์ฑ์ ํ์๋ก ํฉ๋๋ค. ๊น์ด ๊ฐ์ง ํ๋์จ์ด(LiDAR ๋ฑ)์ ๋ฐ์ ๊ณผ ์ ๊ตํ ์ฅ๋ฉด ์ดํด ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ์ผ๋ก ์ค๋๋ ฅ ์๋ ๊ทธ๋ฆผ์์ ๊ฐ๋ ค์ง์ ๋ฌ์ฑํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
4. ๊ธ๋ก๋ฒ ํ์คํ ๋ฐ ์ํธ ์ด์ฉ์ฑ
WebXR์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ, ๋ค์ํ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ฐ AR ํ๋ซํผ(ARCore, ARKit, OpenXR)์ ๊ฑธ์ณ ์กฐ๋ช ์ถ์ ์ ๋ํ ์ผ๊ด๋๊ณ ํ์คํ๋ ์ ๊ทผ ๋ฐฉ์์ ๋ณด์ฅํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฌํ ์ํธ ์ด์ฉ์ฑ์ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉ์์ ์ฅ์น๋ ๋ธ๋ผ์ฐ์ ์ ๊ด๊ณ์์ด ์์ ์ ์ผ๋ก ์๋ํ๋ ๊ฒฝํ์ ๋ง๋ค ์ ์๋๋ก ๋ณด์ฅํ์ฌ, ์ง์ ์ผ๋ก ๊ธ๋ก๋ฒํ๊ณ ํตํฉ๋ WebXR ์ํ๊ณ๋ฅผ ์กฐ์ฑํฉ๋๋ค.
5. ๋ฏธ๋ ๋ฐฉํฅ: ์ฒด์ ์กฐ๋ช , AI ๊ธฐ๋ฐ ์ฅ๋ฉด ์ดํด ๋ฐ ์๊ตฌ์ AR
AR ์ฌ์ค์ฑ์ ๋ฏธ๋๋ ํ๋ฉด ์กฐ๋ช ์ ๋์ด์ค ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์์ํด ๋ณด์ธ์:
- ์ฒด์ ์กฐ๋ช (Volumetric Lighting): ๊ฐ์ ๊ด์ ์ด ์๊ฐ๋ ๋จผ์ง์ ๊ฐ์ ์ค์ ๋๊ธฐ ํจ๊ณผ์ ์ํธ ์์ฉํ์ฌ ์๋ก์ด ์ฐจ์์ ์ฌ์ค๊ฐ์ ๋ํฉ๋๋ค.
- AI ๊ธฐ๋ฐ ์ฌ์ง ์ธ์: AR ์์คํ ์ด ๋น์ ์ดํดํ ๋ฟ๋ง ์๋๋ผ ์ค์ ํ๋ฉด์ ์ฌ์ง ์์ฑ(์: ๋๋ฌด ๋ฐ๋ฅ, ์ ๋ฆฌ ํ ์ด๋ธ, ์ง๋ฌผ ์ปคํผ ์ธ์)์ ์๋ณํ์ฌ ๋น์ด ์ฅ๋ฉด ๋ด์์ ์ด๋ป๊ฒ ์ฌ์ค์ ์ผ๋ก ๋ฐ์ฌ๋๊ณ ์ํธ ์์ฉํ ์ง ์์ธกํฉ๋๋ค.
- ๋น ์ ํ ๋ฐ ์ ์ญ ์กฐ๋ช (Global Illumination): ๋น์ด ์ค์ ํ๊ฒฝ ๋ด์์ ์ฌ๋ฌ ๋ฒ ๋ฐ์ฌ๋์ด ๊ฐ์ ์ ์ธ ๊ด์์ผ๋ก๋ถํฐ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฌ์ค์ ์ผ๋ก ์กฐ๋ช ํ๋ ๋ ๋ฐ์ ๋ ์๋ฎฌ๋ ์ด์ .
- ์๊ตฌ์ AR ๊ฒฝํ: ์ธ์ ๊ณผ ์ฌ์ฉ์์ ๊ฑธ์ณ ์์น์ ์กฐ๋ช ์กฐ๊ฑด์ ๊ธฐ์ตํ๋ AR ์ฝํ ์ธ ๋ก, ์ผ๊ด๋ ์ฌ์ค์ฑ์ ๊ธฐ๋ฐํ ํ๋ ฅ์ ์ด๊ณ ์ฅ๊ธฐ์ ์ธ ์ฆ๊ฐ ์ํธ ์์ฉ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
์ด๋ฌํ ๋ฐ์ ์ ๋์งํธ๊ณผ ๋ฌผ๋ฆฌ์ ์ธ๊ณ ์ฌ์ด์ ๊ฒฝ๊ณ๋ฅผ ๋์ฑ ํ๋ฌผ์ด, ์ ์ธ๊ณ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ผ ๋ฟ๋ง ์๋๋ผ ๊น์ด ํตํฉ๋๊ณ ์ง๊ฐ์ ์ผ๋ก ํ๋ถํ AR ๊ฒฝํ์ ์ ๊ณตํ ๊ฒ์ ์ฝ์ํฉ๋๋ค.
๊ฒฐ๋ก : WebXR AR์ ๋ ๋ฐ์ ๋ฏธ๋
WebXR ์กฐ๋ช ์ถ์ ์ ์ฆ๊ฐ ํ์ค์ ์งํ์์ ์ค์ถ์ ์ธ ์๊ฐ์ ๋ํ๋ ๋๋ค. ์น ๊ฐ๋ฐ์์๊ฒ ์ ๋ก ์๋ ์ค์ ์กฐ๋ช ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ์ ์ ๊ณตํจ์ผ๋ก์จ, ์ด๋ ์ฌ์ค์ ์ธ ๋จธํฐ๋ฆฌ์ผ ๋ ๋๋ง์ ์๋ก์ด ์๋๋ฅผ ์ด์๊ณ , ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ ์ ์ธ ์ค๋ฒ๋ ์ด์์ ์ฐ๋ฆฌ ๋ฌผ๋ฆฌ์ ์ธ๊ณ์ ์ญ๋์ ์ด๊ณ ํตํฉ๋ ์์๋ก ๋ณํ์์ผฐ์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ๋จ์ํ AR์ ๋ ๋ฉ์ง๊ฒ ๋ณด์ด๊ฒ ํ๋ ๊ฒ์ด ์๋๋ผ, ๋ ํจ๊ณผ์ ์ด๊ณ , ๋ ์ ๋ขฐํ ์ ์์ผ๋ฉฐ, ๋ ์ ์ธ๊ณ์ ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค.
์ ํฅ ์์ฅ์ ๋ฆฌํ ์ผ ๊ฒฝํ์ ํ์ ํ๋ ๊ฒ์์๋ถํฐ ๊ธฐ์กด ์ฐฝ์ ํ๋ธ์ ๋์์ด๋๋ค์๊ฒ ํ์ ์ค์ด์ฃผ๋ ๊ฒ๊น์ง, ๊ทธ๋ฆฌ๊ณ ์ ์ธ๊ณ ํ์๋ค์ ์ํ ๊ต์ก ๋๊ตฌ๋ฅผ ํฅ์์ํค๋ ๊ฒ์์๋ถํฐ ๊ธ๋ก๋ฒ ๊ด๊ฐ์ ์ํ ๋ ๋ชฐ์ ๊ฐ ์๋ ์ํฐํ ์ธ๋จผํธ๋ฅผ ๋ง๋๋ ๊ฒ๊น์ง, ๊ทธ ์ํฅ์ ์ฌ๋ํฉ๋๋ค. ์ปดํจํฐ ๋น์ , ๋จธ์ ๋ฌ๋, ๊ทธ๋ฆฌ๊ณ ๋ ๋์ ํ๋์จ์ด ์ฑํ์ ๋ฐ์ ์ ํ์ ์ด ๊ธฐ์ ์ด ๊ณ์ ์ฑ์ํจ์ ๋ฐ๋ผ, ์ฐ๋ฆฌ๋ ๋์งํธ๊ณผ ๋ฌผ๋ฆฌ์ ์ธ๊ณ์ ํจ์ฌ ๋ ์ํํ ์ตํฉ์ ๊ธฐ๋ํ ์ ์์ต๋๋ค. WebXR์ ์ด ๊ณ ๊ธ AR์ ๋ํ ์ ๊ทผ์ ๋ฏผ์ฃผํํ์ฌ, ๋ชจ๋ ๊ณณ์ ํ์ ๊ฐ๋ค์ด ๋ค์ํ ๋ฐฐ๊ฒฝ๊ณผ ํ๊ฒฝ์ ์ฌ์ฉ์๋ค๊ณผ ์ง์ ์ผ๋ก ๊ณต๊ฐํ๋ ๋ชฐ์ ํ ๊ฒฝํ์ ๊ตฌ์ถํ๊ณ ๋ฐฐํฌํ ์ ์๋๋ก ํฉ๋๋ค.
AR์ ๋ฏธ๋๋ WebXR ์กฐ๋ช ์ถ์ ์ด ๊ฐ์ ธ์จ ์ ๋ฐ์ฑ๊ณผ ์ฌ์ค์ฑ ๋๋ถ์ ์์ฌํ ์ฌ์ง์์ด ๋ ๋ฐ์ต๋๋ค. ์ด๋ ์ ์ธ๊ณ์ ๊ฐ๋ฐ์, ๊ธฐ์ , ์ฌ์ฉ์๋ค์๊ฒ ์ฆ๊ฐ ํ์ค์ด ๋จ์ํ ๊ธฐ์ ์ ๊ฒฝ์ด๊ฐ ์๋๋ผ, ์ฐ๋ฆฌ ์ผ์์ํ์ ์ง๊ด์ ์ด๊ณ ํ์์ ์ธ ๋ถ๋ถ์ด ๋์ด, ๋ณด์ด์ง ์๋ ๊ฒ์ ๋ณด์ด๊ฒ ํ๊ณ ๋ถ๊ฐ๋ฅ์ ํ์ค๋ก ๋ง๋๋ ๋ฏธ๋๋ฅผ ์์ํ๋๋ก ์ด๋ํฉ๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ด ์ ๊ทผ ๊ฐ๋ฅํ ์น์ด๋ผ๋ ์บ๋ฒ์ค ์์์ ์ด๋ฃจ์ด์ง๋๋ค.