جلوه ویژه افتادن روی سطح در مایا

نرم افزار مایا 2023 + موتور رندر ردشیفت

شروع کنیم با ساده‌ترین و کاربردی‌ترین افکت دینامیکی: افتادن و برخوردِ جسم‌ها با زمین در Maya 2023. برای این کار از Bullet Rigid Body استفاده می‌کنیم (پایداری و سرعت خوبی داره). ردشیفت فقط برای رندر نهاییه و توی شبیه‌سازی نقشی نداره.

فایل تمرینی: fall ground vfx – bounce.mb

Sprint 1: افتادن مکعب‌ها و کره روی زمین (Bullet)

0) آماده‌سازی

  • واحد صحنه رو همون پیش‌فرض سانتیمتر نگه دار (Windows > Settings/Preferences > Preferences > Settings > Working Units = centimeter).
    مقیاس واقعی، شبیه‌سازی پایدارتر می‌ده.
  • اگه منوی Bullet رو نمی‌بینی: Windows > Settings/Preferences > Plug-in Manager و Bullet.mll رو Loaded و Auto load کن.

1) تعیین زمین (Passive)

  1. صفحه‌ی زمینت رو انتخاب کن.
  2. از منوی Bullet: Rigid Body > Create Passive Rigid Body
    (Passive یعنی جسم، متحرک نیست ولی برخوردپذیره—زمین ما).

2) تعیین اجسام متحرک (Active)

  1. هر سه جسم (دو مکعب و یک کره) رو انتخاب کن.
  2. Bullet: Rigid Body > Create Active Rigid Body
    حالا این‌ها تحت گرانش می‌افتند و به زمین برخورد می‌کنند.

3) تنظیمات پایه‌ی فیزیک

  • یکی از جسم‌های Active را انتخاب کن و در Attribute Editor تب rigidBodyShape را ببین:
    • Mass: مثلاً 1 تا 5 (عدد بزرگ‌تر → جسم سنگین‌تر، اما سقوط با سرعت یکسانه؛ تفاوت در واکنش برخورد دیده می‌شود).
    • Friction (اصطکاک): 0.2–0.8 (کم‌تر → لیزتر).
    • Restitution (جهندگی/پرش): 0.0–0.6 (بیشتر → جهش بیشتر).
    • Linear Damping/Angular Damping: 0.0–0.2 برای کاهش لرزش‌های ریز.
  • برای کره، Collision Shape معمولاً Sphere انتخاب می‌شود (خوبه).
    برای مکعب‌ها Box یا Convex Hull اوکی است. اگر زمین مش سنگین است، Passive را هم روی Mesh بگذار.

4) تنظیمات حل‌گر (پایداری و عبور نکردن از هم)

  • از منوی Bullet: Solvers > Edit Bullet Settings…
    • Gravity Y = -980 (سانتیمتر/ثانیه²؛ معادل -9.8m/s² در واحد سانتیمتر).
    • Substeps: 10–20 برای صحنه‌ی ساده (اگر اجسام از هم رد شدند، این عدد را بالاتر ببر).
    • Collision Margin/Thickness را روی حدود 0.5–1.0 سانتیمتر بگذار تا تماس‌ها پایدارتر شوند.

حق با توست—تو این نسخه از Bullet، چیزی به اسم «Substeps» جدا تو UI نداره. همون چیزی که دنبالش هستی در bulletSolverShape با اسم Internal Fixed Frame Rate کنترل می‌شه. یعنی هرچه این مقدار را نسبت به فریم‌ریت صحنه بالاتر ببری، عملاً ساب‌استپ بیشتر می‌گیری.

چی کار کنی؟

  1. ساب‌استپ مؤثر
  • برو به تب bulletSolverShape1 (همون اسکرین‌شات اولت).
  • پارامتر Internal Fixed Frame Rate رو از 60Hz ببر بالاتر:
    120، 240 یا حتی 480.
  • «ساب‌استپ مؤثر = InternalFixedFrameRate / FPS صحنه».
    مثلاً اگر FPS صحنه 24 باشه و IFRF=240 → حدود 10 ساب‌استپ.
  1. Max Num Iterations
  • همون‌جا مقدار Max Num Iterations رو زیاد کن (20–50).
    این باعث می‌شه حل برخوردها دقیق‌تر بشه.
  1. Collision Margin
  • همونی که پیدا کردی (Collider Shape Margin) روی rigidBodyهاست؛ برای پایداری 0.5–1.0 سانت خوبه (بسته به مقیاس).

