خلاصه (Summary)

Skin SOP از مجموعه‌ای از وجوه (Faces) یا سطوح (Surfaces) استفاده می‌کند و بر روی آن‌ها یک سطح پیوسته (Skin Surface) می‌سازد.

اگر تنها یک ورودی داده شود، این نود از آن مجموعه، سطحی پیوسته می‌سازد.
اما اگر دو یا چند سطح به آن داده شود، چهار سطح مجزا ساخته می‌شود — یکی برای هر مجموعه از منحنی‌های مرزی (Boundary Curves).

تمام انواع چهره‌ها (Faces) و سطوح (Surfaces) پشتیبانی می‌شوند، به شرطی که در ورودی‌ها فقط از یک نوع (فقط چهره یا فقط سطح) استفاده شود.
همچنین می‌توان چهره‌هایی از انواع مختلف را با هم ترکیب کرد و یک سطح مشترک از آن‌ها ساخت.

مثلاً:
می‌توان یک منحنی باز NURBS از نوع مکعبی را با یک چندضلعی (Polygon) و یک منحنی بسته Bézier از مرتبه پنجم (Quintic) در یک سطح ترکیب کرد — حتی اگر هرکدام تعداد متفاوتی از نقاط کنترل داشته باشند.

به‌طور مشابه، Skin SOP می‌تواند منحنی‌های مرزی سطوح مختلف (از انواع متفاوت، تعداد ردیف‌ها و ستون‌های مختلف) را نیز با یکدیگر ترکیب کند.


عملکرد کلی

  • اگر تنها یک ورودی داشته باشید → عمل Linear Skinning انجام می‌شود، که از مقاطع (Cross-sections) سطحی بین آن‌ها می‌سازد.

  • اگر دو ورودی داشته باشید → عمل Bilinear Skinning انجام می‌شود؛ یعنی بین چهره‌های ورودی اول (در جهت U) و چهره‌های ورودی دوم (در جهت V) سطح مشترک ساخته می‌شود.

در نتیجه، بسته به نوع ورودی‌ها، می‌توان سطوحی به شکل‌های زیر ساخت:

  • سطوح مثلثی، مربعی یا چندمرزی (Multi-boundary)

  • سطوح مارپیچ یا “Swept”

  • و حتی سطوح چند ریل (N-rails)

در مواردی که نیاز به کنترل دقیق‌تر در پیوستگی یا تانژانت (Tangency) سطح دارید، بهتر است از Bridge SOP استفاده کنید.

💡 نکته:
اگر سطح در جهت اشتباهی Skin می‌شود، کافی است پیش از Skin SOP یک Sort SOP اضافه کنید و گزینه‌ی Sort by Normals را فعال کنید تا ترتیب نقاط اصلاح شود.


🧱 انواع سطوح قابل ساخت (Types of Surfaces)

1. Single Boundary Surface

  • یک چهره‌ی منفرد (باز یا بسته) به سطحی تبدیل می‌شود که دقیقاً مرزهای همان چهره را دنبال می‌کند.

  • در واقع، این حالت یک سطح داخلی (Filled Surface) ایجاد می‌کند.

  • نوع سطح نهایی شبیه نوع چهره‌ی ورودی خواهد بود.
    (مثلاً منحنی NURBS تبدیل به سطح NURBS می‌شود.)

اگر منحنی بسیار مقعر (Concave) باشد، ممکن است نتیجه رضایت‌بخش نباشد.


2. Patch

  • دو چهره مرزهای سطح را تعریف می‌کنند.

  • فلش‌های جهت‌دار روی چهره‌ها نشان‌دهنده‌ی جهت پارامتری (Parametric Direction) هستند و باید با هم هماهنگ باشند.

  • در غیر این صورت، سطح پیچ‌خورده یا تاب‌خورده ایجاد می‌شود.

  • نوع سطح برابر با پیچیده‌ترین نوع بین دو چهره است.
    (مثلاً ترکیب Polygon با NURBS → نتیجه NURBS خواهد بود.)


3. Linear Ruled / Skinned Surface

  • وقتی دو یا چند چهره به‌صورت خطی به هم متصل شوند.

  • جهت پارامتری تمام چهره‌ها باید یکسان باشد تا تاب یا چرخش ایجاد نشود.

  • نوع سطح همان پیچیده‌ترین نوع در بین چهره‌هاست (Polygon + Bézier + NURBS → NURBS).

  • اگر گزینه‌ی Preserve Shape روشن باشد، سطح دقیقاً از مقاطع عبور می‌کند.

  • اگر خاموش باشد، فقط از نقاط کنترل مشترک برای ساخت سطح استفاده می‌شود (سریع‌تر ولی کم‌دقت‌تر).


4. Swept Surface

  • به دو ورودی نیاز دارد:

    • ورودی اول → چهره در جهت U

    • ورودی دوم → چهره‌ای که در جهت V جاروب (Sweep) می‌شود.

  • اگر نقاط انتهایی دو چهره باهم منطبق باشند، مرزهای سطح دقیقاً با چهره‌ها هماهنگ خواهند بود.

  • نوع سطح مطابق پیچیده‌ترین نوع بین دو چهره خواهد بود.


