خلاصه (Summary)
یک Actor COMP مشابه یک جسم (یا چند جسم) در یک سیستم فیزیکی است.
Actor COMP باید همراه با یک حلکننده فیزیک (Physics Solver) استفاده شود:
یا Bullet Solver COMP
یا Nvidia Flex Solver COMP
که این حلکنندهها شبیه به دنیای شبیهسازی هستند که Actorها/اجسام در آن فعالیت میکنند.
یک Actor COMP میتواند:
استاتیک (Static) باشد → تحت تأثیر هیچ نیرویی قرار نمیگیرد و حرکت نمیکند (جرم بینهایت دارد).
داینامیک (Dynamic) باشد → با نیرو حرکت میکند و با اجسام دیگر (استاتیک یا داینامیک) برخورد میکند.
🔗 لینک های مرتبط: Flex، Bullet Dynamics، Bullet Solver COMP، Force COMP، Constraint COMP، Bullet Solver CHOP، Nvidia Flex Solver COMP، Nvidia Flex TOP
استفاده (Usage)
Actorها در Bullet
اجسام استاتیک میتوانند مقعر (Concave) یا محدب (Convex) باشند.
اجسام داینامیک باید محدب باشند.
ولی میشود شکلهای برخورد داینامیک را به صورت ترکیبی (Compound) ساخت (یعنی با چند شکل محدب، یک جسم مقعر ایجاد کرد).
این کار با چند SOP انجام میشود:
هر SOP باید محدب باشد.
اما ترکیب آنها میتواند مقعر شود.
اگر حالت Automatic انتخاب شود، یک شکل برخورد ترکیبی از SOPها ساخته خواهد شد.
شکل برخورد (Collision Shape)
هر Actor یک شکل برخورد دارد.
شکل برخورد تعیین میکند که اجسام چطور با هم برخورد کنند.
چیزی که در رندر/ویو دیده میشود الزماً همان شکل برخورد نیست.
ساخت شکل برخورد از دو روش:
استفاده از پارامتر Collision SOPs
یا قرار دادن SOPها داخل Actor COMP (با فعال بودن پرچمهای Display و Render).
چند جسم (Multiple Bodies)
برای ساخت چند جسم، باید از Instancing در صفحه Instance استفاده کرد.
این کار اجسام یکسان (با شکل برخورد یکسان) میسازد.
فعلاً راهی برای ساخت چند جسم غیر یکسان در یک Actor COMP وجود ندارد.
ریاینیشیالایز (Reinitialize)
هر زمان تغییر در SOPها ایجاد شود باید با پارامتر Initialize Actor بازیابی شوند.
تغییراتی مثل: Kinematic State، شکل، یا مرکز جرم باعث ریاینیشیالایز میشوند.
Transformها
میتوان از صفحات Xform و Pre-Xform استفاده کرد (مثل Geometry COMP یا Camera COMP).
تغییر Scale نیاز به ریاینیشیالایز دارد چون شکل برخورد تغییر میکند.
هنگام Instancing هم اگر Transform تغییر کند، Actor ریاینیشیالایز میشود.
محدودیت تو در تو شدن (Nesting)
Actor COMP نمیتواند در Actor COMP دیگر قرار گیرد.
ولی میتواند داخل Geometry COMP باشد و برعکس.
Geometry COMPهایی که Actor دارند نباید Scale داشته باشند.
اما اگر Geometry داخل Actor باشد، میتواند Scale داشته باشد.
Actor داخل Geometry فقط موقع Initialize Transform آن را میگیرد؛ تغییرات بعدی نیازمند ریاینیشیالایز هستند.
Actorها در Flex
در Flex، Actor میتواند:
ذرههای سیال (Fluid Particles)
منبع ذره سیال (Fluid Emitter)
یا شکل استاتیک باشد.
شکلهای استاتیک با Triangle Mesh SOP ساخته میشوند.
ذرههای سیال مثل Instancing در Bullet هستند: تعدادشان = تعداد Instances.
رفتار آنها توسط پارامترهای Solver (Nvidia Flex) تعیین میشود.
برای نمایش، میتوان از SOP یا Nvidia Flex TOP استفاده کرد.
Emitterها ذرهها را در نقطه انتشار اضافه میکنند تا به حداکثر برسند؛ بعد از آن ذرات بازیافت میشوند.
چرا اجسام برخورد نمیکنند؟
چون Bullet به صورت گسسته (Discrete) شبیهسازی میکند.
برخوردها فقط در ابتدای فریم و انتهای فریم بررسی میشوند.
اگر جسم سریع حرکت کند، ممکن است از بین اجسام عبور کند (Clipping).
اجسام خیلی نازک هم به راحتی عبور میکنند.
راهحل:
استفاده از Continuous Collision Detection (CCD) → بررسی برخورد بین شروع و پایان فریم.
محدود کردن سرعت اجسام یا کاهش نیروها.
افزایش ضخامت اجسام خیلی نازک (مثلاً به جای Grid SOP، Box SOP).
پارامترها (Parameters)
صفحه General
Initialize Actor → بازسازی شکل برخورد و ریست سرعت/موقعیت.
Update Collision Shape → بهروزرسانی خودکار شکل برخورد هنگام تغییر SOPها.
Active → فعال/غیرفعال بودن Actor در شبیهسازی.
Kinematic State → استاتیک یا داینامیک بودن.
Collision SOPs → مشخص کردن SOP/COMP برای شکل برخورد.
Collision Shape → انتخاب نوع شکل برخورد: Concave, Convex Hull, OBB, AABB, Sphere, Compound …
Mass → جرم جسم.
Velocity → سرعت خطی و زاویهای اولیه.
صفحه Bullet
Forces → لیست نیروهای محلی.
Gravity → گرانش محلی (یا استفاده از گرانش Solver).
Friction → اصطکاک لغزشی.
Rolling Friction → اصطکاک غلتشی.
Restitution → ضریب کشسانی (میزان جهش پس از برخورد).
CCD → برخورد پیوسته.
Center of Mass → مرکز جرم.
Feedback CHOP → گرفتن و برگرداندن دادههای Transform/Velocity.
صفحه Flex
Flex Type → انتخاب نوع Actor: Fluid یا Fluid Emitter.
Emission Size / Speed / Max → تنظیمات نشر ذره.
Position Feedback TOP → بازخورد مکان.
Velocity Feedback TOP → بازخورد سرعت.
صفحه Xform
کنترل Transform: Translate، Rotate، Scale، Pivot.
Transform Order → ترتیب اعمال تغییرات.
Rotate Order → ترتیب چرخشها.
Look At → نگاه کردن Actor به یک شیء.
Path SOP → حرکت روی یک مسیر.
صفحه Pre-Xform
اعمال Transform قبل از Xform (مثل Parent Transform).
شامل Translate، Rotate، Scale، Pivot.
Uniform Scale
pscale – به مستندات صفحه Xform مراجعه کنید برای اطلاعات بیشتر.
Reset Transform preset
این دکمه ترنسفورم (تغییر مکان/چرخش/مقیاس) این صفحه را ریست میکند، به طوری که هیچ translate/rotate/scale اعمال نشده باشد.
Commit to Main Transform
pcommit – این دکمه مقدار ترنسفورم این صفحه را به صفحه اصلی Xform کپی میکند و سپس ترنسفورم این صفحه را ریست میکند.
Xform Matrix/CHOP/DAT
xformmatrixop – این پارامتر امکان استفاده مستقیم از یک ماتریس ۴×۴ را برای ترنسفورم میدهد. برای اطلاعات بیشتر درباره روشهای تعریف مستقیم ماتریس به صفحه Matrix Parameters مراجعه کنید.
این ترنسفورم بعد از ترنسفورم Pre-Transform اعمال میشود، یعنی به ترتیب زیر:Parameters – Instance Page
صفحه Instance امکان ساخت instancing سختافزاری برای هندسه را فراهم میکند.
هر instance یک Instance ID دارد که میتواند به یک شیدر MAT از طریق مقدار uniform پاس داده شود.
این Instance ID میتواند توسط Render Pick CHOP بازیابی شود.
کدهای نوشتهشده در Vertex Shader میتوانند ظاهر هر instance را بر اساس Instance ID شخصیسازی کنند.
منبع داده برای Instance
ویژگیهای هر Instance میتواند توسط دادههای انواع مختلف OP کنترل شود:
اگر داده از TOP بیاید → کانالهای RGBA به ویژگیهای instance اختصاص مییابند.
اگر داده از CHOP بیاید → کانالهای CHOP به ویژگیهای instance اختصاص مییابند.
اگر از SOP بیاید → Attributeهای SOP به ویژگیهای instance اختصاص مییابند.
اگر از DAT استفاده شود → ستونهای جدول به ویژگیهای instance اختصاص مییابند.
تنظیم نگاشت دادههای OP به ویژگیهای instance در همین صفحه و صفحات Instance 2 و Instance 3 انجام میشود.
Instancing
instancing – instancing را برای Geometry Component فعال میکند.
Instance Count Mode
instancecountmode – دو حالت برای تعیین تعداد instanceها وجود دارد:
Manual → استفاده از پارامتر Num Instances.
Instance OP(s) Length → تعداد سطرهای DAT یا تعداد نمونههای CHOP تعیینکننده تعداد instanceهاست.
Num Instances
numinstances – در حالت Manual تعداد instanceها را مشخص میکند.
Default Instance OP
instanceop – مسیر یک CHOP یا DAT را مشخص میکند که داده ترنسفورم instanceها را فراهم کند. تعداد سطرها/نمونهها تعداد instanceها را مشخص میکند.
First Row is
instancefirstrow – در حالت استفاده از DAT، تعیین میکند با سطر اول جدول چه رفتاری شود:
Ignored → سطر اول نادیده گرفته میشود.
Names → سطر اول نام ستونهاست.
Values → سطر اول داده اولین instance است.
Transform Order
instxord – ترتیب اعمال Transform روی هر instance:
Scale → Rotate → Translate (srt)
Scale → Translate → Rotate (str)
Rotate → Scale → Translate (rst)
Rotate → Translate → Scale (rts)
Translate → Scale → Rotate (tsr)
Translate → Rotate → Scale (trs)
Rotate Order
instrord – ترتیب اعمال چرخشها:
Rx Ry Rz (xyz)
Rx Rz Ry (xzy)
Ry Rx Rz (yxz)
Ry Rz Rx (yzx)
Rz Rx Ry (zxy)
Rz Ry Rx (zyx)
Translate OP
instancetop – انتخاب اپراتور برای داده ترنسلیت (X, Y, Z).
Active → انتخاب کانالی که تعیین میکند کدام instance رندر شود (مقدار ۰ = غیرفعال).
Translate X/Y/Z → انتخاب داده برای جابهجایی هر محور.
Rotate OP
instancerop – انتخاب اپراتور برای داده چرخش (X, Y, Z).
Scale OP
instancesop – انتخاب اپراتور برای داده مقیاس (X, Y, Z).
Pivot OP
instancepop – انتخاب اپراتور برای داده پیوت (X, Y, Z).
Parameters – Instance 2 Page
زمانی که داده instance از TOP بیاید → RGBA به ویژگیها اختصاص داده میشود.
زمانی که داده از CHOP بیاید → کانالها به ویژگیها.
از SOP → Attributeها.
از DAT → ستونها.Rotate to Vector
Order (instancerottoorder) → مشخص میکند عمل Rotate to Vector در کجای معادله Transform اعمال شود.
Forward Direction (instancerottoforward) → تعیین میکند کدام محور جهت جلو محسوب شود.
Rotate to OP
instancerottoop – انتخاب اپراتور برای داده چرخش به بردار.
Rotate to Vector X/Y/Z → داده بردار هدف.
Rotate Up OP
instancerotupop – انتخاب اپراتور برای داده Rotate Up.
Rotate Up X/Y/Z → داده مربوطه.
Instance Order
instanceorder – ترتیب اعمال ترنسفورم:
Instance, then World Transform → worldXform * instanceXForm * Position
World, then Instance → instanceXForm * worldXForm * Position
Texture Mode
instancetexmode – نحوه اعمال مختصات بافت:
Replace → جایگزینی
Transform → انتقال
Texture Coord OP
instancetexcoordop – اپراتور برای مختصات بافت (U, V, W).
Color Mode
instancecolormode – نحوه تعامل رنگ instance با Cd از SOP:
Replace / Multiply / Add / Subtract
Color OP
instancecolorop – اپراتور برای رنگ (R, G, B, A).
Instance Textures
instancetexs – مسیر یک یا چند TOP برای تکسچرهای instance.
Extend U/V/W → Hold, Zero, Repeat, Mirror
Filter → Nearest, Linear, Mipmap Linear
Anisotropic Filter → Off, 2x, 4x, 8x, 16x
📌 هر instance میتواند تکسچر متفاوت داشته باشد (برخلاف Texture Array).
حداکثر در ویندوز → 16384 تکسچر.
در macOS → 128 تکسچر.
Texture Index
instancetexindexop / instancetexindex – انتخاب اپراتور و داده برای تعیین اینکه کدام تکسچر روی هر instance اعمال شود.
Parameters – Instance 3 Page
اینجا میتوان ویژگیهای دلخواه (Custom Attributes) تعریف کرد که در GLSL MAT قابل استفاده هستند.
instance0customop → انتخاب اپراتور داده.
X, Y, Z, W → مقدار ویژگی.
این ویژگیها با TDInstanceCustomAttrib0() و غیره در GLSL قابل دسترسیاند.
Parameters – Render Page
Material → انتخاب MAT برای هندسه.
Render → روشن/خاموش بودن رندر.
Draw Priority → ترتیب رسم (برای شفافیت).
Pick Priority → انتخاب شیء در Render Pick.
Wireframe Color → رنگ در حالت Wireframe.
Light Mask → تعیین چراغهای تأثیرگذار.
Parameters – Extensions Page
Extension → لیست اکستنشنهای پایتون برای کامپوننت.
Name / Object / Promote → تنظیمات مربوطه.
Re-Init Extensions → بازکامپایل همه اکستنشنها.
Parameters – Common Page
Parent Shortcut → نام مستعار مسیر والد.
Global OP Shortcut → نام مستعار سراسری.
Internal OP → تعریف اپراتور داخلی.
Node View → انتخاب نمای نود (Viewer).
Cloning → تنظیمات Clone Master.
External .tox → بارگذاری از فایل tox خارجی.
Reload Parameters → بازخوانی پارامترها هنگام ریلود tox.
Backup → ذخیره نسخه پشتیبان.
Sub-Component to Load → بارگذاری یک زیرکامپوننت خاص از tox.
Relative File Path Behavior → تنظیم مسیرها (نسبت به toe یا tox).
Info CHOP Channels
Actor COMP Info
num_bodies
num_active_bodies
Common COMP Info
num_children – تعداد فرزندها.
Common Operator Info
total_cooks – تعداد دفعات cook.
cook_time – مدت cook آخر (ms).
cook_frame – فریم cook آخر نسبت به timeline.
cook_abs_frame – فریم cook آخر نسبت به زمان مطلق.
cook_start_time – زمان شروع cook (ms).
cook_end_time – زمان پایان cook (ms).
cooked_this_frame – آیا این فریم cook شده یا نه.
warnings – تعداد هشدارها.
errors – تعداد خطاها.
