المواد

المواد هي موارد مشتركة تحدد كيفية عرض الشبكات المثلثة. السحب النقطة من ناحية أخرى لا تعرض المواد على الإطلاق.

يتم استخدام المواد لتحديد

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

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

إشعار

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

أنواع المواد

يحتوي Azure Remote Rendering على نوعين متميزين من المواد:

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

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

تعيين مادة Mesh مقابل MeshComponent

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

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

إزالة الازدواجية المادية

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

فئات المواد

جميع المواد التي توفرها واجهة برمجة التطبيقات مشتقة من الفئة Materialالأساسية . يمكن الاستعلام عن نوعها من خلال Material.MaterialSubType أو عن طريق تحويلها مباشرة:

void SetMaterialColorToGreen(Material material)
{
    if (material.MaterialSubType == MaterialType.Color)
    {
        ColorMaterial colorMaterial = material as ColorMaterial;
        colorMaterial.AlbedoColor = new Color4(0, 1, 0, 1);
        return;
    }

    PbrMaterial pbrMat = material as PbrMaterial;
    if (pbrMat != null)
    {
        pbrMat.AlbedoColor = new Color4(0, 1, 0, 1);
        return;
    }
}
void SetMaterialColorToGreen(ApiHandle<Material> material)
{
    if (material->GetMaterialSubType() == MaterialType::Color)
    {
        ApiHandle<ColorMaterial> colorMaterial = material.as<ColorMaterial>();
        colorMaterial->SetAlbedoColor({ 0, 1, 0, 1 });
        return;
    }

    if (material->GetMaterialSubType() == MaterialType::Pbr)
    {
        ApiHandle<PbrMaterial> pbrMat = material.as<PbrMaterial>();
        pbrMat->SetAlbedoColor({ 0, 1, 0, 1 });
        return;
    }
}

مستندات API

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