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์€ ์ปฌ๋Ÿฌ ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ ๊นŠ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์œตํ•ฉํ•˜์—ฌ ์ƒ์„ธํ•œ ๊นŠ์ด ๋งต์„ ์ƒ์„ฑํ•œ๋‹ค.