مستويات القطع

مستوى القطع هو ميزة مرئية تقوم بقص وحدات البكسل على جانب واحد من الطائرة الظاهرية، ما يكشف عن داخل الشبكات. توضح الصورة أدناه التأثير. يظهر اليسار الشبكة الأصلية، على اليمين يمكن للمرء أن ينظر داخل الشبكة:

Cut plane

CutPlaneComponent

يمكنك إضافة مستوى قص إلى المشهد عن طريق إنشاء CutPlaneComponent. يتم تحديد موقع واتجاه الطائرة بواسطة كيان مالك المكون.

void CreateCutPlane(RenderingSession session, Entity ownerEntity)
{
    CutPlaneComponent cutPlane = (CutPlaneComponent)session.Connection.CreateComponent(ObjectType.CutPlaneComponent, ownerEntity);
    cutPlane.Normal = Axis.X; // normal points along the positive x-axis of the owner object's orientation
    cutPlane.FadeColor = new Color4Ub(255, 0, 0, 128); // fade to 50% red
    cutPlane.FadeLength = 0.05f; // gradient width: 5cm
}
void CreateCutPlane(ApiHandle<RenderingSession> session, ApiHandle<Entity> ownerEntity)
{
    ApiHandle<CutPlaneComponent> cutPlane = session->Connection()->CreateComponent(ObjectType::CutPlaneComponent, ownerEntity)->as<CutPlaneComponent>();;
    cutPlane->SetNormal(Axis::X); // normal points along the positive x-axis of the owner object's orientation
    Color4Ub fadeColor;
    fadeColor.channels = { 255, 0, 0, 128 }; // fade to 50% red
    cutPlane->SetFadeColor(fadeColor);
    cutPlane->SetFadeLength(0.05f); // gradient width: 5cm
}

خصائص CutPlaneComponent

يتم عرض الخصائص التالية على مكون مستوى القطع:

  • Enabled: يمكنك إيقاف تشغيل المستويات المقطوعة مؤقتا عن طريق تعطيل المكون. لا تتحمل الطائرات المعطلة المقطوعة حمل العرض ولا تحسب أيضا مقابل الحد العالمي للطائرة المقطوعة.

  • Normal: يحدد الاتجاه (+X,-X,+Y,-Y,+Z,-Z) المستخدم كطائرة عادية. هذا الاتجاه نسبة إلى اتجاه كيان المالك. نقل كيان المالك وتدويره للموضع الدقيق.

  • FadeColor و FadeLength:

    إذا كانت قيمة alpha ل FadeColor غير صفرية، فستتلاشى وحدات البكسل القريبة من مستوى القطع باتجاه جزء RGB من FadeColor. تحدد قوة قناة ألفا ما إذا كانت ستتلاشى بالكامل نحو لون التلاشي أو جزئيا فقط. يحدد FadeLength المسافة التي سيحدث بها هذا التلاشي.

  • ObjectFilterMask: قناع بت عامل تصفية يحدد الهندسة التي تتأثر بلوحة القطع. راجع الفقرة التالية للحصول على معلومات مفصلة.

مستويات قطع انتقائية

من الممكن تكوين مستويات القطع الفردية بحيث تؤثر فقط على هندسة معينة. توضح الصورة التالية كيف قد يبدو هذا الإعداد في الممارسة العملية:

Selective cut planes

تعمل التصفية من خلال مقارنة قناع بت منطقي بين قناع بت على جانب مستوى القطع وقناع بت ثان تم تعيينه على الهندسة. إذا لم تكن نتيجة العملية المنطقية AND بين الأقنعة صفرا، فإن مستوى القطع سيؤثر على الهندسة.

  • يتم تعيين قناع البت على مكون مستوى القطع عبر الخاصية الخاصة به ObjectFilterMask
  • يتم تعيين قناع البت على تسلسل هرمي فرعي للهندسة عبر HierarchicalStateOverrideComponent

أمثلة:

قناع عامل تصفية قص الطائرة قناع عامل تصفية هندسي نتيجة منطقية AND مستوى القطع يؤثر على الهندسة؟
(0000 0001) == 1 (0000 0001) == 1 (0000 0001) == 1 ‏‏نعم‬
(1111 0000) == 240 (0001 0001) == 17 (0001 0000) == 16 ‏‏نعم‬
(0000 0001) == 1 (0000 0010) == 2 (0000 0000) == 0 لا
(0000 0011) == 3 (0000 1000) == 8 (0000 0000) == 0 لا

تلميح

يعني تعيين مستوى ObjectFilterMask القطع إلى 0 أنه لن يؤثر على أي هندسة لأن نتيجة المنطقية AND لا يمكن أن تكون أبدا غير خالية. لن يعتبر نظام العرض تلك الطائرات في المقام الأول، لذلك هذه طريقة خفيفة لتعطيل طائرات القطع الفردية. هذه الطائرات المقطوعة أيضا لا تحسب مقابل حد 8 طائرات نشطة.

القيود

  • يدعم Azure Remote Rendering ثماني طائرات قطع نشطة كحد أقصى. يمكنك إنشاء المزيد من مكونات مستوى القطع، ولكن إذا حاولت التمكين في وقت واحد، فإنه سيتجاهل التنشيط. قم بتعطيل الطائرات الأخرى أولا إذا كنت تريد تبديل المكونات التي يجب أن تؤثر على المشهد.
  • مستويات القطع هي ميزة بصرية بحتة، فهي لا تؤثر على نتيجة الاستعلامات المكانية. إذا كنت ترغب في أشعة يلقي في شبكة قطع مفتوحة، يمكنك ضبط نقطة البداية للشعاع ليكون على مستوى القطع. بهذه الطريقة يمكن للشعاع فقط ضرب أجزاء مرئية.

الاعتبارات الخاصة بالأداء

تتحمل كل وحدة قطع نشطة تكلفة صغيرة أثناء العرض. قم بتعطيل أو حذف المستويات المقصوصة عندما لا تكون هناك حاجة إليها.

مستندات API

الخطوات التالية