مستويات القطع
مستوى القطع هو ميزة مرئية تقوم بقص وحدات البكسل على جانب واحد من الطائرة الظاهرية، ما يكشف عن داخل الشبكات. توضح الصورة أدناه التأثير. يظهر اليسار الشبكة الأصلية، على اليمين يمكن للمرء أن ينظر داخل الشبكة:
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
: قناع بت عامل تصفية يحدد الهندسة التي تتأثر بلوحة القطع. راجع الفقرة التالية للحصول على معلومات مفصلة.
مستويات قطع انتقائية
من الممكن تكوين مستويات القطع الفردية بحيث تؤثر فقط على هندسة معينة. توضح الصورة التالية كيف قد يبدو هذا الإعداد في الممارسة العملية:
تعمل التصفية من خلال مقارنة قناع بت منطقي بين قناع بت على جانب مستوى القطع وقناع بت ثان تم تعيينه على الهندسة. إذا لم تكن نتيجة العملية المنطقية 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 ثماني طائرات قطع نشطة كحد أقصى. يمكنك إنشاء المزيد من مكونات مستوى القطع، ولكن إذا حاولت التمكين في وقت واحد، فإنه سيتجاهل التنشيط. قم بتعطيل الطائرات الأخرى أولا إذا كنت تريد تبديل المكونات التي يجب أن تؤثر على المشهد.
- مستويات القطع هي ميزة بصرية بحتة، فهي لا تؤثر على نتيجة الاستعلامات المكانية. إذا كنت ترغب في أشعة يلقي في شبكة قطع مفتوحة، يمكنك ضبط نقطة البداية للشعاع ليكون على مستوى القطع. بهذه الطريقة يمكن للشعاع فقط ضرب أجزاء مرئية.
الاعتبارات الخاصة بالأداء
تتحمل كل وحدة قطع نشطة تكلفة صغيرة أثناء العرض. قم بتعطيل أو حذف المستويات المقصوصة عندما لا تكون هناك حاجة إليها.