خلاصه (Summary)

Primitive SOP مشابه Point SOP است، با این تفاوت که روی ویژگی‌های پرایمیتیو کار می‌کند. این عملگر می‌تواند موقعیت، اندازه، جهت‌گیری، رنگ، آلفا، و ویژگی‌های خاص پرایمیتیو (مثل برعکس کردن نرمال‌های پرایمیتیو) را تغییر دهد. همچنین می‌توان با آن ویژگی‌های سفارشی پرایمیتیو ایجاد کرد.

با این SOP می‌توان تبدیل‌های آفین پارامتری روی پروفایل‌ها انجام داد. همچنین می‌توان پروفایل‌ها را باز، بسته، معکوس یا چرخه‌ای کرد.

نکته: هنگام اعمال تبدیل‌ها روی پروفایل، فقط می‌توان حول محور Z چرخاند، چون پروفایل یک منحنی تخت در حوزه سطح است و چرخش حول X یا Y معنایی ندارد.


تفاوت تبدیل پرایمیتیوها و پروفایل‌ها

  • یک سطح Bézier یک پرایمیتیو است، همان‌طور که یک سطح NURBS یک پرایمیتیو است.

  • اما یک مش چندضلعی می‌تواند صدها پرایمیتیو داشته باشد. بنابراین باید با دقت عمل کرد.

  • پروفایل‌ها مثل پرایمیتیوها می‌توانند جابجا، چرخانده و مقیاس‌دهی شوند، اما مؤلفه Z در آنها نادیده گرفته می‌شود (X و Y به عنوان U و V تفسیر می‌شوند).


مثال – نگاشت بافت روی داخل یک کره

به‌طور پیش‌فرض، وقتی بافت روی کره اعمال می‌شود، روی سطح بیرونی آن قرار می‌گیرد چون نرمال‌های U رو به بیرون هستند.
برای نگاشت بافت به داخل کره، کافی است کره را از یک Primitive SOP عبور دهید و گزینه Reverse U را در بخش Face/Hull > Vertex فعال کنید.


پارامترها (Parameters)

🔹 Primitive Page

  • Source Group (group): گروه ورودی که روی آن عمل می‌شود. می‌توان پروفایل‌های خاصی از داخل گروه انتخاب کرد (مثال: *.3 پروفایل چهارم همه سطوح اسپیلاین را انتخاب می‌کند).

  • Template Group (templategrp): زیرمجموعه‌ای از نقاط الگو برای تبدیل.


🔹 Transform Page

  • Do Transformation (doxform): فعال‌سازی تبدیل‌ها.

  • Rotate to Template (dorot):

    • Off → بدون چرخش.

    • On → پرایمیتیو طوری می‌چرخد که نرمالش در جهت نرمال الگو قرار گیرد.

    • Match Normals → نرمال واقعی پرایمیتیو با نرمال الگو هماهنگ می‌شود.

  • Transform Order (xord): ترتیب اعمال مقیاس/چرخش/جابجایی.

  • Rotate Order (rord): ترتیب چرخش‌ها (xyz, xzy, yxz, yzx, zxy, zyx).

  • Translate (t): جابجایی در X, Y, Z (پروفایل فقط tx و ty).

  • Rotate (r): چرخش حول X, Y, Z (پروفایل فقط rz).

  • Scale (s): مقیاس‌دهی (پروفایل فقط sx, sy).

  • Pivot (p): نقطه محوری تبدیل‌ها (پروفایل فقط px, py).

  • Lookat Object (lookat): شیئی که پرایمیتیو باید به سمت آن نگاه کند. (مثال: اسپریت‌ها همیشه به دوربین نگاه کنند).

  • Up-Vector (upvector): جهت‌گیری نسبت به محور X, Y, Z.


🔹 Attributes Page

  • Color (doclr): نگه‌داشتن، افزودن یا حذف رنگ.

  • Alpha (alpha): مقدار آلفا.

  • Crease (docrease): نگه‌داشتن، افزودن یا حذف وزن Crease.

  • Crease Weight (crease): وزن Crease برای لبه‌های سطح subdivision.

  • Custom Attribute (attr): ساخت ویژگی سفارشی (float, vec2, vec3, vec4).


🔹 Face/Hull Page

  • Preserve Shape U/V (pshapeu / pshapev): نگهداری شکل هنگام بستن یا کلمپ کردن.

  • Close U/V (closeu / closev): باز، بسته صاف، بسته گرد، یا بازکردن (Unroll).

  • Clamp U/V (clampu / clampv): کلمپ یا آزاد کردن در U/V.

  • Vertex (vtxsort): تغییر ترتیب ورتکس‌ها (بدون تغییر، معکوس، جابجایی، Swap U/V، شیفت).

  • Flip Face (flipfacing): معکوس کردن جهت سطح.


🔹 Meta Page

  • Meta-Surface Weight (metaweight): فعال‌سازی وزن‌دهی متاسطح.

  • Weight (doweight): مقدار وزن متاسطح.


🔹 Particles Page

  • Particle Render Type (doprender): فعال‌سازی نوع رندر ذرات.

  • Particle Type (prtype):

    • Lines → هر ذره به صورت یک خط دوبخشی براساس سرعت.

    • Point Sprites → هر ذره یک مربع روبه‌دوربین (برای Point Sprite MAT).


ورودی‌ها (Operator Inputs)

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

  • Input 1: الگو (Template) برای تبدیل.


کانال‌های Info (Info CHOP Channels)

🔹 Common SOP Info Channels

  • num_points → تعداد نقاط.

  • num_prims → تعداد پرایمیتیوها.

  • num_particles → تعداد ذرات.

  • last_vbo_update_time → زمان آپدیت داده‌های GPU.

  • last_meta_vbo_update_time → زمان آپدیت داده‌های متاسطح روی GPU.

🔹 Common Operator Info Channels

  • total_cooks → تعداد دفعات Cook.

  • cook_time → زمان آخرین Cook (ms).

  • cook_frame → شماره فریم Cook.

  • cook_abs_frame → شماره فریم Cook (مطلق).

  • cook_start_time → زمان شروع Cook.

  • cook_end_time → زمان پایان Cook.

  • cooked_this_frame → آیا در همین فریم Cook شده.

  • warnings → تعداد هشدارها.

  • errors → تعداد خطاها.