Animation Optimization - zzragida/UnityDocs GitHub Wiki

๋ณธ(Bone)์˜ ์ˆ˜

  • ๋งŽ์€ ๋ณธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์บ๋ฆญํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • (์˜ˆ๋ฅผ ๋“ค๋ฉด ์ปค์Šคํ…€ ๊ฐ€๋Šฅํ•œ ๋ถ€์ฐฉ๋ฌผ(Attachments)๋“ค) ์ด ๊ฒฝ์šฐ, ํ•„์š”ํ•œ ์ถ”๊ฐ€ ๋ณธ์˜ ์ˆ˜์— ๋”ฐ๋ผ ๋นŒ๋“œ ํฌ๊ธฐ๊ฐ€ ์ปค์ ธ, ์ถ”๊ฐ€ ๋ณธ ์ˆ˜์— ๋น„๋ก€ํ•˜์—ฌ ์ฒ˜๋ฆฌ ๋น„์šฉ์ด ๋Š˜์–ด๋‚  ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, Generic ๋ชจ๋“œ์—์„œ ์ด๋ฏธ 30์˜ ๋ณธ์ด ์žˆ๋Š” Rig์— 15์˜ ๋ณธ์„ ์ถ”๊ฐ€ํ•˜๋ฉด 50%์˜ ์ถ”๊ฐ€ ์‹œ๊ฐ„์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.
  • Generic ๋ฐ Humanoid๋ชจ๋“œ์—์„œ ์ถ”๊ฐ€ ๋ณธ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ์„ ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค.
  • ์ถ”๊ฐ€ ๋ณธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด๋„ ์žฌ์ƒ ํ•  ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์—†๋Š” ๊ฒฝ์šฐ, ์ฒ˜๋ฆฌ ๋น„์šฉ์˜ ์ฆ๊ฐ€๋Š” ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋„์ž…๋‹ˆ๋‹ค.
  • ๋ถ€์ฐฉ๋ฌผ(attachmets)์ด ์กด์žฌํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ˆจ์–ด์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ถ”๊ฐ€ ์ฒ˜๋ฆฌ ๋น„์šฉ์€ ๋‚ฎ์•„์ง‘๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šคํ‚จ ๋งค์‰ฌ

  • ๊ฐ€๋Šฅํ•œ ํ•œ ์Šคํ‚จ ๋ฉ”์‰ฌ๋Š” ๊ฒฐํ•ฉ(combine)ํ•˜์‹ญ์‹œ์˜ค.
  • ์บ๋ฆญํ„ฐ๋ฅผ ๋‘๊ฐœ์˜ ์Šคํ‚จ ๋ฉ”์‰ฌ ๋ Œ๋”๋Ÿฌ(class-SkinnedMeshRenderer)๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์€ ํผํฌ๋จผ์Šค ๊ด€์ ์—์„œ๋Š” ์ข‹์€ ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.
  • ์บ๋ฆญํ„ฐ์— ํ•˜๋‚˜์˜ ๋ฉ”ํ„ฐ๋ฆฌ์–ผ์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๋” ์ข‹์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ์—ฌ๋Ÿฌ ๋ฉ”ํ…Œ๋ฆฌ์–ผ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์ปจํŠธ๋กค๋Ÿฌ

  • ์• ๋‹ˆ๋ฉ”์ดํ„ฐ/Animator๋Š” [์ปจํŠธ๋กค๋Ÿฌ/Controller (class-AnimatorController)๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‹ฌํ”Œ ์—๋‹ˆ๋ฉ”์ด์…˜

  • ๋ธ”๋ Œ๋”ฉ์ด ์—†๋Š” ํ•˜๋‚˜์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํด๋ฆฝ๋ฅผ ์žฌ์ƒํ•˜๋ฉด ๋ฉ”์นด๋‹˜์ด ๋ ˆ๊ฑฐ์‹œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์Šคํ…œ๋ณด๋‹ค ๋А๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ค๋ž˜๋œ ์‹œ์Šคํ…œ์€ ์ง์ ‘์ ์ด๋ฉฐ, ์ปค๋ธŒ๋ฅผ ์ƒ˜ํ”Œ๋งํ•˜์—ฌ Transform์— ์ง์ ‘ ๊ธฐ๋ก์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฉ”์นด๋‹˜์€ ๋ธ”๋ Œ๋”ฉ์— ์‚ฌ์šฉํ•˜๋Š” ์ž„์‹œ ๋ฒ„ํผ๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ƒ˜ํ”Œ๋ง๋œ ์ปค๋ธŒ ๋ฐ ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ์˜ ๋ณต์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”์นด๋‹˜ ๋ ˆ์ด์•„์›ƒ์€ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ธ”๋ Œ๋”ฉ๊ณผ ๋ณด๋‹ค ๋ณต์žกํ•œ ์„ค์ •์— ์ตœ์ ํ™” ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์Šค์ผ€์ผ ์ปค๋ธŒ(Scale Curve)

  • Animating scale curves is more expensive than animating translation and rotation curves. To improve performance, avoid scale animations.
  • Note: This does not apply to constant curves (curves that have the same value for the length of the Animation Clip ). * * Constant curves are optimized, and are less expensive that normal curves.

๋ ˆ์ด์–ด(Layer)

  • ๋ฉ”์นด๋‹˜ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์˜ ๋Œ€๋ถ€๋ถ„์€ ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ํ‰๊ฐ€์— ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, AnimationLayers ๋ฐ AnimationStateMachines์˜ ์˜ค๋ฒ„ ํ—ค๋“œ๋Š” ์ตœ์†Œํ•œ์œผ๋กœ ์œ ์ง€ ๋ฉ๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€ ๋ ˆ์ด์–ด๋ฅผ ์• ๋‹ˆ๋ฉ”์ดํ„ฐ์— ์ถ”๊ฐ€ํ•˜๋Š” ๋น„์šฉ์€ ๋™๊ธฐํ™”๋˜์–ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์— ์ƒ๊ด€์—†์ด ์–ด๋–ค ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฐ ๋ธ”๋ Œ๋“œ ํŠธ๋ฆฌ๊ฐ€ ๋ ˆ์ด์–ด์— ์˜ํ•ด ์žฌ์ƒ๋˜๊ณ  ์žˆ๋Š”์ง€์— ์˜์กดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ ˆ์ด์–ด ์›จ์ดํŠธ๊ฐ€ ์ œ๋กœ๋ฉด ๋ ˆ์ด์–ด์˜ ์—…๋ฐ์ดํŠธ๋Š” ์ƒ๋žต๋ฉ๋‹ˆ๋‹ค.

ํœด๋จธ๋…ธ์ด๋“œ vs Generic ๋ชจ๋“œ

  • ํœด๋ชจ๋…ธ์ด๋“œ ์—๋‹ˆ๋ฉ”์ด์…˜์„ ์ž„ํฌํŠธํ•  ๋•Œ, ๋ฐ”๋”” ๋งˆ์Šคํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ IK Goals ๋˜๋Š” ๋ถˆํ•„์š”ํ•œ ์†๊ฐ€๋ฝ์˜ ์—๋‹ˆ๋ฉ”์ด์…˜์„ ์ œ์™ธ ํ•จ
  • Generic์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ root motion์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฒ˜๋ฆฌ ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€. root motion์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์—๋‹ˆ๋ฉ”์ด์…˜์˜ ๊ฒฝ์šฐ root bone์ด ์„ ํƒ๋˜์–ด ์žˆ์ง€ ์•Š์€์ง€ ํ™•์ธ

๋ฉ”์นด๋‹˜ ์”ฌ

  • Animator์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ฟผ๋ฆฌํ•  ๋•Œ๋Š” ๋ฌธ์ž์—ด ๋Œ€์‹ ์— ํ•ด์‹œ(Hash)๋ฅผ ์‚ฌ์šฉํ•จ
  • Animator๋ฅผ ์ œ์–ดํ•˜๋Š” AI ๋ ˆ์ด์–ด๋ฅผ ์ถ•์†Œ ๊ตฌํ˜„ํ•จ. OnStateChange, OnTransitionBegin ๋“ฑ๋“ฑ์„ ์œ„ํ•ด ๊ฐ„๋‹จํ•œ ์ฝœ๋ฐฑ์ด ์ œ๊ณต๋จ
  • State ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ AI ์ƒํƒœ ๋จธ์‹ ์ด ๋ฉ”์นด๋‹˜ ์ƒํƒœ ๋จธ์‹ ์— ์ผ์น˜ํ•˜๋„๋ก ํ•จ
  • ์ด๋ฒคํŠธ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€์ ์ธ ์ปค๋ธŒ๋ฅผ ์‚ฌ์šฉํ•จ
  • ์ถ”๊ฐ€์ ์ธ ์ปค๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—๋‹ˆ๋ฉ”์ด์…˜์„ ๋งˆํฌ์—…(Mark Up)ํ•จ. Target Matching๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ

๋Ÿฐํƒ€์ž„ ์ตœ์ ํ™”

  • ์—๋‹ˆ๋ฉ”์ดํ„ฐ Culling Mode๋ฅผ Based on Renderers๋กœ ์„ค์ •ํ•˜์—ฌ ์Šคํ‚จ ๋ฉ”์‰ฌ ๋ Œ๋”๋Ÿฌ์˜ Update When Offscreen ํ”„๋กœํผํ‹ฐ๋ฅผ ํ•ด์ œํ•จ์œผ๋กœ์จ ์—๋‹ˆ๋ฉ”์ด์…˜์„ ํ•ญ์ƒ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ์Œ
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ ์บ๋ฆญํ„ฐ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์„ ๋•Œ๋Š” Update๋˜์ง€ ์•Š์Œ