شبكات

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

أنواع الشبكة

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

تحدد خدمة التحويل تلقائيا نوع الشبكة المناسبة حسب ملحق الملف المصدر. على سبيل المثال، يتم دائما تحويل ملف FBX ك شبكة مثلثة، بينما يتم التعامل مع PLY كسحابة نقطة. للحصول على القائمة الكاملة لتنسيقات الملفات المعتمدة، راجع قائمة تنسيقات الملفات المصدر.

هناك نوعان من الاختلافات المهمة التي تواجه المستخدم بين تحويلات الشبكة السحابية والثلاثية للنقطة:

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

خصائص مورد الشبكة

Mesh خصائص الفئة هي:

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

  • الحدود: مربع إحاطة محاذي للمحور المحلي (AABB) لرؤوس الشبكة.

MeshComponent

MeshComponent يتم استخدام الفئة لوضع مثيل لمورد شبكة. يشير كل MeshComponent إلى شبكة واحدة. وقد يتجاوز المواد المستخدمة لعرض كل أداة فرعية.

خصائص MeshComponent

  • Mesh: مورد الشبكة الذي يستخدمه هذا المكون.

  • المواد: صفيف المواد المحددة على مكون الشبكة نفسه. سيكون للصفيف دائما نفس طول صفيف المواد على مورد الشبكة. يتم تعيين المواد التي يجب عدم تجاوزها من الشبكة الافتراضية إلى فارغة في هذا الصفيف.

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

مشاركة الشبكات

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

Entity CloneEntityWithModel(RenderingConnection api, Entity sourceEntity)
{
    MeshComponent meshComp = sourceEntity.FindComponentOfType<MeshComponent>();
    if (meshComp != null)
    {
        Entity newEntity = api.CreateEntity();
        MeshComponent newMeshComp = api.CreateComponent(ObjectType.MeshComponent, newEntity) as MeshComponent;
        newMeshComp.Mesh = meshComp.Mesh; // share the mesh
        return newEntity;
    }
    return null;
}
ApiHandle<Entity> CloneEntityWithModel(ApiHandle<RenderingConnection> api, ApiHandle<Entity> sourceEntity)
{
    if (ApiHandle<MeshComponent> meshComp = sourceEntity->FindComponentOfType<MeshComponent>())
    {
        ApiHandle<Entity> newEntity = *api->CreateEntity();
        ApiHandle<MeshComponent> newMeshComp = api->CreateComponent(ObjectType::MeshComponent, newEntity)->as<RemoteRendering::MeshComponent>();
        newMeshComp->SetMesh(meshComp->GetMesh()); // share the mesh
        return newEntity;
    }
    return nullptr;
}

مستندات API

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