Vertex SOP

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

خلاصه

Vertex SOP به شما اجازه می‌دهد ویژگی‌ها (Attributes) را در سطح ورتکس (Vertex) و نه در سطح پوینت (Point) ویرایش یا ایجاد کنید. از این نظر، عملکردی مشابه Point SOP دارد.

این SOP از دو ورودی پشتیبانی می‌کند و به‌صورت پیش‌فرض، ورودی اول را به‌عنوان منبع اصلی به ارث می‌برد. اگر ورودی دوم تعداد پرایمیتیوهای کمتری نسبت به ورودی اول داشته باشد، SOP به‌صورت چرخشی (Cycle) بین پرایمیتیوها حرکت کرده و ورتکس‌ها را با هم تطبیق می‌دهد. اگر پرایمیتیوی در ورودی اول تعداد ورتکس بیشتری نسبت به پرایمیتیوی متناظر در ورودی دوم داشته باشد، ورتکس‌های اضافی نادیده گرفته می‌شوند.

در حال حاضر، سه نوع ویژگی ورتکسی پشتیبانی می‌شود:

  • رنگ پخشی (Diffuse Color)

  • آلفا (Alpha)

  • مختصات بافت (Texture Coordinates)

وقتی یک Attribute تعریف می‌شود، فقط می‌تواند یا روی پوینت‌ها باشد یا روی ورتکس‌ها، و نه هر دو به‌طور هم‌زمان. بنابراین اگر هندسه‌ی ورودی دارای Attribute رنگ پخشی در سطح پوینت باشد و شما در Vertex SOP رنگ پخشی اضافه کنید، آن Attribute به‌صورت خودکار به Attribute ورتکسی ارتقا (Elevate) داده می‌شود.

این SOP تمام ورتکس‌های تمام پرایمیتیوها را پردازش می‌کند. برای هر ورتکس، متغیرهایی وجود دارد که اطلاعات زیر را در اختیار شما می‌گذارند:

  • شماره ورتکسِ پرایمیتیوی که در حال پردازش است

  • تعداد ورتکس‌های پرایمیتیوی که در حال پردازش است

  • پوینتی که این ورتکس به آن اشاره می‌کند

  • پرایمیتیوی که این ورتکس در آن قرار دارد

  • تعداد کل پوینت‌ها

  • تعداد کل پرایمیتیوها

همچنین متغیرهای محلی‌ای وجود دارند که به شما اجازه می‌دهند مقادیر برخی Attributeهای پوینت (مثل موقعیت یا نرمال، در صورت وجود) و همچنین Attributeهای ورتکسی را بخوانید.
برای دسترسی به Attributeهای ورودی دوم، عدد 2 را به انتهای نام متغیر اضافه کنید.

PythonIcon.png
کلاس: vertexSOP_Class


فهرست مطالب

  1. خلاصه

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

  3. پارامترها – صفحه Attributes

  4. مثال‌ها
      4.1 جابه‌جایی‌های تکسچر

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

  6. کانال‌های Info CHOP
      6.1 کانال‌های اطلاعاتی مشترک SOP
      6.2 کانال‌های اطلاعاتی مشترک اپراتورها


پارامترها – صفحه Vertex

Group (group)

اگر گروه‌هایی در ورودی وجود داشته باشند، مشخص‌کردن نام یک گروه در این فیلد باعث می‌شود این SOP فقط روی همان گروه اعمال شود. این پارامتر از الگوها (Patterns) مطابق با قوانین Pattern Matching پشتیبانی می‌کند.

Color (doclr) ⊞

انتخاب می‌کند که Attribute رنگ ورتکسی از هندسه‌ی ورودی حفظ شود، رنگ جدید اضافه شود، یا هیچ رنگی استفاده نشود.

Color (diff) ⊞

اگر از منوی بالا گزینه‌ی Add Color را انتخاب کنید، Attribute رنگ ورتکسی Cd در SOP اضافه یا ویرایش می‌شود.
برای کنترل مقدار رنگ‌ها، عبارات زیر استفاده می‌شوند:

  • me.inputColor[0] برای قرمز

  • me.inputColor[1] برای سبز

  • me.inputColor[2] برای آبی

  • me.inputColor[3] برای آلفا

