Materials
المواد هي موارد مشتركة تحدد كيفية عرض الشبكات . يتم استخدام المواد لتحديد القوام الذي يجب تطبيقه ، وما إذا كان يجب جعل الكائنات شفافة وكيف سيتم حساب الإضاءة.
يتم إنشاء المواد تلقائيا أثناء تحويل النموذج ويمكن الوصول إليها في وقت التشغيل. يمكنك أيضا إنشاء مواد مخصصة من التعليمات البرمجية واستبدال المواد الموجودة. هذا السيناريو منطقي بشكل خاص إذا كنت ترغب في مشاركة نفس المادة عبر العديد من الشبكات. نظرا لأن تعديلات المادة مرئية على كل شبكة تشير إليها ، يمكن استخدام هذه الطريقة لتطبيق التغييرات بسهولة.
ملاحظة
يمكن إجراء بعض حالات الاستخدام ، مثل تسليط الضوء على كائن تم اختياره عن طريق تعديل المواد ، ولكن من الأسهل بكثير تحقيقها من خلال HierarchicalStateOverrideComponent.
أنواع المواد
يحتوي Azure Remote Rendering على نوعين متميزين من المواد:
تستخدم مواد PBR للأسطح التي يجب أن تكون صحيحة ماديا قدر الإمكان. يتم حساب الإضاءة الواقعية لهذه المواد باستخدام العرض المادي (PBR). لتحقيق أقصى استفادة من هذا النوع من المواد ، من المهم توفير بيانات إدخال عالية الجودة ، مثل الخشونة والخرائط العادية.
يتم استخدام المواد الملونة للحالات التي لا تكون فيها الإضاءة الإضافية مطلوبة. هذه المواد دائما ما تكون مشرقة بالكامل وأسهل في الإعداد. يتم استخدام المواد الملونة للبيانات التي يجب أن لا تحتوي على إضاءة على الإطلاق ، أو تتضمن بالفعل إضاءة ثابتة ، مثل النماذج التي تم الحصول عليها من خلال المسح التصويري.
Mesh مقابل تعيين مواد 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.
- C # فئة المواد
- C # فئة المواد الملونة
- C # فئة PbrMaterial
- C# RenderingConnection.CreateMaterial()
- فئة المواد C ++
- C ++ فئة ColorMaterial
- C ++ فئة PbrMaterial
- C ++ تقديم الاتصال::CreateMaterial()