5. Triangular Surface

  • به دو ورودی نیاز دارد:

    • یکی شامل دو چهره، دیگری شامل یک چهره.

  • این سه چهره، ناحیه‌ای مثلثی ایجاد می‌کنند که با یک سطح پر می‌شود.

  • نوع سطح مشابه پیچیده‌ترین نوع در بین این سه چهره است (مثلاً Bézier و NURBS → NURBS).


6. Square Surface

  • چهار چهره مرزهای سطح را تشکیل می‌دهند.

  • دو چهره از ورودی اول (U) با دو چهره از ورودی دوم (V) ترکیب می‌شوند.

  • نقاط انتهایی می‌توانند منطبق باشند یا نه.

  • نوع سطح مطابق پیچیده‌ترین نوع بین چهره‌هاست (Polygon و NURBS → NURBS).


7. M-Rails Surface

  • ورودی اول شامل ریل‌ها (Rails) است،
    ورودی دوم شامل مقطع (Cross-section).

  • مقطع در امتداد ریل‌ها جاروب می‌شود و سطح نهایی ساخته می‌شود.

  • تمام جهت‌های پارامتری باید هم‌جهت باشند.

  • نوع سطح = پیچیده‌ترین نوع بین ریل‌ها و مقطع.


8. Multiple-Boundary Surface

  • حالتی پیشرفته‌تر از Square Surface است.

  • در این حالت، چندین مقطع داخلی (Interior Cross-sections) در هر دو جهت U و V تعریف می‌شود.

  • سطح نهایی از تمام مرزها و مقاطع داخلی عبور می‌کند.

  • بهترین نتیجه زمانی حاصل می‌شود که چهره‌ها با یکدیگر تلاقی (Intersect) داشته باشند.

  • نوع سطح = پیچیده‌ترین نوع بین تمام چهره‌ها.


⚙️ پارامترها (Parameters – Page)

پارامترتوضیح
U Cross Sections (uprims)مجموعه‌ای از چهره‌ها یا سطوح ورودی اول را مشخص می‌کند که در جهت U استفاده می‌شوند. می‌توان از گروه‌های مختلف انتخاب کرد.
V Cross Sections (vprims)مجموعه‌ای از چهره‌ها برای جهت V را مشخص می‌کند. اگر فقط یک ورودی وجود داشته باشد، از همان استفاده می‌شود.
Connectivity (surftype)نوع ساختار خروجی سطح:
– Rows (خطوط افقی)
– Columns (خطوط عمودی)
– Rows and Columns (هر دو)
– Triangles (مثلثی)
– Quadrilaterals (چهارضلعی – پیش‌فرض)
– Alternating Triangles (مثلث‌های متناوب)
Preserve Shape (keepshape)اگر فعال باشد، سطح دقیقاً از تمام مقاطع عبور می‌کند. اگر غیرفعال باشد، تنها از نقاط کنترل مشترک استفاده می‌کند (سریع‌تر، اما کم‌دقت‌تر). در حالت Bilinear Skin غیرفعال می‌شود.
V Wrap (closev)تعیین می‌کند که آیا سطح در جهت V بسته (wrap) شود یا نه.
گزینه‌ها: Off (باز)، On (بسته)، یا Inherit (از مقاطع ورودی).
Use V Order (force)فعال‌سازی کنترل دستی ترتیب (Order) در جهت V.
V Order (orderv)مرتبه‌ی ریاضی سطح در جهت V را مشخص می‌کند (در سطوح NURBS یا Bézier).
Skin (skinops)روش گروه‌بندی یا پرش در ساخت سطوح از بین primitiveها:
– All Primitives → همه را با هم.
– Groups of N Primitives → گروهی از n تا.
– Skip Every Nth → هر n‌تای یکی را رد کن.
N (inc)مقدار N برای گروه‌بندی یا پرش.
Keep Primitives (prim)اگر فعال باشد، چهره‌های ورودی حفظ می‌شوند؛ در غیر این صورت حذف می‌شوند.
Output Polygons (polys)اگر فعال باشد، خروجی نهایی به Polygon تبدیل می‌شود، حتی اگر نوع سطح Mesh باشد.

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

ورودیتوضیح
Input 0چهره‌ها یا سطوح پایه (U).
Input 1چهره‌ها یا سطوح دوم (V) برای Bilinear Skinning.

📊 کانال‌های اطلاعاتی (Info CHOP Channels)

کانالتوضیح
num_pointsتعداد نقاط در SOP.
num_primsتعداد primitives.
num_particlesتعداد ذرات.
last_vbo_update_timeزمان صرف‌شده برای به‌روزرسانی داده‌های GPU (در thread دیگر).
last_meta_vbo_update_timeزمان به‌روزرسانی داده‌های متا‌سطوح روی GPU.
total_cooks / cook_timeدفعات و مدت زمان Cook.
warnings / errorsهشدارها و خطاهای اپراتور.

🎨 جمع‌بندی

ویژگیتوضیح
هدفساخت سطح پیوسته بین چند چهره یا سطح
حالت‌هاLinear Skin، Bilinear Skin، Sweep، M-rails، Multi-boundary
کنترل دقتPreserve Shape و V Order
نوع خروجیبسته به ورودی (Polygon، Bézier، NURBS)
کاربردهامدل‌سازی ارگانیک، اتصال سطوح، ساخت فرم‌های نرم و پیوسته، پر کردن بین منحنی‌ها