🧩 Script SOP
خلاصه (Summary)
Script SOP در هر بار Cook شدن، یک اسکریپت پایتون را اجرا میکند.
این نود میتواند عملیات زیر را انجام دهد:
ایجاد، حذف یا ویرایش نقاط (Points)، پریمیتیوها (Primitives) و ورتکسها (Vertices)؛
ایجاد ویژگیهای سفارشی یا ویژگیهای داخلی مانند Cd (رنگ)، uv و N (نرمالها)؛
افزودن اشکال هندسی مانند چندضلعیها (Polygons)، منحنیهای Bézier و مشها (Meshes)؛
ترکیب چندین ورودی هندسی با هم.
بهصورت پیشفرض، زمانی که Script SOP ساخته میشود، دارای یک DAT متصل (Docked DAT) است که شامل سه متد پایتون زیر است:
cook()
onPulse()
setupParameters()
متد cook() در هر بار cook شدن Script SOP اجرا میشود.
متد setupParameters() هر زمان که دکمهی Setup Parameters در صفحهی Script فشرده شود اجرا میشود.
متد onPulse() زمانی اجرا میشود که یکی از پارامترهای Pulse سفارشی فشرده شود.
برای نمونهکدها و مثالها میتوان به مسیر زیر در منوی نرمافزار مراجعه کرد:
Help → Python Examples
Help → Operator Snippets
⚠️ توجه:
از آنجا که Script SOP میتواند دادهها را از هر جای شبکه بگیرد، تعیین دقیق اینکه این نود به چه چیزهایی وابسته است (Dependency) دشوار است.
به همین دلیل، هر بار که Script SOP اجرا میشود، لیستی از تمام نودها، پارامترها و اپراتورهایی که به آنها وابسته است ایجاد میکند.
هرگاه هرکدام از این عناصر تغییر کنند، Script SOP مجدداً cook میشود.
منابع مرتبط:
Geometry Detail
Point / Point Class / Point List
Primitive / Prims Class / Polygon / Vertex
SOP / SOP Class
SOP to DAT
Point SOP
Point Groups
Primitive Groups
Attributes
همچنین ببینید:
Script CHOP
Script DAT
Script TOP
⚙️ پارامترها (Parameters – Script Page)
| پارامتر | توضیح |
|---|---|
| Callbacks DAT (callbacks) | مسیر DATی را مشخص میکند که شامل توابع Callback اسکریپت است. (برای شیوه استفاده به کلاس scriptSOP_Class مراجعه کنید). |
| Setup Parameters (setuppars) | فشردن این دکمه باعث اجرای تابع setupParameters() میشود. این تابع معمولاً برای ساخت یا بازسازی پارامترهای سفارشی در پنل اپراتور استفاده میشود. |
🧠 توابع پیشفرض (Default Functions)
هنگامی که Script SOP ساخته میشود، یک DAT به نام پیشفرض script1_callbacks به آن متصل است که شامل توابع زیر است:
توضیح هر تابع:
setupParameters()
برای افزودن پارامترهای سفارشی جدید به پنل اپراتور استفاده میشود (در مثال بالا دو پارامتر شناور جدید به نامValueAوValueBاضافه میکند).onPulse()
زمانی که پارامترهای نوع Pulse (دکمههای قابل کلیک در پارامترها) فعال شوند، اجرا میشود.cook()
در هر بار Cook شدن Script SOP فراخوانی میشود.
معمولاً در این تابع، هندسه ساخته یا ویرایش میشود (در مثال بالا فقط تمام دادهها را پاک میکند).
🔌 ورودیها (Operator Inputs)
| ورودی | توضیح |
|---|---|
| Input 0 | میتواند یک SOP دیگر باشد تا دادهی هندسی ورودی را برای پردازش در اسکریپت دریافت کند. |
📊 کانالهای اطلاعاتی (Info CHOP Channels)
اطلاعات اضافی مربوط به Script SOP را میتوان از طریق Info CHOP مشاهده کرد.
🧮 Common SOP Info Channels
| کانال | توضیح |
|---|---|
| num_points | تعداد نقاط (Points) موجود در این SOP. |
| num_prims | تعداد پریمیتیوها (Primitives) در SOP. |
| num_particles | تعداد ذرات (Particles) در SOP. |
| last_vbo_update_time | مدت زمانی که در یک Thread دیگر صرف بهروزرسانی دادههای هندسی GPU شده است (جزو زمان اصلی فریم حساب نمیشود). |
| last_meta_vbo_update_time | مدت زمان بهروزرسانی دادههای سطحهای متا (مثل متابالها یا نربها) در GPU از دادههای CPU. |
⚙️ Common Operator Info Channels
| کانال | توضیح |
|---|---|
| total_cooks | تعداد دفعاتی که اپراتور از زمان شروع اجرا تا کنون cook شده است. |
| cook_time | مدت زمان آخرین Cook (بر حسب میلیثانیه). |
| cook_frame | شماره فریمی که آخرین Cook در آن اتفاق افتاده (نسبت به تایملاین کامپوننت). |
| cook_abs_frame | شماره فریم آخرین Cook نسبت به زمان مطلق پروژه. |
| cook_start_time / cook_end_time | زمان شروع و پایان Cook در فریم جاری (میلیثانیه). |
| cooked_this_frame | اگر اپراتور در همین فریم cook شده باشد، مقدارش ۱ است. |
| warnings / errors | تعداد هشدارها و خطاهای موجود در این اپراتور. |
📘 جمعبندی
Script SOP ابزاری است برای ساخت کامل هندسه با پایتون.
میتوانی با آن:
از پایه یک مدل بسازی،
دادههای هندسی ورودی را تغییر دهی،
یا ویژگیهای هندسی مثل رنگ، نرمال و UV را کنترل کنی.
در واقع، این نود ترکیبی از قدرت پایتون و انعطافپذیری SOPهاست و برای ساخت الگوهای پارامتریک، هندسههای واکنشی (Reactive) و سیستمهای تولیدی (Procedural Systems) بسیار مفید است.