«Collider Shape Margin» دقیقاً چیه؟

این گزینه فاصله‌ی نامرئی بین سطح برخورد اجسامه.

تصور کن دو تا جسم وقتی به‌ظاهر لمس می‌شن، اگر مایا دقیقاً صفر فاصله در نظر بگیره، حل‌گر ممکنه گیج بشه و باعث بشه اجسام از هم رد شن یا لرزش پیدا کنن.
پس مایا یه حائل خیلی کوچک بینشون می‌ذاره — اون میشه Collision Margin.

🔹 در واقعیت:

  • عدد بیشتر = تماس زودتر، ولی جسم کمی معلق دیده میشه.
  • عدد کمتر = تماس دیرتر، ممکنه فرو بره داخل جسم دیگه.

🔸 مقدار پیشنهادی:

مقیاس جسمMargin پیشنهادی
اجسام بزرگ (۱ متر به بالا)۰.۵ تا ۱
اجسام کوچک (زیر ۳۰cm)۰.۰۵ تا ۰.۲

در صحنه تو، 0.04 سانت فاصله یعنی تقریباً تماس واقعی.
می‌تونی برای تست بگذاری روی 0.5 و ببینی مکعب قبل از تماس واقعی متوقف میشه یا نه.

برای افزایش زمان تایم لاین

از داخل این قسمت میتونی بزرگتر کنی رنج رو

کلید میانبر پلی کردن تایم لاین هم Alt + V هست.

تنظیمات رندر و خروجی

برای مشخص کردن فریم 1 تا 500 در رد شیفت: تیک گزینه‌ی Animation رو بزن ✅
(وقتی اینو فعال کنی، فیلدهای Start Frame و End Frame قابل ویرایش می‌شن.)

اسم خروجی مثلاً بذار:

File name prefix: fall_


🎯 اجرای این حالت که Bounce داشته باشه

پرش جسم موقع برخورد با زمین به دو عامل بستگی داره:

  1. Restitution جسم (جهندگی)
  2. Restitution سطحی که بهش برخورد می‌کنه (زمین)

مایا مقدار پرش رو از ترکیب هر دو حساب می‌کنه.
(یعنی اگر یکی‌ش صفر باشه، اون یکی تأثیر نداره.)


✅ تنظیم پرش (Restitution)

  1. یکی از اجسام Active رو انتخاب کن.
  2. در Attribute Editor برو به تب:
    bulletRigidBodyShape
  3. بخش Rigid Body Properties رو باز کن.
  4. مقدار Restitution رو زیاد کن:
    • 0.0 → بدون پرش
    • 0.3 → پرش کم
    • 0.8 → پرش زیاد (مثل توپ تنیس)
    • 1.0 → تقریباً بدون اتلاف انرژی
  5. همین مقدار رو برای زمین (Passive) هم بذار مثلاً 0.5 تا ترکیب خوبی بده.

🔹 نکته:
اگه پرش رو زیاد کردی ولی هنوز ضعیفه، بررسی کن در Solver مقدار Max Num Iterations بالاست (مثلاً 30) تا حل برخورد دقیق‌تر شه.

نتیجه عملی: انجام دادم و به خوبی انجام شد. هم باید برای زمین و هم باید برای اون جسمی که می افته باید این مفدار Restitution رو زیاد کنی. هیچ کدوم صفر نباشه. پیش فرض برای زمین صفر بود که گذاشتم روی .5

فقط یه چیزی. وقتی میافتاد روی زمین بعد از افتادنش یه تاب مسخره میکرد. برای اینکه درست بشه چکار کردم. برای زمین Collider Shape Type رو روی plane گذاشتم. (پیش فرض باکس بود که مناسب نبود)

Plane یک سطح بی‌نهایت و صافه؛ نرمال‌ها یکنواخت‌اند و حل‌گر تماس‌های پایدارتر می‌ده، پس خبری از لرزش و “فرفره‌بازی” نیست.