اگر گزینه‌ی No Color انتخاب شود، Attribute رنگ ورتکسی Cd از SOP حذف خواهد شد.

Alpha (alpha)

کنترل Attribute آلفا دقیقاً مشابه کنترل رنگ‌های RGB است.
آلفا برابر با Cd[3] بوده و از طریق me.inputColor[3] از ورودی دریافت می‌شود.

Texture (douvw) ⊞

انتخاب می‌کند که مختصات تکسچر ورتکسی حفظ شوند، مختصات جدید اضافه شوند، یا هیچ مختصات تکسچری استفاده نشود.

Texture (map) ⊞

اگر گزینه‌ی Add Texture انتخاب شود، Attribute ورتکسی مختصات بافت UV اضافه یا ویرایش می‌شود.
برای کنترل مقادیر مختصات تکسچر، از متغیرهای زیر استفاده می‌شود:

  • me.inputTexture[0]

  • me.inputTexture[1]

  • me.inputTexture[2]

اگر گزینه‌ی No Texture انتخاب شود، Attribute مختصات تکسچر ورتکسی UV حذف خواهد شد.

Crease (docrease) ⊞

انتخاب می‌کند که ویژگی Crease حفظ شود، Crease جدید اضافه شود، یا هیچ Creaseای استفاده نشود.

Attribute وزن Crease می‌تواند برای تعیین میزان تیزی لبه‌ها در سطوح Subdivision استفاده شود (به Subdivide SOP مراجعه کنید).
این Attribute ورتکسی وزن لبه‌ای را مشخص می‌کند که از آن ورتکس به ورتکس بعدی در پلی‌گان می‌رود.

مثال:
در یک مثلث با ورتکس‌های 0، 1 و 2:

  • Attribute ورتکس 1 وزن Crease لبه‌ی (1 → 2) را تعیین می‌کند

  • Attribute ورتکس 2 وزن Crease لبه‌ی (2 → 0) را تعیین می‌کند

وزن Crease باید بزرگ‌تر از صفر باشد. هرچه مقدار آن بزرگ‌تر باشد، لبه پس از Subdivide تیزتر خواهد شد.

Attributeهای Crease را می‌توان با عبور دادن هندسه از یک Subdivide SOP مشاهده کرد.

Crease (crease)

اگر گزینه‌ی Add Crease انتخاب شود، در این قسمت می‌توانید عبارات مربوط به مقدار creaseWeight را وارد کنید.
Attribute مورد استفاده:
me.inputVertex.creaseWeight[0]

مقدار وزن می‌تواند بین 0.0001 تا بی‌نهایت باشد.


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

Custom Attribute (attr)

دنباله‌ای از Attributeهای سفارشی که به هندسه اضافه می‌شوند.

Name (attr0name)

یک Attribute سفارشی با این نام ایجاد می‌کند.

Type (attr0type) ⊞

نوع Attribute ایجادشده را از این منو انتخاب می‌کند.

Value (attr0value) ⊞

مقدار Attribute سفارشی را با استفاده از این پارامترها تعیین می‌کند.


مثال‌ها

جابه‌جایی‌های تکسچر (Texture Offsets)

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

می‌توانید زمان فریم متریال را با استفاده از مؤلفه‌ی W اولین ورتکس یا پوینت در مختصات تکسچر تنظیم کنید.
مختصات تکسچر شامل U (افقی)، V (عمودی) و W (اندیس یکی از تصاویر مجموعه تکسچر) است.

مقدار W = -1 باعث می‌شود زمان تکسچر یک فریم به عقب برگردد.
به این ترتیب می‌توانید با استفاده از Vertex SOP یا Point SOP، فریم‌های متفاوتی را هم‌زمان روی پلی‌گان‌های مختلف اعمال کنید.


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

  • Input 0:

  • Input 1:


کانال‌های Info CHOP

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

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

  • num_points – تعداد پوینت‌ها در این SOP

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

  • num_particles – تعداد پارتیکل‌ها در این SOP

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

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

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

  • 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 است

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

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