Trim SOP

پرش به ناوبری | پرش به جستجو

خلاصه (Summary)

Trim SOP بخش‌هایی از یک سطح اسپلاین (Spline Surface) را برش می‌دهد یا برش‌های قبلی را بازمی‌گرداند (Uncut).
وقتی بخشی از سطح Trim می‌شود، آن قسمت واقعاً حذف نمی‌شود؛ بلکه فقط نامرئی می‌شود.
به همین دلیل، شما همچنان می‌توانید سطح را (مثلاً با جابه‌جا کردن Pointها) ویرایش کنید و این تغییرات روی بخش قابل‌نمایش سطح نیز اثر می‌گذارد.

سطح می‌تواند با تعریف پروفایل‌های باز یا بسته به‌عنوان نواحی داخل یا خارج Trim شود.
پروفایل‌ها الزامی نیست داخل دامنه‌ی سطح (فضای UV) باشند و حتی می‌توانند تو در تو (Nested) باشند.


رفتار پروفایل‌های باز (Open Profiles)

پروفایل‌های باز به شکل زیر پردازش می‌شوند:

  • اگر هر دو انتهای پروفایل داخل سطح باشند، دو سر پروفایل به هم متصل می‌شوند

  • اگر انتهای پروفایل خارج از دامنه‌ی سطحی باشد که روی آن Project شده، آن قسمت از سطح به‌نظر می‌رسد که بریده شده است


معمولاً بعد از یک Project SOP به یکی از SOPهای زیر نیاز دارید:

  • Trim SOP → برای ایجاد سوراخ در سطح Project شده

  • Bridge SOP → برای Skin کردن یک پروفایل به پروفایل دیگر

  • Profile SOP → برای استخراج منحنی روی سطح یا Remap کردن موقعیت آن


روش انتخاب – قانون Winding (Selection Method – Winding Rule)

روش انتخابی که برای مشخص‌کردن Loopهای Trim هم‌پوشان استفاده می‌شود، Winding Rule است.
در این روش، فرمان‌های هم‌پوشان به‌جای خنثی‌کردن یکدیگر، روی هم اعمال می‌شوند.

نکته:
از آنجا که فقط سطوحی که شامل Profile Curve هستند قابل Trim شدن‌اند، همیشه باید در زنجیره‌ی قبل از Trim SOP از Project SOP یا Carve SOP استفاده کنید.


فهرست مطالب (Contents)

  1. خلاصه
     1.1 روش انتخاب – قانون Winding

  2. پارامترها – Page

  3. مثال

  4. ورودی‌های اپراتور

  5. کانال‌های Info CHOP
     5.1 کانال‌های اطلاعات عمومی SOP
     5.2 کانال‌های اطلاعات عمومی اپراتور


پارامترها – Page

Group (group)

این فیلد امکان تعیین گروهی را که می‌خواهید Trim شود فراهم می‌کند.
می‌توانید گروه را از منوی Pop-up انتخاب کنید یا یک بازه از Pointها و Primitiveها مشخص کنید.

همچنین می‌توانید پروفایل‌ها را با استفاده از Profile Pattern مشخص کنید
(مثلاً *.3 یعنی چهارمین پروفایل در تمام سطوح اسپلاین).


Operation Type (optype)

نوع عملیات Trim قابل‌استفاده را مشخص می‌کند.


Process Profiles Individually (individual)

اگر این گزینه خاموش باشد:

  • تمام Loopهای Trim در گروه (یا تمام Loopهای روی سطح در صورت عدم تعیین گروه) با هم در نظر گرفته می‌شوند تا یک ناحیه تشکیل دهند

  • اولین ناحیه‌ای که پیدا شود گزارش می‌شود

در این حالت:

  • اگر بیش از یک Loop بسته بتوان با اتصال خطوط تشکیل داد، تضمینی نیست که ناحیه Trim شود

  • اگر یک Loop بسته در میان Loopها وجود داشته باشد، فقط همان Loop استفاده می‌شود

