خلاصه
Basis SOP مجموعهای از عملیات را فراهم میکند که روی فضای پارامتریک منحنیها و سطوح اسپلاین قابل اعمال است.
فضای پارامتریک که به آن «دامنه» (Domain) یک پرایمیتیو NURBS یا Bézier نیز گفته میشود، توسط یک Basis در جهت U و اگر پرایمیتیو یک سطح باشد، توسط یک Basis دیگر در جهت V تعریف میشود. اندازه دامنه توسط مقادیر گرهها (Knots) که Basis را تشکیل میدهند مشخص میشود.
![BasisSOP.gif]
Basis SOP شامل عملیاتهایی است که نسبتها (Ratios) را حفظ میکنند و عملیاتهایی که این نسبتها را حفظ نمیکنند.
اگر بازپارامتردهی Basis نسبت فاصله بین گرهها را تغییر ندهد، شکل یک پرایمیتیو NURBS تغییر نخواهد کرد.
اما اگر نسبتها حفظ نشوند، شکل پرایمیتیو NURBS در ناحیهای که تحت تأثیر گرههای تغییر یافته است دچار تغییر میشود. علاوه بر این، اگر پرایمیتیو یک سطح NURBS یا Bézier باشد، هر پروفایلی (Profile) که ممکن است شامل آن باشد نیز تحت تأثیر قرار خواهد گرفت.
برای اطلاعات بیشتر درباره Basis و Knots نگاه کنید به: Breakpoints, Knots, and Spline Basis در مقالات Primitive و Spline.
پارامترها – صفحه Basis
Group group – گروهی از پرایمیتیوهای اسپلاین (الگوها را میپذیرد، طبق Scripting Guide). انواع غیر اسپلاین نادیده گرفته میشوند.
دو مجموعه صفحه برای هر جهت پارامتریک (U و V) وجود دارد.
در هر مجموعه، عملیات به ترتیب تبها از چپ به راست اعمال میشوند: پارامتردهی، نگاشت (Mapping)، و سپس بالا بردن درجه اسپلاین.
برای غیرفعال کردن همه عملیات یک مجموعه، تیک U یا V بالای آن را خاموش کنید.
مجموعه V فقط برای سطوح اسپلاین معنا دارد و در غیر این صورت نادیده گرفته میشود.
نام کانالها برای هر دو صفحه U و V داده شدهاند.
پارامترها – صفحه U
Edit the U Basis ubasis – فعالسازی ویرایش Basis در جهت U.
پارامتردهی (Parameterization) – uparmtype
انتخاب روش پارامتردهی در U:
Unchanged (nochange) – بدون تغییر Basis.
Uniform (uniform) – توزیع یکنواخت تمام گرهها، در حالی که مبدأ و طول Basis حفظ میشوند. فقط برای اشکال منظم توصیه میشود.
Chord Length (chord) – محاسبه نسبت گرهها بر اساس فاصله بین CVهای متوالی. این متداولترین و مؤثرترین روش است.
Centripetal (centripetal) – مشابه روش Chord Length، توصیه شده برای اشکالی با پیچهای تند.
Manual: Single (manualone) – بارگذاری Basis با گرههایی که در «Knot Sequence» مشخص شدهاند. فقط روی اولین پرایمیتیو اسپلاین ورودی اثر میگذارد.
Manual: Propagated (manualall) – مشابه بالا اما Basis را روی تمام پرایمیتیوهای اسپلاین دیگر نیز کپی میکند. مناسب برای ایجاد سطوح تمیزتر.
Knotslide (slide) – جابجایی خوشههای گره در Basis. (ببینید Knotslide در منوی پارامتردهی).
سایر پارامترها
Knot Sequence uknots – دنباله گرهها برای حالت Manual. مقادیر باید صعودی باشند و تعدادشان دقیقاً با تعداد گرههای Basis مطابقت کند.
توجه: در Bézier نمیتوان گرههای تکراری داشت. در NURBS گرههای تکراری مجازند مادامی که بیش از درجه Basis نشوند. دو گره اول و دو گره آخر در NURBS باید یکسان باشند.
Read Basis uread – خواندن گرههای اصلی Basis.
Range urange – بازهای از دامنه که گرهها در آن جابهجا میشوند.
Bias ubias – جهت و میزان جابهجایی گرهها (۰٫۵ بدون تغییر).
Concatenate uconcat – اتصال Basis پرایمیتیوها به یکدیگر (برای پیوستگی).
Origin uorigin – تعریف مبدأ جدید Basis.
Length ulength – تعریف طول جدید Basis (باید > 0).
Scale uscale – مقیاسدهی Basis از مبدأ. (باید > 0).
Raise U to orderu – بالا بردن درجه (Order) اسپلاین بین ۲ تا ۱۱. شکل پرایمیتیو حفظ میشود.
🔹 نکته تولید: قبل از اعمال تکسچر با Texture SOP، U و/یا V Basis را بین 0 و 1 بازنگاشت کنید تا نگاشت کامل انجام شود.
پارامترها – صفحه V
تقریباً همانند صفحه U، اما برای جهت V.
پارامتردهی (Unchanged, Uniform, Chord Length, Centripetal, Manual Single/Propagated, Knotslide).
Knot Sequence vknots, Read Basis vread, Range vrange, Bias vbias, Concatenate vconcat, Origin vorigin, Length vlength, Scale vscale, Raise V to orderv.
🔹 نکته تولید: برای نگاشت تکسچر در چند سطح، ابتدا V و U Basis را بازنگاشت کنید.
ورودیهای عملگر (Operator Inputs)
Input 0: –
کانالهای Info CHOP
اطلاعات اضافی Basis SOP از طریق Info CHOP قابل دسترسی است.
کانالهای عمومی SOP Info
num_points – تعداد نقاط.
num_prims – تعداد پرایمیتیوها.
num_particles – تعداد ذرات.
last_vbo_update_time – زمان صرفشده در Thread دیگر برای آپدیت دادههای هندسی GPU.
last_meta_vbo_update_time – زمان صرفشده در Thread دیگر برای آپدیت دادههای سطح متا (مثل متابال یا NURBS).
کانالهای عمومی 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 – تعداد خطاها.