Active State - 2024-Adoor/practice GitHub Wiki

์ธํ„ฐ๋ž™์…˜ SDK์˜ ๊ฐœ๋… Active State์— ๋Œ€ํ•œ ์ •๋ฆฌ.

NOTE

๊ณต์‹ ๋ฌธ์„œ ๋ฒˆ์—ญ

Active State ๊ฐœ์š”

๐Ÿ”— ์ด ๋ถ€๋ถ„์€ Active State Overview๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์˜ ์†์ด ํ๋ธŒ๋ฅผ ์žก๊ณ  ์žˆ๋Š”์ง€ ๋˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ๋‹ค๊ณ  ์ƒ์ƒํ•ด๋ณด์‹ญ์‹œ์˜ค. Active State ์ปดํฌ๋„ŒํŠธ๋Š” ์ด๋Ÿฌํ•œ ์ผ์ด ์ผ์–ด๋‚˜๋ฉด ์•Œ๋ ค์ค๋‹ˆ๋‹ค. Active State ์ปดํฌ๋„Œ๋Š” GameObject๋‚˜ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ด€์ฐฐํ•˜๊ณ  ๊ทœ์น™ ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ํ•ด์„ํ•˜๊ณ  true ๋˜๋Š” false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Active State ์ปดํฌ๋„ŒํŠธ๋Š” ์ž์‹ ์ด ๊ฐ€์ง„ ๋‚ด๋ถ€ ๋…ผ๋ฆฌ๋‚˜ Active State ์ปดํฌ๋„ŒํŠธ์˜ ์†์„ฑ์— ์ •์˜๋œ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์ข… ๊ฐ’์„ ๊ฒฐ์ •ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ Active State๋ฅผ ์—ฐ๊ฒฐํ•จ์œผ๋กœ์„œ ์ƒํ˜ธ ์ž‘์šฉ ๊ฐ„์˜ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ณ , ํฌ์ฆˆ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ , ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ƒํ˜ธ ์ž‘์šฉ์„ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Active State๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋ ค๋ฉด Use Active State๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. ์‚ฌ์ „ ๊ตฌ์ถ•๋œ ์”ฌ์—์„œ ์ปค์Šคํ…€ ํฌ์ฆˆ๋ฅผ ๊ฐ์ง€ํ•˜๋Š” Active State๋ฅผ ๋ณด๋ ค๋ฉด DebugGesture feature scene๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๊ด€๋ จ ์ฃผ์ œ

  • Active State๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋ ค๋ฉด Use Active State๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  • Active State๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปค์Šคํ…€ ์† ํฌ์ฆˆ๋ฅผ ๊ตฌ์ถ•ํ•˜๋ ค๋ฉด Build a Custom Hand Pose๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Active State ์‚ฌ์šฉํ•˜๊ธฐ

๐Ÿ”— ์ด ๋ถ€๋ถ„์€ Use Active State๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ๋‘ ๊ฐ€์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ Active State๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค. ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์ˆœ์„œ๋Œ€๋กœ ์™„๋ฃŒํ•ด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. Active State๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ด€์ฐฐํ•˜๊ณ  ํ•ด์„ํ•˜์—ฌ ๋ถˆ๋ฆฌ์–ธ์œผ๋กœ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์†์ด๋‚˜ ์ปจํŠธ๋กค๋Ÿฌ, GameObject, ์ธํ„ฐ๋ž™ํ„ฐ์™€ ๊ฐ™์€ ์š”์†Œ๋“ค์˜ Active State๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ•œ ์š”์†Œ์˜ ์ƒํƒœ ํ™•์ธํ•˜๊ธฐ

์–ด๋–ค ์š”์†Œ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด, ๊ทธ์— ์ƒ์‘ํ•˜๋Š” ...Active State ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด ์†์€ HandActiveState๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , GameObject๋Š” GameObjectActiveState๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. class_oculus_interaction_game_object_active_state), ์ธํ„ฐ๋ž™ํ„ฐ๋Š” InteractorActiveState๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ์™ผ์†์— ๋Œ€ํ•ด ์žก๊ธฐ ์ธํ„ฐ๋ž™ํ„ฐ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  1. HandGrabExamples ์”ฌ์„ ์—ฝ๋‹ˆ๋‹ค.
  2. Hierarchy์—์„œ, ํ™œ์„ฑ ์ƒํƒœ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œํ•ด์ค„ Cube GameObject๋ฅผ ๋งŒ๋‹ˆ๋‹ค.
  3. ํ๋ธŒ๋ฅผ ์”ฌ์˜ ์žก์„ ์ˆ˜ ์žˆ๋Š” ์˜ค๋ธŒ์ ํŠธ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋„์ค‘์— ๋ณผ ์ˆ˜ ์žˆ๋Š” ์•„๋ฌด ๋ฐ๋กœ ์œ„์น˜์‹œํ‚ต๋‹ˆ๋‹ค.
  4. Hierarchy์—์„œ Cube๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  5. Inspector์—์„œ Grab ์ธํ„ฐ๋ž™ํ„ฐ์˜ ์ƒํƒœ๋ฅผ ์ถ”์ ํ•˜๋Š” Interactor Active State ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  6. ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์—์„œ Interactor ํ”„๋กœํผํ‹ฐ๋ฅผ OVRCameraRig > OVRInteraction > OVRHands > LeftHand > HandInteractorsLeft > HandGrabInteractor๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  7. ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ์†์ด ์žก๋Š” ์‹œ๊ธฐ์˜ ๊ฐ์ง€๋งŒ ํ•„์š”ํ•  ๊ฒƒ์ด๋ฏ€๋กœ Property ํ”„๋กœํผํ‹ฐ๋ฅผ Is Selecting์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  8. ํ™œ์„ฑ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ์‹œ์ ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก Active State Debug Visual ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  9. ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์—์„œ Active State์™€ Target ํ”„๋กœํผํ‹ฐ๋ฅผ Cube GameObject๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  10. ๋นŒ๋“œํ•˜๊ณ  ์”ฌ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์”ฌ์˜ ์•„๋ฌด ์•„์ดํ…œ์„ ์žก์•„๋ณด๋ฉด ์™ผ์†์ด active state๋ฅผ ํ™œ์„ฑํ™”์‹œ์ผœ ํ๋ธŒ๊ฐ€ ๋…น์ƒ‰์œผ๋กœ ๋น›๋‚˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ์š”์†Œ์˜ ์ƒํƒœ ํ™•์ธํ•˜๊ธฐ

์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ์™ผ์†๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์–‘์†์˜ active state๋ฅผ ํ™•์ธํ•˜์—ฌ ์ด์ „ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์š”์†Œ ๊ทธ๋ฃน์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Active State Group ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Active State Group์—์„œ๋Š” ๊ฐœ๋ณ„ ์š”์†Œ๊ฐ€ ํ‰๊ฐ€๋œ ๋‹ค์Œ ๋ถˆ๋ฆฌ์–ธ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ฃน์ด ํ‰๊ฐ€๋˜์–ด true ๋˜๋Š” false์ธ ์ตœ์ข… ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ด์ „ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์ˆ˜์ •๋œ HandGrabExamples ์”ฌ์„ ์—ฝ๋‹ˆ๋‹ค.
  2. Hierarchy์—์„œ Cube๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. Inspector์—์„œ ๋‘ ๋ฒˆ์งธ Interactor Active State ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  4. ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์—์„œ Interactor ํ”„๋กœํผํ‹ฐ๋ฅผ OVRCameraRig > OVRInteraction > OVRHands > RightHand > HandInteractorsRight > HandGrabInteractor๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  5. ์†์ด ์žก๋Š” ์‹œ์ ๋ฅผ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Property ํ”„๋กœํผํ‹ฐ๋ฅผ Is Selecting์œผ๋กœ ์„ค์ •ํ•˜์„ธ์š”.
  6. Active State Group ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  7. ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์—์„œ Active States ๋ฆฌ์ŠคํŠธ์— ์š”์†Œ ๋‘ ๊ฐœ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  8. ์š”์†Œ๋ฅผ ๋‘ ๊ฐœ์˜ ๊ฐ Interactor Active State ์ปดํฌ๋„ŒํŠธ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  9. ์–‘์† ๋ชจ๋‘ Active State๋ฅผ ํ™œ์„ฑํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ๋„๋ก Logic Operator ํ”„๋กœํผํ‹ฐ๋ฅผ OR๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  10. Active State Debug Visual ์ปดํฌ๋„Œ์—์„œ Active State ํ”„๋กœํผํ‹ฐ๋ฅผ Active State Group ์ปดํฌ๋„ŒํŠธ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํ๋ธŒ๋Š” Active State Group์˜ ์ตœ์ข… ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ํ‘œ์‹œํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  11. ๋นŒ๋“œํ•˜๊ณ  ์”ฌ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ•œ ์†์ด๋‚˜ ์–‘์†์œผ๋กœ ์”ฌ์˜ ์•„๋ฌด ์•„์ดํ…œ์„ ์žก์•„๋ณด๋ฉด ์†์ด active state๋ฅผ ํ™œ์„ฑํ™”์‹œ์ผœ ํ๋ธŒ๊ฐ€ ๋…น์ƒ‰์œผ๋กœ ๋น›๋‚˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ ์ฃผ์ œ

  • active state์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๋ฉด Active State Overview๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  • ์–ด๋–ป๊ฒŒ ํฌ์ฆˆ๊ฐ€ ๊ฐ์ง€๋˜๋Š” ์ง€ ์ดํ•ดํ•˜๋ ค๋ฉด Hand Pose Detection๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  • ์ปค์Šคํ…€ ์† ํฌ์ฆˆ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋ ค๋ฉด Build a Custom Hand Pose๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.