ARkit - hyeonju102/PARK GitHub Wiki
AR ์ฑ์ ์ ์ํ๋ ์ํํธ์จ์ด ํ๋ ์์ํฌ
ARkit์ ์ข ๋ฅ
- RealityKit(3D ๊ธฐ๋ฐ)
- SceneKit(3D ๊ธฐ๋ฐ)
- SpriteKit(2D ๊ธฐ๋ฐ)
- Metal
RealityKit
RealityKit ํ๋ ์์ํฌ๋ ์ฌ์ง์ฒ๋ผ ์์ํ ๋ ๋๋ง๊ณผ ์นด๋ฉ๋ผ ํจ๊ณผ, ์ ๋๋ฉ์ด์ , ๋ฌผ๋ฆฌ์ ์ธ ์์ ๋ฑ์ ๊ฐ์ถ๊ณ ํน๋ณํ ์ฆ๊ฐ ํ์ค์ ์ํด ์์ ํ ์๋กญ๊ฒ ๋น๋๋์๋ค. RealityKit์ ๊ธฐ๋ณธ Swift API, ARKit ํตํฉ, ๋๋๋๋ก ์ฌ์ค์ ์ธ ๋ฌผ๋ฆฌ์ ์์ ๊ธฐ๋ฐ์ ๋ ๋๋ง, ๋ณํ ๋ฐ ์ค์ผ๋ ํค ์ ๋๋ฉ์ด์ , ๊ณต๊ฐ ์ค๋์ค ๋ฐ ๊ฐ์ฒด ๋ฌผ๋ฆฌ ์์๋ฅผ ํตํด AR ๊ฐ๋ฐ์ ๊ทธ ์ด๋ ๋๋ณด๋ค ๋น ๋ฅด๊ณ ์ฝ๊ฒ ์ํํ ์ ์๊ฒ ํด ์ค๋๋ค.
SceneKit
SceneKit์ ์ฑ์์ 3D ์ ๋๋ฉ์ด์ ์ฅ๋ฉด ๋ฐ ํจ๊ณผ๋ฅผ ๋ง๋๋ ๋ฐ ๋์์ด ๋๋ ๊ณ ๊ธ 3D ๊ทธ๋ํฝ ํ๋ ์์ํฌ๋ค. ๋ฌผ๋ฆฌ ์์ง, ์ ์ ์์ฑ๊ธฐ ๋ฐ 3D ๊ฐ์ฒด์ ๋์์ ์คํฌ๋ฆฝํ ํ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ ํตํฉํ์ฌ ํ์, ์ฌ๋ฃ, ์กฐ๋ช ๋ฐ ์นด๋ฉ๋ผ์ ๊ฐ์ ์ฝํ ์ธ ์ธก๋ฉด์์ ์ฅ๋ฉด์ ์ค๋ช ํ๊ณ ํด๋น ๊ฐ์ฒด์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ์ค๋ช ํ์ฌ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ ์ ์๋ค.
SpriteKit
SpriteKit๋ ๋ชจ์, ์ ์, ํ ์คํธ, ์ด๋ฏธ์ง ๋ฐ ๋น๋์ค๋ฅผ 2์ฐจ์์ผ๋ก ๊ทธ๋ฆฌ๊ธฐ ์ํ ๋ฒ์ฉ ํ๋ ์์ํฌ๋ค. Metal์ ํ์ฉํ์ฌ ๊ณ ์ฑ๋ฅ ๋ ๋๋ง์ ์ฌ์ฉํ๋ ๋์์ ๊ฐ๋จํ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ฌ ๊ฒ์ ๋ฐ ๊ธฐํ ๊ทธ๋ํฝ ์ง์ฝ์ ์ธ ์ฑ์ ์ฝ๊ฒ ๋ง๋ค ์ ์๋ค. ํ๋ถํ ์ ๋๋ฉ์ด์ ๋ฐ ๋ฌผ๋ฆฌ ๋์์ ์ฌ์ฉํ์ฌ ์๊ฐ์ ์์์ ์๋ช ์ ๋น ๋ฅด๊ฒ ์ถ๊ฐํ๊ณ ํ๋ฉด ๊ฐ์ ์ฐ์ํ๊ฒ ์ ํํ ์ ์๋ค.
Metal
Metal์์๋ Apple ํ๋ซํผ์์ ์ค๋ฒํค๋๊ฐ ๋ฎ์ API, ํ๋ถํ ์ ฐ์ด๋ฉ ์ธ์ด, ๊ทธ๋ํฝ๊ณผ ์ปดํจํ ๊ฐ์ ๊ธด๋ฐํ ํตํฉ ๋ฐ ํ์ํ GPU ํ๋กํ์ผ๋ง ๋ฐ ๋๋ฒ๊น ๋๊ตฌ๋ฅผ ์ ๊ณตํ์ฌ ํ๋์จ์ด ๊ฐ์ ๊ทธ๋ํฝ์ ์ง์ํ๋ค. Metal 3์๋ ๊ฒ์ ๋ฐ ์ ๋ฌธ๊ฐ ์ฑ์์ Apple Silicon์ ์ ์ฌ๋ ฅ์ ์๋ฒฝํ๊ฒ ํ์ฉํ ์ ์๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ด ๋์ ๋์๋ค. ๊ณ ํด์๋ ๊ทธ๋ํฝ์ ๋ ์งง์ ์๊ฐ ์์ ๋ ๋๋งํ๊ณ , ๋ฆฌ์์ค๋ฅผ ๋ ์ ์ํ๊ฒ ๋ก๋ฉํ๋ฉฐ, GPU๋ก ๋จธ์ ๋ฌ๋ ๋คํธ์ํฌ๋ฅผ ํ์ต์ํฌ ์ ์๋ค.
Color and Depth Frame
- Color Frame: ARkit์ ์นด๋ฉ๋ผ๋ฅผ ํตํด ์บก์ฒ๋ RGB ์ปฌ๋ฌ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ์ฌ, AR ๊ฒฝํ์ ์๊ฐ์ ์ธ ๋ถ๋ถ์ ๋ด๋นํ๋ค. ์ด ์ปฌ๋ฌ ์ด๋ฏธ์ง๋ ์ฌ์ฉ์๊ฐ ํ์ค ์ธ๊ณ๋ฅผ ์ธ์ํ๊ณ ๊ฐ์ ๊ฐ์ฒด๊ฐ ํ์ค๊ณผ ์์ฐ์ค๋ฝ๊ฒ ํตํฉ๋๋๋ก ํ๋๋ฐ ์ฌ์ฉ๋๋ค.
- Depth Frame: ๊น์ด ์ ๋ณด๋ ์นด๋ฉ๋ผ ํ๋ฉด์ผ๋ก๋ถํฐ ํ์ค ์ธ๊ณ์ ๊ฐ ์ง์ ๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ํ๋ธ๋ค. LiDAR ์ค์บ๋๋ฅผ ํ์ฉํ๋ ๊ฒฝ์ฐ, ARkit์ ์ปฌ๋ฌ ์ด๋ฏธ์ง์ ํจ๊ป ๊น์ด ๋ฐ์ดํฐ๋ฅผ ์ตํฉํ์ฌ ์์ธํ ๊น์ด ๋งต์ ์์ฑํ๋ค.