خلاصه (Summary)

Inverse Curve CHOP یک شبیه‌سازی Inverse Kinematics (IK) برای استخوان‌ها (Bone Objects) با استفاده از یک منحنی (Curve Object) محاسبه می‌کند.

این CHOP مجموعه‌ای از استخوان‌ها را کشیده و موقعیت‌دهی می‌کند تا از یک منحنی که توسط مجموعه دیگری از آبجکت‌ها (Guide) تعریف شده است پیروی کنند.

  • Bone Start / Bone End: اولین و آخرین استخوان در زنجیره را مشخص می‌کنند.

  • Guide Components: با وارد کردن نام آبجکت‌ها (به ترتیب، جدا شده با فاصله) مشخص می‌شود. این پارامتر از Pattern و Wildcard هم پشتیبانی می‌کند. (مثال: null[1-5] null17 null4). حتی می‌توانید استخوان‌ها را نیز در این گروه قرار دهید.

خروجی این CHOP شامل مجموعه‌ای از کانال‌های چرخش (Rotate) و طول استخوان‌ها است. همچنین سه کانال انتقال (Translate) برای اولین استخوان زنجیره تولید می‌کند. لینک‌های Export به‌صورت خودکار ساخته می‌شوند؛ کافی است پرچم Export این CHOP را فعال کنید.

روش کار:
این CHOP یک منحنی راهنما (Guide Curve) بین آبجکت‌های معرفی‌شده می‌سازد. نوع منحنی و ترتیب آن با پارامترهای Interpolation و Order مشخص می‌شود. به‌طور پیش‌فرض، نقاط کنترل منحنی، مراکز هندسی آبجکت‌ها هستند. جهت‌گیری منحنی هم بر اساس Orientation آبجکت‌های راهنما اعمال می‌شود. استخوان‌ها محور X خود را با این Orientation هم‌تراز می‌کنند.

برای مشاهده‌ی این منحنی می‌توانید از Inverse Curve SOP استفاده کنید. کافی است نام Inverse Curve CHOP را به آن بدهید تا هندسه را برای نمایش/دیباگ استخراج کند. این SOP درواقع سه منحنی ایجاد می‌کند (منحنی اصلی، و منحنی‌های جابجا شده در +X و +Y). این منحنی‌ها را می‌توان با Skin SOP اسکین کرد تا بازخورد بهتری نمایش دهند.

Span: برای حذف بخش‌هایی از ابتدای یا انتهای منحنی راهنما به‌کار می‌رود. مثال: Span 0.3 0.7 باعث می‌شود استخوان‌ها فقط در 40% میانی منحنی قرار گیرند.

در شرایط نادر که کاربر منحنی‌ای بسازد که همه‌ی محورهای X (Twist) در همان جهت منحنی باشند، پارامتر Up Vector برای رفع این حالت استفاده می‌شود. هرچند این نوع تنظیم منحنی ذاتاً مشکل‌دار است و بهتر است با چرخاندن آبجکت‌ها (مثلاً 90 درجه) از آن اجتناب شود.


پارامترها – صفحه Inverse Curve

  • Guide Components (guide): مجموعه آبجکت‌هایی که منحنی را تعریف می‌کنند.

  • Bone Start (bonestart): اولین استخوان زنجیره.

  • Bone End (boneend): آخرین استخوان زنجیره.

  • Span (span): ⊞ – تعیین بخش مورد استفاده از منحنی راهنما:

    • span1: بخش ابتدایی (به‌صورت کسری از منحنی).

    • span2: بخش انتهایی (به‌صورت کسری از منحنی).

  • Interpolation (interpolation): ⊞ – نوع منحنی راهنما:

    • Polygonal Curve (polygon): ایجاد یک چندضلعی با رأس در هر آبجکت راهنما.

    • Bezier Curve (bezier): ایجاد منحنی بزیه با نقاط کنترل در هر آبجکت راهنما.

    • NURBS Curve (nurbs): ایجاد منحنی NURBS با نقاط کنترل در هر آبجکت راهنما.

  • Order (order): مرتبه‌ی منحنی هنگام استفاده از NURBS یا Bezier.

  • Up Vector (upvector): ⊞ – کنترل چرخش (Twist) استخوان‌ها:

    • X (upvectorx): مؤلفه X

    • Y (upvectory): مؤلفه Y

    • Z (upvectorz): مؤلفه Z

  • Map Exports (mapexports): مقادیر Transform محاسبه‌شده را مستقیماً روی پارامترهای زنجیره استخوان‌ها Export می‌کند.


پارامترها – صفحه Common

  • Time Slice (timeslice): اگر فعال باشد، کانال‌ها به‌صورت Time Sliced محاسبه می‌شوند (فاصله بین آخرین Cook و فریم جاری).

  • Scope (scope): تعیین می‌کند کدام کانال‌ها تحت تأثیر قرار گیرند.

Sample Rate Match (srselect): ⊞ – مدیریت اختلاف نرخ نمونه‌برداری:

  • Resample At First Input’s Rate (first): استفاده از نرخ ورودی اول.

  • Resample At Maximum Rate (max): بازنمونه‌گیری به بالاترین نرخ.

  • Resample At Minimum Rate (min): بازنمونه‌گیری به پایین‌ترین نرخ.

  • Error If Rates Differ (err): اگر نرخ‌ها متفاوت باشند خطا می‌دهد.

Export Method (exportmethod): ⊞ – روش اتصال کانال CHOP به پارامتر:

  • DAT Table by Index (datindex): استفاده از جدول DAT الحاقی با ایندکس کانال.

  • DAT Table by Name (datname): استفاده از جدول DAT الحاقی با نام کانال.

  • Channel Name is Path:Parameter (autoname): استفاده از نام کانال به‌عنوان مسیر مقصد (مثال: geo1/transform1:tx).

Export Root (autoexportroot): مسیر پایه برای Exportهای نسبی.
Export Table (exporttable): جدول DAT مورد استفاده در روش‌های DAT Table Export.


ورودی‌های اپراتور

  • Input 0: ورودی اصلی داده ندارد.


کانال‌های Info CHOP

اطلاعات اضافه Inverse Curve CHOP از طریق Info CHOP در دسترس است.

Common CHOP Info Channels

  • start: شروع بازه CHOP (برحسب نمونه)

  • length: تعداد نمونه‌ها

  • sample_rate: نرخ نمونه‌برداری (فریم بر ثانیه)

  • num_channels: تعداد کانال‌ها

  • time_slice: اگر Time Slice فعال باشد = 1 وگرنه = 0

  • export_sernum: تعداد دفعات به‌روزرسانی اتصال‌های Export

Common Operator Info Channels

  • total_cooks: تعداد دفعات Cook از شروع پروسه

  • cook_time: مدت زمان Cook آخر (میلی‌ثانیه)

  • cook_frame: شماره فریم Cook آخر نسبت به Timeline کامپوننت

  • cook_abs_frame: شماره فریم Cook آخر نسبت به زمان مطلق

  • cook_start_time: زمان شروع Cook در آن فریم (ms)

  • cook_end_time: زمان پایان Cook در آن فریم (ms)

  • cooked_this_frame: اگر در این فریم Cook شده باشد = 1

  • warnings: تعداد هشدارها (در صورت وجود)

  • errors: تعداد خطاها (در صورت وجود)