خلاصه
Carve SOP با هر نوع سطح یا وجه (Face) کار میکند؛ چه Polygon باشد، چه Bezier و چه NURBS. این نود میتواند یک پرایمیتیو را برش دهد، آن را به چند بخش تقسیم کند یا نقاط و مقاطع عرضی (Cross-sections) از آن استخراج کند.
مثل Project SOP، این نود هم منحنیهای پروفایل ایجاد میکند، اما با این تفاوت که این پروفایلها بهصورت ایزوپارامتریک (۲D) مستقیماً از سطح استخراج میشوند، در حالیکه Project SOP یک منحنی سهبعدی را روی سطح پروجکت میکند.
⚠️ توجه: هنگام استفاده از Carve SOP روی یک سطح Trimmed، نمیتوانید منحنیهای Trim را Fillet یا Join کنید.
پارامترها – صفحه Carve
Group (group): اگر گروههایی در ورودی وجود داشته باشند، با تعیین نام گروه در این فیلد، SOP فقط روی همان گروه عمل میکند. الگوها (Pattern) قابل قبول هستند (طبق Scripting Guide).
First U (firstu): فعال کردن این گزینه امکان تنظیم اولین موقعیت در U را فراهم میکند.
First U Domain (domainu1): موقعیت شروع برش/استخراج را مشخص میکند (مقداری بین ۰ تا ۱).
Second U (secondu): فعالسازی این گزینه امکان تنظیم موقعیت دوم در U را میدهد.
Second U Domain (domainu2): موقعیت پایان برش/استخراج را مشخص میکند (مقداری بین ۰ تا ۱).
First V (firstv): فعالسازی این گزینه امکان تنظیم اولین موقعیت در V را میدهد. (فقط برای سطوح)
First V Domain (domainv1): موقعیت شروع برش/استخراج در V را مشخص میکند (۰ تا ۱).
Second V (secondv): فعالسازی این گزینه امکان تنظیم موقعیت دوم در V را میدهد. (فقط برای سطوح)
Second V Domain (domainv2): موقعیت پایان برش/استخراج در V را مشخص میکند (۰ تا ۱).
پارامترها – صفحه Method
Carve Method (method) ⊞: انتخاب بین دو روش:
Cut: هندسه اصلی را در ناحیه تعیینشده برش میدهد.
Extract: منحنی سهبعدی، نقاط یا پروفایلهای دوبعدی در ناحیه تعیینشده ایجاد میکند.
Keep Inside (keepin): پرایمیتیوهای بین اولین و دومین موقعیت نگهداشته میشوند.
Keep Outside (keepout): پرایمیتیوهای بیرون از بازه مشخص نگهداشته میشوند.
Extract Type (extractop) ⊞: نوع دادهای که استخراج میشود:
Extract 3D Isoparametric Curve(s) (xisoparm): منحنی سهبعدی آزاد که دقیقاً با سطح در موقعیت U یا V مطابقت دارد.
Extract Point(s) (xpoint): فقط برای Mesh و سطوح؛ بهجای منحنی، نقطه در هر موقعیت U/V ایجاد میکند.
Extract 2D Isoparametric Profile(s) (xprofile): منحنی دوبعدی که در موقعیت U/V از سطح استخراج میشود.
Keep Original (keeporiginal): اگر فعال باشد، پرایمیتیو اصلی حذف نمیشود.
Location (location) ⊞: نحوه تعریف مرز برش/استخراج.
Divisions (div): برش دقیقاً در مکانهای مشخص شده انجام میشود، اما میتوان تقسیمات اضافی در U/V تعریف کرد.
Breakpoints (break): برش یا استخراج در Breakpointها برای منحنیها/سطوح، رأسها برای پلیگانها و ایزوپارمها برای Meshها.
U Divisions (divsu): تعداد برشها/استخراجها بین اولین و دومین U.
V Divisions (divsv): تعداد برشها/استخراجها بین اولین و دومین V.
Cut at All Internal U Breakpoints (allubreakpoints): اگر Location = Breakpoints باشد، پرایمیتیو در تمام Breakpointهای داخلی U به بخشهای جدا تقسیم میشود.
Cut at All Internal V Breakpoints (allvbreakpoints): مشابه بالا اما برای V.
مثالها
باز کردن یک پرایمیتیو بسته
یک سطح بسته را میتوان در هر موقعیتی به سطح باز تبدیل کرد، با فعال کردن فقط First U و غیرفعال گذاشتن Second U. همین کار برای Face هم ممکن است.Dice کردن یک سطح یا Face
روش: Cut
First U = 0، Second U = 1
First V = 0، Second V = 1
تعداد تقسیمها (Divisions) = ۳ یا بیشتر
نتیجه: سطح به حداقل ۳ بخش تقسیم میشود که میتوان با Primitive SOP آنها را جدا کرد (Explode).
برش یک سوراخ در سطح
روش: Cut
First U = 0.33، Second U = 0.66
First V = 0.33، Second V = 0.66
Divisions برای U و V = 2
Keep Inside = خاموش
Keep Outside = روشن
نتیجه: یک ناحیه مستطیلی از وسط سطح بریده میشود.
انیمیت کردن یک نقطه روی سطح
روش: Extract
First U = x، Second U = غیرفعال
First V = y، Second V = غیرفعال
Extract Point = روشن
Keep Primitives = اختیاری
نتیجه: یک نقطه در هر موقعیت (x,y) روی سطح ایجاد میشود (۰ ≤ x,y ≤ ۱).
ورودیهای اپراتور
Input 0: هندسه ورودی برای برش/استخراج
Info CHOP Channels
اطلاعات اضافی Carve SOP از طریق Info CHOP قابل دسترسی است.
کانالهای عمومی SOP Info
num_points→ تعداد نقاطnum_prims→ تعداد پرایمیتیوهاnum_particles→ تعداد ذراتlast_vbo_update_time→ زمان آپدیت دادههای هندسه روی GPUlast_meta_vbo_update_time→ زمان آپدیت دادههای متاسطح روی GPU
کانالهای عمومی Operator Info
total_cooks→ تعداد دفعات Cook شدنcook_time→ مدت زمان Cook آخر (ms)cook_frame→ شماره فریم Cook آخر نسبت به تایملاین کامپوننتcook_abs_frame→ شماره فریم Cook آخر نسبت به زمان مطلقcook_start_time→ زمان شروع Cook (ms)cook_end_time→ زمان پایان Cook (ms)cooked_this_frame→ مقدار ۱ اگر در این فریم Cook شده باشدwarnings→ تعداد هشدارهاerrors→ تعداد خطاها
