تجاوز الحالة الهرمية

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

لإنجاز حالة الاستخدام هذه بأقل حمل ممكن، استخدم HierarchicalStateOverrideComponent. ينفذ هذا المكون تحديثات الحالة الهرمية على الفروع العشوائية للرسم البياني للمشهد. وهذا يعني أنه يمكن تعريف الحالة على أي مستوى في الرسم البياني للمشهد، وتهبط التدرج الهرمي حتى يتم تجاوزها إما بحالة جديدة، أو تطبيقها على كائن طرفي.

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

  • يتم تعيين المكون الأول إلى العقدة الجذر للنموذج وتشغيل العرض الشفاف للسيارة بأكملها.
  • يتم تعيين المكون الثاني إلى العقدة الجذر للمحرك ويتجاوز الحالة مرة أخرى عن طريق إيقاف تشغيل وضع see-through بشكل صريح.

إشعار

لا تعرض سحب النقاط رسما بيانيا كاملا للمشهد (راجع اختلافات نوع الشبكة)، لذا فإن تعيين تجاوز هرمي للكيان الجذر لنموذج سحابة نقطة سيطبق الحالة على سحابة النقطة الكاملة. علاوة على ذلك، بعض ميزات تجاوز الحالة غير مدعومة للسحب النقطة، كما هو مذكور في القسم المعني.

الميزات

المجموعة الثابتة من الحالات التي يمكن تجاوزها هي:

  • Hidden: الشبكات المعنية في الرسم البياني للمشهد مخفية أو معروضة.

  • Tint color: يمكن أن يكون العنصر المعروض ملونا بلون لونه الصبغي الفردي ووزنه الملون. تظهر الصورة أدناه اللون الذي يصبغ حافة العجلة.

    Tint color used to turn an object green

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

    See-through mode used to make selected objects transparent

    هام

    يعمل تأثير العرض فقط عند استخدام وضع عرض TileBasedComposition.

    إشعار

    يتم تجاهل تأثير see-through للسحب النقطة.

  • Shell: يتم عرض الهندسة كقشرة شفافة غير مشبعة. يسمح هذا الوضع بتلاشي الأجزاء غير الهامة من المشهد مع الاحتفاظ بالشعور بالشكل وتحديد الموضع النسبي. لتغيير مظهر عرض shell، استخدم حالة ShellRendering الإعدادات. راجع الصورة التالية لنموذج السيارة الذي يتم عرضه بالكامل من shell، باستثناء الينابيع الزرقاء:

    Shell mode used to fade out specific objects

    هام

    يعمل تأثير shell فقط عند استخدام وضع عرض TileBasedComposition.

    إشعار

    يتم تجاهل تأثير shell للسحب النقطة.

  • Selected: يتم عرض الهندسة بمخطط تفصيلي للتحديد.

    Outline option used to highlight a selected part

    إشعار

    يتم تجاهل عرض المخطط التفصيلي للتحديد لسحب النقاط.

  • DisableCollision: الهندسة معفاة من الاستعلامات المكانية. Hidden لا تؤثر العلامة على علامة حالة التصادم، لذلك غالبا ما يتم تعيين هاتين العلامتين معا.

  • TransparencyWritesDepth: ينشط كتابة العمق للشفافية See-through المادية و في شجرة مشهد كيان المكون. باستخدام هذه العلامة، See-through يمكن أن يكون للشفافية كتابة العمق إما ممكنة أو معطلة في شجرة فرعية، حتى إذا تم TransparencyWritesDepth فرضها عالميا. من أجل الشفافية المادية، تتصرف العلامة بشكل شامل، بمعنى أنه إذا TransparencyWritesDepth تم تمكينها إما بتجاوز أو فرض عالميا أو عبر أعلام المادة، فسيتم تمكين كتابة العمق للعناصر التي يتم عرضها باستخدام هذه المادة.

  • UseCutPlaneFilterMask: استخدم قناع بت عامل تصفية فردي للتحكم في تحديد مستوى القطع. تحدد هذه العلامة ما إذا كان يجب استخدام قناع عامل التصفية الفردي أو توريثه من الأصل الخاص به. يتم تعيين قناع بت عامل التصفية نفسه عبر الخاصية CutPlaneFilterMask . للحصول على معلومات مفصلة حول كيفية عمل التصفية، راجع الفقرة مستويات القطع الانتقائية. راجع المثال التالي حيث يتم قطع الإطارات والحافة فقط بينما تبقى بقية المشهد غير متأثرة. Selective cut planes

تلميح

كبديل لإيقاف تشغيل الرؤية والاستعلامات المكانية لرسم بياني فرعي كامل، enabled يمكن تبديل حالة عنصر اللعبة. إذا تم تعطيل التسلسل الهرمي، فإن هذا له تفضيل على أي HierarchicalStateOverrideComponent.

التجاوزات الهرمية

HierarchicalStateOverrideComponent يمكن إرفاق على مستويات متعددة من التسلسل الهرمي للكائن. نظرا لأنه يمكن أن يكون هناك مكون واحد فقط من كل نوع على كيان، HierarchicalStateOverrideComponent كل يدير الحالات المخفية، والرؤية، والمحددة، ولون اللون والاصطدام.

لذلك يمكن تعيين كل حالة إلى واحدة من:

  • ForceOn - يتم تمكين الحالة لجميع الشبكات على هذه العقدة وأسفنها
  • ForceOff - تم تعطيل الحالة لجميع الشبكات على هذه العقدة وأسفلها
  • InheritFromParent - الحالة غير متأثرة بمكون التجاوز هذا

يمكنك تغيير الحالات مباشرة أو من خلال الدالة SetState :

HierarchicalStateOverrideComponent component = ...;

// set one state directly
component.HiddenState = HierarchicalEnableState.ForceOn;

// set a state with the SetState function
component.SetState(HierarchicalStates.SeeThrough, HierarchicalEnableState.InheritFromParent);

// set multiple states at once with the SetState function
component.SetState(HierarchicalStates.Hidden | HierarchicalStates.DisableCollision, HierarchicalEnableState.ForceOff);
ApiHandle<HierarchicalStateOverrideComponent> component = ...;

// set one state directly
component->SetHiddenState(HierarchicalEnableState::ForceOn);

// or: set a state with the SetState function
component->SetState(HierarchicalStates::SeeThrough, HierarchicalEnableState::InheritFromParent);

// set multiple states at once with the SetState function
component->SetState(
    (HierarchicalStates)((int32_t)HierarchicalStates::Hidden | (int32_t)HierarchicalStates::DisableCollision), HierarchicalEnableState::ForceOff);

لون لون ملون

يعد tint color التجاوز خاصا بعض الشيء من حيث وجود حالة تشغيل/إيقاف/وراثة وخاصية لون ملون. يحدد جزء alpha من لون اللون اللوني وزن تأثير الصبغة: إذا تم تعيينه إلى 0.0، فلن يكون لون الصبغ مرئيا، وإذا تم تعيينه إلى 1.0، فسيتم عرض الكائن بلون لون ملون خالص. بالنسبة للقيم الموجودة بينهما، سيتم خلط اللون النهائي بلون الألوان الملونة. يمكن تغيير لون اللون على أساس كل إطار لتحقيق حركة الألوان.

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

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

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

مستندات API

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