Scene API - 2024-Adoor/practice GitHub Wiki

์ฃผ์š” ๊ฐœ๋…

Scene Model - ์‚ฌ์šฉ์ž์˜ ๊ณต๊ฐ„ ๋ชจ๋ธ Scene Anchors - ๊ณต๊ฐ„์— ์žˆ๋Š” ๋ฌผ์ฒด(๋ฒฝ, ์ฒœ์žฅ, ๊ฐ€๊ตฌ ๋“ฑ)์˜ ์ •๋ณด๋ฅผ ๋ณด์œ ํ•จ, Space Setup์— ์˜ํ•ด ์ƒ์„ฑ๋จ, ์‹œ์Šคํ…œ์ด ๊ด€๋ฆฌ Spatial Anchors - ์šฐ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ์ •๋ณด Space Setup - Scene Model์„ ์บก์ฒ˜ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค, ํ€˜์ŠคํŠธ์—์„œ ํ”Œ๋ ˆ์ด ๊ณต๊ฐ„ ์ธ์‹ํ•˜๋Š”๊ฑฐ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Spatial Anchors๋งŒ ๋งŒ๋“ค์ˆ˜ ์žˆ์ง€๋งŒ Scene Anchor๋„ ์ฟผ๋ฆฌํ•  ์ˆ˜๋Š” ์žˆ๋‹ค.

Scene Anchors๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ

๐Ÿ”— ์ด ๋ถ€๋ถ„์€ What components can Scene Anchors have?์„ ๋ฐ”ํƒ•์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

  • Locatable

    ์ด ์•ต์ปค๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Œ์„ ์‹œ์Šคํ…œ์— ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ํ™œ์„ฑํ™”๋˜๋ฉด ์•ฑ์€ ์•ต์ปค์˜ ํฌ์ฆˆ ์ •๋ณด๋ฅผ ์ง€์†์ ์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ต์ปค์˜ ์ˆ˜๋ช…์— ๋”ฐ๋ฅธ ์ถ”์  ์ •ํ™•๋„ ์ฐจ์ด๋กœ ์ธํ•ด ์ด๋Š” ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • RoomLayout

    ๋ฒฝ, ์ฒœ์žฅ ๋ฐ ๋ฐ”๋‹ฅ์„ ๊ตฌ์„ฑํ•˜๋Š” ์•ต์ปค์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • AnchorContainer

    ์ž์‹ ์•ต์ปค ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • Bounded2D ๋ฐ Bounded3D

    ์•ต์ปค์˜ ์น˜์ˆ˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. dimension์„ ์บก์ฒ˜ํ•˜๋Š” size ํ”„๋กœํผํ‹ฐ์™€, Locatable ์ปดํฌ๋„ŒํŠธ์— ์˜ํ•ด ์ •์˜๋œ ์•ต์ปค์˜ ์›์ ๊ณผ 2D/3D ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค์˜ ์›์ ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” offset ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • TriangleMesh

    ์•ต์ปค๋ฅผ ์œ„ํ•ด ์ƒ‰์ธํ™”๋œ ์‚ผ๊ฐํ˜• ๋ฉ”์‹œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • SemanticClassification

    ์•ต์ปค๋ฅผ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ถ„๋ฅ˜๋กœ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค.

Storable ์ปดํฌ๋„ŒํŠธ์™€ Sharable ์ปดํฌ๋„ŒํŠธ๋Š” ๋ชจ๋‘ Spatial Anchors์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ณดํ†ต์˜ Scene Anchors

๐Ÿ”— ์ด ๋ถ€๋ถ„์€ Common Scene Anchors์„ ๋ฐ”ํƒ•์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ์— ๋Œ€ํ•œ Scene Anchors๋Š” ์ฒœ์žฅ, ๋ฒฝ, ๋ฐ”๋‹ฅ์„ ์ฐธ์กฐํ•˜๋Š” RoomLayout ์ปดํฌ๋„ŒํŠธ, ๋ฐฉ์˜ ๋ชจ๋“  Scene Anchor๋ฅผ ๋“ค๊ณ  ์žˆ๋Š” AnchorContainer ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

2D ์š”์†Œ(์˜ˆ: ๋ฒฝ, ์ฒœ์žฅ, ๋ฐ”๋‹ฅ, ์ฐฝ๋ฌธ, ๋ฒฝ๋ฉด ์•„ํŠธ)์— ๋Œ€ํ•œ Scene Anchor๋Š” Scene Anchor์˜ ์œ„์น˜๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” Locatable ์ปดํฌ๋„ŒํŠธ, ๋ผ๋ฒจ๋ง์„ ์œ„ํ•œ Semantic Classification ์ปดํฌ๋„ŒํŠธ, ๊ฒฝ๊ณ„ ๋ฐ•์Šค ์น˜์ˆ˜๋ฅผ ์œ„ํ•œ Boundary2D ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

3D ์ „์šฉ Scene Anchor(์˜ˆ: ์„ ๋ฐ˜, ์Šคํฌ๋ฆฐ, ํ™”๋ถ„ ๋“ฑ)์—๋Š” 2D Scene Anchor์˜ Bounded2D์™€ ๋น„์Šทํ•˜๊ฒŒ ๋Œ€์‹  Bounded3D ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค Scene Anchor๋“ค์€ 2D์ธ ๋™์‹œ์— 3D(์˜ˆ: ํ…Œ์ด๋ธ”, ์†ŒํŒŒ)์ธ๋ฐ, ์—ฌ๊ธฐ์„œ 3D ์ปดํฌ๋„ŒํŠธ๋Š” ๊ฒฝ๊ณ„ ๋ณผ๋ฅจ์„ ๋‚˜ํƒ€๋‚ด๊ณ  2D ์ปดํฌ๋„ŒํŠธ๋Š” ๊ด€์‹ฌ ์˜์—ญ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์•ต์ปค๋“ค์€ 2D ์•ต์ปค์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ Bounded3D ์ปดํฌ๋„ŒํŠธ๋„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

NOTE

Space Setup ํ•  ๋•Œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ธŒ์ ํŠธ๋“ค์ด ๋ชฉ๋ก์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•œ ๋ชจ์Šต. ํ•ด๋‹น ๊ฐ€๊ตฌ์— ๋Œ€ํ•ด ์„ค์ •๋œ Scene Anchors๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

Building Blocks์—์„œ Room Model์„ ์ถ”๊ฐ€ํ•˜๋ฉด OVRSceneManager์™€ OVRSceneModelLoader๊ฐ€ ๋ถ€์ฐฉ๋œ ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ, ์ด ๋‘ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ Scene๊ณผ ๊ด€๋ จ๋œ ๊ธฐ๋ณธ์ ์ธ ๊ฑด ๋‹ค ํ•ด์ฃผ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. Bouncing Ball Tutorial์„ ๋”ฐ๋ผํ•  ๋•Œ ์ด ๋‘ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ ๋ง๊ณ ๋Š” ์™ธ๋ถ€์—์„œ ์ถ”๊ฐ€๋กœ ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด ์—†์—ˆ๋‹ค.

๊ณต์‹ ๋ฌธ์„œ์˜ Unity Custom Scene Manager Sample์— ๋”ฐ๋ฅด๋ฉด OVRAnchor API์— ๋Œ€ํ•ด ์ž˜ ์•Œ๋ฉด ์ปค์Šคํ…€ Scene Manager๋ฅผ ์ง์ ‘ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์–ด๋””์— ํ•„์š”ํ•œ์ง€๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค.