ํƒ€์ž„๋ผ์ธ๐ŸŽฌ 07 - Custom Playables๋กœ EyeIK ์ ์šฉํ•˜๊ธฐ (์ œ์ž‘ ๋ฆฌ๋ทฐ ๋ฐ ์ฝ”๋“œ๊ณต์œ )

ํƒ€์ž„๋ผ์ธ๐ŸŽฌ 07 - Custom Playables๋กœ EyeIK ์ ์šฉํ•˜๊ธฐ (์ œ์ž‘ ๋ฆฌ๋ทฐ ๋ฐ ์ฝ”๋“œ๊ณต์œ )

์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฐ ํŠœํ† ๋ฆฌ์–ผ ์ œ์ž‘์— ์œ ์šฉํ•œ ์œ ๋‹ˆํ‹ฐ ํƒ€์ž„๋ผ์ธ์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Unity-chan ํ”„๋กœ์ ํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” IkLookAt๋ฅผ ์–ด๋–ป๊ฒŒ ํƒ€์ž„๋ผ์ธ์œผ๋กœ ์˜ฎ๊ฒจ์™”๋Š”์ง€ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•œ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉฐ ๋ฆฌ๋ทฐํ•œ๋‹ค.

EyeIK Track

์• ๋‹ˆ๋ฉ”์ด์…˜ ์ œ์ž‘ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ๋„์ค‘ ์บ๋ฆญํ„ฐ๋“ค์ด ํŠน์ • ์žฅ์†Œ๋ฅผ ๋ฐ”๋ผ๋ณด๊ฑฐ๋‚˜, ์‚ฌ์šฉ์ž๋ฅผ ๋ฐ”๋ผ๋ด์•ผํ•˜๋Š” ์žฅ๋ฉด๋“ค์ด ๋งŽ์•˜๋‹ค. ์ฝ˜ํ‹ฐ๋‚˜ ๊ธฐํš์ด๋‚˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ์™„๋ฒฝํ•˜๊ฒŒ ๋‚˜์™€์žˆ์–ด ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ž์ฒด๋ฅผ ์ˆ˜์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ํ˜น์€ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋Š” ํ”„๋กœ์ ํŠธ๋ผ๋ฉด ๋ชจ๋ฅผ๊นŒ, ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ œ์ž‘ ๋‹จ๊ณ„์—์„œ ๋™์„ ๊ณผ ์‹œ์„ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋‹ค.

๋”ฐ๋ผ์„œ Unity Japan์—์„œ ์ œ๊ณตํ•˜๋Š” Unity-chan ํ”„๋กœ์ ํŠธ์— ์กด์žฌํ•˜๋Š” IkLookAt ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ฐœ์กฐํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

์ฐธ๊ณ  ํ”„๋กœ์ ํŠธ: Unity-chan

01

๐Ÿ‘‰ ์ฐธ๊ณ  ํ”„๋กœ์ ํŠธ: SD์œ ๋‹ˆํ‹ฐ์งฑ 3D๋ฐ์ดํ„ฐ๋ชจ๋ธ ํŽ˜์ด์ง€

Unity Japan์—์„œ ์‚ฌ์šฉํ•˜๋Š” IkLookAt ์Šคํฌ๋ฆฝํŠธ๋Š” Unity Animator ๋‚ด์žฅํ•จ์ˆ˜์ธ SetLookAtWeight()์™€ SetLookAtPosition()์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด๋‹ค. ์ด ๋‘ ํ•จ์ˆ˜๋Š” ์• ๋‹ˆ๋ฉ”์ดํ„ฐ ํœด๋จธ๋…ธ์ด๋“œ ์•„๋ฐ”ํƒ€์˜ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์œ„์น˜๋ฅผ ๋ฐ”๋ผ๋ณด๋„๋ก ๋งŒ๋“ ๋‹ค.

๐Ÿ‘‰ SetLookAtWeight

๐Ÿ‘‰ SetLookAtPosition

EyeIk Track์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด unity-chan ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•  ํ•„์š”๋Š” ์—†๋‹ค.

๊ฐœ์กฐ

