خلاصه

Copy SOP به شما اجازه می‌دهد از هندسه‌ی سایر SOPها کپی بگیرید و برای هر کپی یک تبدیل (Transformation) اعمال کنید.

همچنین این امکان وجود دارد که هندسه را روی نقاط یک ورودی Template کپی کنید.


پارامترها – صفحه‌ی Copy

  • Source Group (sourcegrp) – تعیین یک زیرمجموعه از پرایمیتیوهای ورودی که باید کپی شوند. (الگوها طبق Pattern Matching قابل استفاده هستند.)

  • Template Group (templategrp) – تعیین یک زیرمجموعه از پرایمیتیوهای Template که باید روی آن‌ها کپی انجام شود.

  • Number of Copies (ncy) – تعداد کپی‌ها را مشخص می‌کند. اگر ورودی Template وجود داشته باشد، تعداد کپی در هر نقطه‌ی Template تعیین می‌شود.

  • Primitives per Point (nprims) – تعیین می‌کند از هر نقطه چه تعداد پرایمیتیو کپی شود.

  • Rotate to Normal (nml) – وقتی ورودی Template مشخص است، هندسه کپی‌شده به نرمال سطح Template جهت‌گیری می‌کند. اگر ویژگی up روی Template باشد، همراه با نرمال، جهت کامل چرخش‌ها را تعریف می‌کند.

  • Transform Cumulative (cum) – اگر فعال باشد، هر تبدیل بر اساس مکان تبدیل قبلی اعمال می‌شود (تبدیل‌های تجمعی).

  • Transform Order (xord) – ترتیب کلی انجام تبدیل‌ها (Scale/Rotate/Translate) را تعیین می‌کند.

  • Rotate Order (rord) – ترتیب داخلی چرخش‌ها را مشخص می‌کند (Rx/Ry/Rz).

  • Translate (t) – انتقال هندسه در محورهای X، Y و Z.

  • Rotate (r) – چرخش هندسه در محورهای X، Y و Z.

  • Scale (s) – تغییر مقیاس در محورهای X، Y و Z.

  • Pivot (p) – نقطه‌ی مرجع برای Transform (محور قرمز در Viewport).

  • Uniform Scale (scale) – مقیاس‌دهی یکنواخت در تمام محورها.

  • Normals Maintain Length (vlength) – طول بردارها (مثل نرمال‌ها) ثابت بماند حتی هنگام Scale.

  • Create Output Groups (newg) – اگر فعال باشد، برای هر کپی یک گروه خروجی ایجاد می‌شود.

  • Copy Groups (copyg) – نام پایه گروه‌های ساخته‌شده را مشخص می‌کند.

  • Look At (lookat) – جهت‌گیری هندسه کپی‌شده به سمت یک شیء مشخص.

  • Up Vector (upvector) – بردار up برای جلوگیری از مشکلات انیمیشن هنگام Look At.


پارامترها – صفحه‌ی Stamp

Stamping یعنی می‌توان پارامترهای هر کپی را به‌طور پویا تغییر داد.

  • Stamp Inputs (stamp) – فعال‌سازی Stamp برای ورودی‌ها.

  • Param (copy0param) – نام متغیر Stamp.

  • Value (copy0value) – مقدار متغیر Stamp.

مقادیر Stamp از طریق متدهای fetchStamp() (در پایتون) یا param() (در tscript) قابل دسترسی هستند.


پارامترها – صفحه‌ی Attributes

این صفحه مشخص می‌کند که ویژگی‌های نقاط Template چگونه روی هندسه‌ی منبع تأثیر می‌گذارند:

  • Set – مقدار ویژگی منبع را بازنویسی می‌کند.

  • Multiply – ویژگی‌ها را در هم ضرب می‌کند.

  • Add – ویژگی‌ها را جمع می‌کند.

  • Sub – ویژگی‌ها را کم می‌کند.

گزینه‌ها برای Point / Primitive / Vertex به‌طور جداگانه در دسترس هستند.


نکات (Tips)

  • می‌توانید از me.copyTotal در پایتون استفاده کنید تا زاویه چرخش برای تعداد مشخصی کپی محاسبه شود. مثلاً:

    360 / me.copyTotal

    این کار باعث می‌شود کپی‌ها به صورت یکنواخت دور یک دایره توزیع شوند.

  • می‌توانید یک Particle SOP را به‌عنوان Template استفاده کنید و هندسه‌ای (مثل یک زنبور) را روی هر ذره کپی کنید → نتیجه: دسته‌ای از زنبورها.

  • می‌توانید مجموعه‌ای از کپی‌ها را دور یک محور بسازید و آن‌ها را Skin کنید تا افکت‌های Lathe/Revolve بسازید.


مثال – ساخت هندسه با Stamp

  1. یک Circle SOP بسازید و نوعش را روی Polygon بگذارید.

  2. تعداد Divisionها را روی:
    fetchStamp("sides", 3)
    تنظیم کنید.

  3. یک Copy SOP اضافه کنید و Number of Copies را روی 5 بگذارید. Translate X را روی 2.5 تنظیم کنید.

  4. در صفحه‌ی Stamp، گزینه Stamp Inputs را فعال کنید.

    • Param 1 = sides

    • Value = me.copyIndex + 3

→ نتیجه: کپی اول مثلث می‌سازد، بعدی مربع، بعدی پنج‌ضلعی و …


ورودی‌های Copy SOP

  • Input 0: هندسه‌ی منبع (Source).

  • Input 1: Template برای کپی‌کردن.


کانال‌های Info CHOP

اطلاعات اضافی Copy SOP از طریق یک Info CHOP در دسترس است.

Common SOP Info Channels

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

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

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

  • last_vbo_update_time – مدت‌زمان آپدیت هندسه روی GPU از CPU.

  • last_meta_vbo_update_time – مدت‌زمان آپدیت هندسه‌ی متا (مثل metaballs یا nurbs) روی GPU.

Common Operator Info Channels

  • 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 شده است یا نه (1/0).

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

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