🧩 Script SOP

خلاصه (Summary)

Script SOP در هر بار Cook شدن، یک اسکریپت پایتون را اجرا می‌کند.
این نود می‌تواند عملیات زیر را انجام دهد:

  • ایجاد، حذف یا ویرایش نقاط (Points)، پریمی‌تیوها (Primitives) و ورتکس‌ها (Vertices)؛

  • ایجاد ویژگی‌های سفارشی یا ویژگی‌های داخلی مانند Cd (رنگ)، uv و N (نرمال‌ها)؛

  • افزودن اشکال هندسی مانند چندضلعی‌ها (Polygons)، منحنی‌های Bézier و مش‌ها (Meshes)؛

  • ترکیب چندین ورودی هندسی با هم.

به‌صورت پیش‌فرض، زمانی که Script SOP ساخته می‌شود، دارای یک DAT متصل (Docked DAT) است که شامل سه متد پایتون زیر است:

  1. cook()

  2. onPulse()

  3. 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 به آن متصل است که شامل توابع زیر است:

# me اشاره به همین DAT دارد.
# scriptOP اشاره به همان Script SOP دارد که در حال cook شدن است.

# زمانی که دکمه‌ی 'Setup Parameters' در OP فشرده شود، این تابع اجرا می‌شود.
def setupParameters(scriptOP):
scriptOP.appendParFloat('ValueA', page='Custom')
scriptOP.appendParFloat('ValueB', page='Custom')
return

# این تابع هر زمان که یک پارامتر Pulse سفارشی فشرده شود، اجرا می‌شود.
def onPulse(par):
return

# این تابع در هر بار cook شدن Script SOP اجرا می‌شود.
def cook(scriptOP):
scriptOP.clear()
return

توضیح هر تابع:

  • 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) بسیار مفید است.