IkLookAt ์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” bool๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ๋ฐ”๋ผ๋ณด๊ฑฐ๋‚˜ ๋ฐ”๋ผ๋ณด์ง€ ์•Š๊ฑฐ๋‚˜์˜ ๋‘ ์ƒํ™ฉ์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ž‘๋™ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์บ๋ฆญํ„ฐ์˜ ์‹œ์„  ์ด๋™์ด ์ž์—ฐ์Šค๋Ÿฝ์ง€ ์•Š๊ณ  ๋š๋š ๋Š์–ด์ง„๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์• ๋‹ˆ๋ฉ”์ด์…˜์—์„œ๋Š” ์‹œ์„ ์˜ ์›€์ง์ž„์ด ์ž์—ฐ์Šค๋Ÿฌ์›Œ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— lookAtWeight๊ฐ’์„ 0~1๋กœ ์กฐ์ ˆํ•˜๊ณ  0์ผ ๊ฒฝ์šฐ bool๊ฐ’์„ false๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์„ ํƒํ–ˆ๋‹ค.

๋‹ค์šด๋กœ๋“œ ๋ฐ ์‚ฌ์šฉ๋ฒ•

๐Ÿ‘‰ ๋‹ค์šด๋กœ๋“œ ๋งํฌ

์œ„์˜ ๋‹ค์šด๋กœ๋“œ ๋งํฌ์—์„œ *.unityPackage๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ณ  ์œ ๋‹ˆํ‹ฐ์—์„œ ์—ด๋ฉด CustomPlayables/EyeIk ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค.

EyeIk ์Šคํฌ๋ฆฝํŠธ ์„ค์ •ํ•˜๊ธฐ

02

์‚ฌ์šฉํ•  ํœด๋จธ๋…ธ์ด๋“œ ์•„๋ฐ”ํƒ€ ์บ๋ฆญํ„ฐ ๊ฐ์ฒด์— EyeIk.cs ์Šคํฌ๋ฆฝํŠธ๋ฅผ [Add Component]ํ•œ๋‹ค.
์ž๋™์œผ๋กœ ์• ๋‹ˆ๋ฉ”์ดํ„ฐ๊ฐ€ ๋“ฑ๋ก๋˜๋Š”๋ฐ, ๋งŒ์•ฝ ์• ๋‹ˆ๋ฉ”์ดํ„ฐ์— ์ฝ˜ํŠธ๋กค๋Ÿฌ์™€ ์•„๋ฐ”ํƒ€๊ฐ€ ๋“ฑ๋ก๋˜์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด ๋“ฑ๋กํ•ด์ค€๋‹ค.

[Look At obj]์— ์บ๋ฆญํ„ฐ๊ฐ€ ๋ฐ”๋ผ๋ณผ Targetํ•˜๋‚˜๋ฅผ ์„ค์ •ํ•ด์ค€๋‹ค. ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ์ ์€ ์ด ์•„๋ฐ”ํƒ€๊ฐ€ ๋ฐ”๋ผ๋ณด๋Š” ๋Œ€์ƒ์ด ์—ฌ๋Ÿฌ๊ฐœ๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ [Look At obj]๋Š” ๋ฐ”๋ผ๋ณด๋Š” ๋Œ€์ƒ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ, ๋„ค๋น„๊ฒŒ์ด์…˜์ด ๋  ํ•ธ๋“ค๋Ÿฌ๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์กฐ์ข…ํ•˜๋Š” ๊ฒƒ์ด EyeIK Clip์ด ํ•˜๋Š” ์ผ์ด ๋œ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด, Box1๊ณผ Box2๋ฅผ ๋ฐ”๋ผ๋ณผ ๊ฒƒ์ด๋ผ๋ฉด Box1์ด๋‚˜ Box2๋ฅผ [Look At obj]์— ๋„ฃ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Target์ด๋ผ๋Š” ๋นˆ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค๊ณ  Target์„ [Look At obj]์— ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  Target์˜ ์›€์ง์ž„์„ Clip์—์„œ ์กฐ์ •ํ•œ๋‹ค. ์ด๋Š” ์ถ”ํ›„ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์—์„œ ๋”์šฑ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.

์• ๋‹ˆ๋ฉ”์ดํ„ฐ ์ฝ˜ํŠธ๋กค๋Ÿฌ ์„ค์ •ํ•˜๊ธฐ

03

์• ๋‹ˆ๋ฉ”์ดํ„ฐ ์ฝ˜ํŠธ๋กค๋Ÿฌ๋ฅผ ๋”๋ธ”ํด๋ฆญํ•˜์—ฌ ์• ๋‹ˆ๋ฉ”์ดํ„ฐ ์—๋””ํ„ฐ ์ฐฝ์„ ์—ฐ๋‹ค. Base Layer์˜ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๋ฅผ ๋ˆŒ๋Ÿฌ [IK Pass]์— ์ฒดํฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผ๋งŒ ํ•จ์ˆ˜์˜ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.

