شبكات

الموارد Mesh

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

خصائص الموارد Mesh

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

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

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

مكون الشبكة

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

خصائص مكونات الشبكة

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

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

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

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

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⁧⁩.

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