خلاصه

Join SOP یک دنباله از سطوح یا وجوه (faces) را به یک پرایمیتیو واحد متصل می‌کند که ویژگی‌های آن‌ها را به ارث می‌برد.

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

  • اما ترکیب همزمان وجه و سطح مجاز نیست.

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

  • انواع اسپلاین با ترتیب‌ها و پارامترسازی‌های مختلف ورودی‌های معتبر هستند.

  • در صورت نیاز، Join SOP پرایمیتیوهای ساده‌تر مثل چندضلعی‌ها (polygons) را به بزیه (Bezier) یا NURBS تبدیل می‌کند.

اتصال (Join) با Fillet SOP یا Stitch SOP فرق دارد:

  • Join چند پرایمیتیو را گرفته و بعد از تغییر احتمالی در انتهای آن‌ها، آن‌ها را به یک پرایمیتیو تبدیل می‌کند.

  • Fillet بین هر جفت ورودی یک پرایمیتیو جدید ایجاد می‌کند و به اشکال اصلی دست نمی‌زند.

  • Stitch اشکال اصلی را تغییر می‌دهد اما تعداد پرایمیتیوهای حاصل را عوض نمی‌کند.

PythonIcon.png joinSOP_Class


فهرست مطالب

  1. خلاصه

  2. پارامترها – صفحه

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

  4. کانال‌های Info CHOP
     4.1. کانال‌های مشترک Info برای SOP
     4.2. کانال‌های مشترک Info برای اپراتورها


پارامترها – صفحه (Parameters – Page)

  • Group group – اگر گروه‌های ورودی وجود داشته باشند، مشخص کردن نام یک گروه باعث می‌شود این SOP فقط روی همان گروه اعمال شود. الگوها (patterns) طبق بخش Pattern Matching پذیرفته می‌شوند.

  • Blend blend – نحوه اتصال پرایمیتیوها را تعیین می‌کند.

    • در حالت Blend، انتهاها (Ends) جابه‌جا شده و به یک نقطه، ردیف یا ستون مشترک تبدیل می‌شوند.

    • میزان تغییر با Tolerance کنترل می‌شود.

    • اگر Blend خاموش باشد، اشکال اصلی تغییر نمی‌کنند و به‌جای آن، انتهاها با یک فیله (fillet) کمانی به هم وصل می‌شوند.

    • در هر دو حالت، نتیجه یک پرایمیتیو واحد است.

  • Tolerance tolerance – معنای تولرانس بسته به نوع Join متفاوت است:

    • برای Blend: تولرانس پایین → تغییر کمتر شکل.

    • اگر تولرانس < 1 باشد، یک نقطه، گره (knot)، ردیف یا ستون جدید بین دو انتهای نزدیک اضافه می‌شود.

    • تولرانس 0 یعنی اشکال ورودی تغییر نمی‌کنند: وجوه با خط مستقیم و سطوح با یک پچ خطی مسطح وصل می‌شوند.

    • برای حالت غیر Blend: تولرانس اندازه و گردی فیله را مشخص می‌کند. تولرانس 0 → فیله کوتاه و تخت، تولرانس 1 → فیله نوک‌تیز بدون برخورد به خود.

  • Bias bias – فقط روی حالت Blend اثر دارد. موقعیت نقطه/ردیف/ستون مشترک را بین دو انتها تغییر می‌دهد.

    • Bias = 0 → مشترک با انتهای پرایمیتیو دوم.

    • Bias = 1 → مشترک با انتهای پرایمیتیو اول.

    • وقتی Tolerance = 0 باشد، Bias بی‌اثر است.

  • Multiplicity knotmult – تعداد گره‌های درج‌شده در نقطه اتصال را کنترل می‌کند.

    • وقتی فعال باشد، اتصال نوک‌تیز می‌شود.

    • در حالت Blend خاموش هم روی شکل و سفتی فیله اثر می‌گذارد.

    • Multiplicity برای چندضلعی‌ها (polygons) و مش‌ها (meshes) بی‌اثر است.

  • Connect Closest Ends proximity – به‌طور پیش‌فرض دم پرایمیتیو اول به سر پرایمیتیو بعدی وصل می‌شود. اگر فعال باشد، نزدیک‌ترین انتهاها انتخاب می‌شوند. برای سطوح، این تست در جهت U یا V (طبق پارامتر Direction) انجام می‌شود.

  • Direction dir ⊞ – جهت پارامتری اتصال (U یا V) را تعیین می‌کند (فقط برای سطوح).

    • U = ستون‌ها

    • V = ردیف‌ها

    • مثال: اتصال دو سطح در U → سطح حاصل ستون‌های بیشتری خواهد داشت.

  • Join joinop ⊞ – امکان اتصال زیرگروه‌ها یا هر n پرایمیتیو به‌صورت چرخه‌ای.

    • مثال: اگر ۶ پرایمیتیو شماره‌گذاری 0–5 و N=2 داشته باشیم:

      • Groups → 0-1 2-3 4-5

      • Skipping → 0-2-4 و 1-3-5

  • N inc – تعداد پرایمیتیوهایی که گروه‌بندی یا پرش داده می‌شوند.

  • Wrap Last to First loop – اگر فعال باشد، ابتدای اولین پرایمیتیو به انتهای آخرین پرایمیتیو وصل شده و یک سطح یا وجه بسته تشکیل می‌شود.

  • Keep Primitives prim – اگر غیرفعال باشد، پرایمیتیوهای ورودی بعد از اتصال حذف می‌شوند. اگر فعال باشد، حفظ می‌شوند.


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

  • Input 0 – هندسه ورودی.


کانال‌های Info CHOP

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

کانال‌های مشترک Info برای SOP

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

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

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

  • last_vbo_update_time – مدت‌زمان صرف‌شده در یک ترد دیگر برای به‌روزرسانی داده‌های هندسی روی GPU از داده‌های CPU.

  • last_meta_vbo_update_time – مدت‌زمان صرف‌شده در یک ترد دیگر برای به‌روزرسانی داده‌های متاسطح (مثل متابال‌ها یا NURBS) روی GPU.

کانال‌های مشترک Info برای اپراتورها

  • total_cooks – تعداد دفعات اجرای اپراتور.

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

  • cook_frame – شماره فریم آخرین اجرا (نسبت به تایم‌لاین کامپوننت).

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

  • cook_start_time – زمان شروع آخرین اجرا (میلی‌ثانیه).

  • cook_end_time – زمان پایان آخرین اجرا (میلی‌ثانیه).

  • cooked_this_frame – اگر اپراتور در همین فریم اجرا شده باشد مقدار ۱ است.

  • warnings – تعداد هشدارها (اگر وجود داشته باشد).

  • errors – تعداد خطاها (اگر وجود داشته باشد).