ํŠธ๋ž™ ์ƒ์„ฑ

04

ํƒ€์ž„๋ผ์ธ์—์„œ ํŠธ๋ž™์„ ์ƒ์„ฑํ•œ๋‹ค. CustomTimeline>Eye Ik Track์„ ํด๋ฆญํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ CustomTimeline ํ•˜์œ„์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ์ด์œ ๋Š” Eye Ik Track์˜ namespace๊ฐ€ CustomTimeline์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

05

์œ„์—์„œ Add Componentํ•œ [EyeIk.cs]๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋“œ๋ž˜๊ทธ & ๋“œ๋žํ•œ๋‹ค.

ํด๋ฆฝ ์„ค์ •

06

์ƒ์„ฑํ•œ ํŠธ๋ž™์— [์šฐํด๋ฆญ] ํ›„ [Add Eye Ik Clip]๋กœ ํด๋ฆฝ์„ ๋งŒ๋“ ๋‹ค.

07

ํด๋ฆฝ์„ ํด๋ฆญํ•˜๊ณ  Inspector์—์„œ ํด๋ฆฝ์— ๋Œ€ํ•œ ์„ค์ •์„ ์ง„ํ–‰ํ•œ๋‹ค.

์ค‘์š”ํ•œ ๊ฒƒ์€ Ease In/Out Duration๊ณผ Current Target์ด๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ ํด๋ฆฝ์—์„œ๋Š” EyeIk.cs์—์„œ ์„ค์ •ํ•œ ํ•ธ๋“ค๋Ÿฌ์ธ [Look At obj]๋ฅผ ์›€์ง์ด๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

๋ธ”๋ Œ๋”ฉ ๊ตฌ๊ฐ„๋™์•ˆ ๊ณ ๊ฐœ๋ฅผ ๋Œ๋ฆฌ๊ณ , ํด๋ฆฝ์ด ์œ ์ง€๋˜๋Š” ๋™์•ˆ ๋ฐ”๋ผ๋ณด๋ฉฐ, ํด๋ฆฝ์—์„œ ๋‚˜๊ฐ€๋Š” ์ˆœ๊ฐ„ ๋‹ค์‹œ ์ •๋ฉด์„ ๋ฐ”๋ผ๋ณธ๋‹ค.

ํ…Œ์ŠคํŠธ

Eye IK๋Š” ์•„๋ฐ”ํƒ€์˜ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์กฐ์ ˆํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— Play ์ƒํƒœ์—์„œ๋งŒ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์œ ๋‹ˆํ‹ฐ์˜ Play ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ •์ƒ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ด๋ณธ๋‹ค.

๋งˆ๋ฌด๋ฆฌ

Timeline์— ๋Œ€ํ•œ ํฌ์ŠคํŒ…์€ ์ด๊ฒƒ์œผ๋กœ ๋งˆ์ง€๋ง‰์ผ ๊ฒƒ ๊ฐ™๋‹ค. ์•ž์œผ๋กœ ์•Œ๊ฒŒ๋˜๋Š” ๊ฒƒ์ด ์žˆ์œผ๋ฉด ๋‚˜์ค‘์— ์ถ”๊ฐ€ํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค. ์„ค๋ช…์ด ๊ทธ๋ฆฌ ๊น”๋”ํ•˜์ง€ ๋ชปํ–ˆ์„์ง€๋„ ๋ชจ๋ฅด์ง€๋งŒ Timeline์€ ๋ณด๋ฉด ๋ณผ์ˆ˜๋ก ๋งค๋ ฅ์ ์ธ ํˆด์ด๋‹ค. VR ํ”„๋กœ์ ํŠธ์—ฌ์„œ Timeline๊ณผ ์ฐฐ๋–ก๊ถํ•ฉ์ด๋ผ๋Š” Cinemachine๋„ ๊ฐ™์ด ์‚ฌ์šฉํ•ด๋ณด์ง€ ๋ชปํ–ˆ๋‹ค. ์ง€๊ธˆ์€ ์•„๋‹ˆ๋”๋ผ๋„ ๋‚˜์ค‘ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๊ผญ ํ•œ ๋ฒˆ ๊ฐ™์ด ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์‹ถ๋‹ค.


ยฉ 2022. All rights reserved.