Article · 02

مش، وزن‌دهی و Deform در Spine: حرکت نرم‌تر بدون سنگین شدن بازی

Mesh به تو امکان می‌دهد تصویر را خم کنی، نه فقط بچرخانی. اما هر ورتکس هزینه دارد. اینجا یاد می‌گیریم کجا ارزشش را دارد و چطور ساده نگهش داریم.

داود جنگجو مهر ۱۴۰۵ مطالعه: ۸ دقیقه متوسط
SpineMeshWeightsFFD

در Spine هر تصویر به‌صورت پیش‌فرض یک Region Attachment است: یک مستطیل که فقط می‌تواند جابه‌جا، بچرخد و مقیاس بگیرد. با تبدیل آن به Mesh Attachment می‌توانی شکل تصویر را خم کنی و با چند استخوان کنترل کنی.

Region یا Mesh؟

حالتمناسب برایهزینه
Regionاجزای صلب مثل زره، کفش، سلاح، دکمه‌ی UIخیلی کم
Mesh بدون وزنحذف فضای خالی تصویر برای کاهش Overdraw، یا Deform سادهکم
Mesh با وزنتنه، بازوی نرم، دم، شنل، مو، لباس‌های خم‌شوندهمتوسط

قانون ساده: فقط جایی مش بساز که واقعاً خم شدن لازم است. بقیه Region بماند.

ساخت یک مش خوب

  1. ابتدا دور شکل را با ورتکس‌های لبه (Hull) بپوشان؛ ابزار خودکار Spine نقطه‌ی شروع خوبی می‌دهد.
  2. سپس نقاط داخلی را فقط اطراف مفصل‌ها اضافه کن، نه همه‌جا.
  3. در ناحیه‌های صلب از ورتکس کم و مثلث‌های بزرگ استفاده کن.
  4. مثلث‌ها را باریک و بلند نکن؛ مثلث‌های متعادل خم شدن تمیزتری می‌دهند.
هدف

کمترین ورتکسی که حرکت را درست نشان بدهد. اگر با ۲۰ ورتکس همان نتیجه‌ی ۶۰ ورتکس را می‌گیری، ۲۰ را نگه دار.

وزن‌دهی

وقتی مش را به استخوان‌ها Bind می‌کنی، هر ورتکس از چند استخوان تأثیر می‌گیرد و جمع وزن‌های هر ورتکس برابر ۱ است. مثلاً ورتکس نزدیک آرنج ۵۰٪ از بازو و ۵۰٪ از ساعد.

  • برای هر ورتکس ترجیحاً از ۲ تا ۳ استخوان تأثیر بگیر؛ تعداد بیشتر هم کند است هم کنترل را سخت می‌کند.
  • در مفصل از یک انتقال تدریجی وزن (گرادیان) استفاده کن تا چین و پیچ ناخواسته پیدا نشود.
  • بعد از وزن‌دهی، استخوان‌ها را در حالت‌های شدید بچرخان و ناحیه‌های خراب را اصلاح کن.
  • قبل از Bind، ساختار استخوان‌ها را نهایی کن؛ تغییر ساختار بعد از وزن‌دهی وقت‌گیر است.

Deform (FFD)

Deform یعنی جابه‌جا کردن ورتکس‌ها در طول زمان. برای حالت‌هایی که با استخوان نمی‌شود ساخت کار می‌کند: مثلاً حالت دهان، جمع شدن پارچه یا پف‌کردن بدن.

  • Deform برای هر کلید، آفست تک‌تک ورتکس‌ها را ذخیره می‌کند؛ پس حجم فایل و هزینه‌ی محاسبه را بالا می‌برد.
  • ابتدا ببین با استخوان اضافی می‌شود همان حرکت را ساخت یا نه.
  • Deform را روی مش‌های کم‌ورتکس بگذار و کلیدها را کم نگه دار.
  • مش‌هایی که Deform دارند را در حالت Setup دست نزن؛ ابتدا ساختار مش را نهایی کن.

ترفندهای حرکت ثانویه

  • زنجیره‌ی استخوان برای مو، دم و شنل: ۳ تا ۵ استخوان پشت سر هم و تأخیر چند فریمی در هر حلقه.
  • Squash & Stretch: مقیاس استخوان تنه هنگام پرش یا فرود، با مش وزن‌دار حس لاستیکی خوبی می‌دهد.
  • اگر نسخه‌ی ۴٫۲ یا بالاتر داری، Physics Constraint برخی از این حرکت‌ها را خودکار می‌سازد؛ مقادیرش را برای هر کاراکتر تنظیم کن.
  • اگر مقیاس غیر یکنواخت لازم است، قبلش وراثت (Inherit) استخوان‌ها را بررسی کن تا چرخش‌ها اعوجاج نگیرند.

هزینه‌ی اجرا

در ران‌تایم، مش‌های وزن‌دار هر فریم محاسبه می‌شوند. روی موبایل‌های ضعیف و وقتی ده‌ها کاراکتر هم‌زمان روی صفحه هست، این عدد مهم است.

  • تعداد کل ورتکس‌ها و استخوان‌های هر کاراکتر را یادداشت کن و با بودجه‌ی تیم مقایسه کن.
  • کاراکترهای کوچک یا دور از دوربین را با مش ساده‌تر بساز.
  • با یک صحنه‌ی تست پر از کاراکتر روی ضعیف‌ترین گوشی هدف، Profiler را بررسی کن.
جمع‌بندی

اول استخوان، بعد وزن، و در آخر Deform. هر پله هزینه‌ی بیشتری دارد؛ فقط وقتی بالاتر برو که پله‌ی قبلی جواب نداد.

پروژه‌ای با Spine یا Unity داری؟

برای انیمیشن کاراکتر، UI و پیاده‌سازی در Unity می‌توانیم با هم صحبت کنیم.

Telegram View Portfolio