اگر Loopها یک Loop بسته کامل نسازند:

  • SOP تلاش می‌کند با استفاده از مرز سطح (Boundary) یک ناحیه تشکیل دهد

  • اگر مجموعاً دو تقاطع با مرز وجود داشته باشد، Loop از طریق مرز کامل می‌شود

مثال:
با Carve SOP چهار پروفایل استخراج کنید (دو تا در U و دو تا در V).
آن‌ها را به Trim SOP وصل کنید و این گزینه را خاموش کنید.
این چهار پروفایل یک ناحیه برای Trim تعریف می‌کنند، با اینکه:

  • نقاط انتهایی به هم نمی‌رسند

  • پیوستگی پارامتری ندارند

  • به ترتیب درست ساخته نشده‌اند

با این حال، Trim SOP قادر است سوراخ را تشخیص دهد.


Build Outer Trim-Loop Explicitly (bigloop)

این گزینه مشخص می‌کند که یک Trim Loop خارجی به‌صورت صریح ساخته شود.
این گزینه زمانی مفید است که:

  • بیش از یک پروفایل روی سطح دارید

  • چند عملیات Trim پشت‌سرهم با Keep Inside و Keep Outside انجام می‌دهید

نکته:
اولین باری که روی سطح سوراخ ایجاد می‌کنید، باید Loop خارجی ساخته شود؛
اما اگر فقط داخل سوراخ را نگه می‌دارید و بقیه را حذف می‌کنید، نیازی نیست.

به‌صورت پیش‌فرض، Loop خارجی (که کل مرز دامنه را دور می‌زند) به‌طور خودکار ساخته می‌شود.
اما اگر ابتدا Keep Inside و بعد Keep Outside انجام دهید و ناحیه‌ی دوم داخل ناحیه‌ی حفظ‌شده نباشد، ممکن است به Loop خارجی نیاز پیدا کنید.
در این مواقع این پارامتر کاربرد دارد.


Trimming Tolerance (trimtol)

مشخص می‌کند دو منحنی Trim یا منحنی و لبه‌ی Patch چقدر باید به هم نزدیک باشند تا به‌عنوان نقطه‌ی تقاطع در نظر گرفته شوند.


Altitude (altitude)

ارتفاع Trim را تعیین می‌کند.
متغیر $ALTITUDE برابر با ارتفاع فعلی سطح است.
این مقدار مرز بین ناحیه‌ی Trim شده و Trim نشده‌ی سطح را مشخص می‌کند.


مثال (Example)

در مثال زیر:

  • دو دایره‌ی NURBS با Project SOP روی یک Grid NURBS Project شده‌اند

  • سپس دو Trim SOP پشت‌سرهم اضافه شده‌اند

تنظیمات:

  • Trim SOP اول روی Keep Inside

  • Trim SOP دوم با نوع عملیات متفاوت (طبق تصویر)

نتیجه‌ی نمایش‌داده‌شده، نمای Gouraud Shaded از هندسه‌ی نهایی است.


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

Input 0:


کانال‌های Info CHOP

اطلاعات تکمیلی مربوط به Trim SOP از طریق Info CHOP قابل دسترسی است.


کانال‌های اطلاعات عمومی SOP

  • num_points – تعداد Pointها

  • num_prims – تعداد Primitiveها

  • num_particles – تعداد Particleها

  • last_vbo_update_time – زمان به‌روزرسانی داده‌های هندسه روی GPU

  • last_meta_vbo_update_time – زمان به‌روزرسانی هندسه‌های Meta (مثل Metaball یا NURBS)


کانال‌های اطلاعات عمومی اپراتور

  • total_cooks – تعداد دفعات Cook شدن اپراتور

  • cook_time – مدت زمان آخرین Cook (میلی‌ثانیه)

  • cook_frame – شماره فریم آخرین Cook نسبت به تایم‌لاین

  • cook_abs_frame – شماره فریم آخرین Cook نسبت به زمان مطلق

  • cook_start_time – زمان شروع Cook

  • cook_end_time – زمان پایان Cook

  • cooked_this_frame – اگر در این فریم Cook شده باشد مقدار ۱

  • warnings – تعداد هشدارها

  • errors – تعداد خطاها