آشنایی با Skinning، Rigging و Morph Targets در ویرایش سه‌بعدی چهره

ویرایش سه‌بعدی چهره به یکی از پایه‌های اپلیکیشن‌های مدرن مثل بازی‌ها، AR/VR و آواتارهای مجازی تبدیل شده است. اما تغییر لحظه‌ای ویژگی‌های چهره مثل بینی، لب یا چانه نیاز به درک درستی از تکنیک‌های مختلف سه‌بعدی دارد. در این مقاله سه مفهوم اساسی — Skinning، Rigging و Morph Targets — را توضیح می‌دهم و اینکه چطور می‌توان با آن‌ها چهره را در محیط‌های سه‌بعدی مثل Three.js تغییر داد.

۱️⃣ Skinning (Skinned Mesh)

Skinning فرایند اتصال یک مش سه‌بعدی به یک اسکلت است. هر ورتکس مش می‌تواند تحت تأثیر یک یا چند استخوان باشد و وقتی استخوان‌ها حرکت می‌کنند، مش متناسب با آن تغییر شکل می‌دهد.

  • کاربرد: حرکت‌های پویا مثل پلک زدن، باز کردن فک یا چرخاندن سر.
  • مزایا: حرکت واقع‌گرایانه و طبیعی.
  • معایب: برای تغییرات ظریف شکل مثل بینی یا لب سخت است.
const mesh = new THREE.SkinnedMesh(geometry, material);
mesh.add(skeleton.bones[0]);

SkinnedMesh مشی است که یک Skeleton دارد و استخوان‌هایش می‌توانند ورتکس‌های هندسه را انیمیت کنند.

۲️⃣ Rigging

Rigging یعنی ساختن یک اسکلت و اختصاص دادن استخوان‌هایش به یک مش. Skinning به همین Rig متکی است.

  • کاربرد: حالت‌های چهره، انیمیشن بدن، کنترل حرکت‌های پیچیده.
  • مزایا: کنترل کامل روی حرکت؛ پشتیبانی از انیمیشن.
  • معایب: زمان‌بر است و دانش فنی می‌خواهد.

۳️⃣ Morph Targets (Shape Keys)

Morph Targets اجازه می‌دهند چند نسخه از یک مش با موقعیت‌های ورتکس متفاوت تعریف کنید. با درون‌یابی بین این نسخه‌ها، تغییر شکل نرم به دست می‌آید.

  • کاربرد: تغییرات ظریف چهره مثل اندازه بینی، طول چانه یا حجم لب.
  • مزایا: کنترل ساده و دقیق روی شکل؛ چند Morph را می‌توان ترکیب کرد.
  • معایب: حرکت پویا ندارد — فقط تغییر شکل ورتکس‌هاست.
mesh.morphTargetInfluences[noseIndex] = 0.5; // 50% nose morph
mesh.morphTargetInfluences[lipsIndex] = 0.7; // 70% lips morph
💡 نکته حرفه‌ای: برای ویرایش سه‌بعدی چهره، ترکیب Morph Targets برای تغییرات ظریف شکل با Skinning و Rigging برای حرکت‌های پویا معمولاً بهترین نتیجه را می‌دهد.