Megosztás a következőn keresztül:


Hálók

A hálók nem módosítható megosztott erőforrások, amelyek csak modellkonvertálással hozhatók létre. A hálók renderelésre szolgálnak, de fizikai ábrázolást is biztosítanak a sugár leadott lekérdezésekhez. Ha egy hálót 3D térben szeretne elhelyezni, adjon hozzá egy MeshComponentet egy entitáshoz.

Hálótípusok

Az ARR-ben két különböző típusú hálóerőforrás létezik: háromszög alakú hálók és pontfelhők. Mindkét típust ugyanaz az API-osztály Meshjelöli. A különböző hálótípusok viselkedésének kisebb eltérései kivételével a közzétett API-funkciók azonosak.

A konvertálási szolgáltatás automatikusan meghatározza a megfelelő hálótípust a forrásfájlkiterjesztés alapján. Az FBX-fájlok például mindig háromszög alakú hálóként lesznek konvertálva, míg a PLY pontfelhőként van kezelve. A támogatott fájlformátumok teljes listáját a forrásfájlformátumok listájában találja.

A pontfelhő- és háromszögháló-konverziók között két jelentős, felhasználó által néző különbség van:

  • A pontfelhő-hálók nem fednek fel anyagokat. A pontok vizuális megjelenését kizárólag a pontonkénti színük határozza meg,
  • pontfelhők nem fednek fel jelenetdiagramot. Ehelyett minden pont a gyökércsomópont-entitáshoz van csatolva.

Mesh-erőforrás tulajdonságai

Az Mesh osztály tulajdonságai a következők:

  • Anyagok: Anyagtömb. Minden egyes anyagot egy másik almesh használ. A tömb több bejegyzése is hivatkozhat ugyanarra az anyagra. A tömb bejegyzései futásidőben nem módosíthatók, azonban az anyagtulajdonságok nem. Pontfelhők esetén ez a tömb üres.

  • Határvonalak: A hálócsúcsok helyi tértengelyhez igazított határolókerete (AABB).

MeshComponent

Az MeshComponent osztály egy hálóerőforrás egy példányának elhelyezésére szolgál. Minden MeshComponent egyetlen hálóra hivatkozik. Felülbírálhatja az egyes aljelentések megjelenítéséhez használt anyagokat.

MeshComponent-tulajdonságok

  • Mesh: Az összetevő által használt hálóerőforrás.

  • Anyagok: A hálóösszetevőn megadott anyagok tömbje. A tömb hossza mindig megegyezik a hálóerőforrás Anyag tömbjének hosszával. A háló alapértelmezett értékétől nem felülbírált anyagok null értékre vannak beállítva ebben a tömbben.

  • UsedMaterials: A ténylegesen használt anyagok tömbje minden almesh. A nem null értékek esetében az Anyagok tömb adataival azonos lesz. Ellenkező esetben a hálópéldány Anyagok tömbjének értékét tartalmazza. Ez a tömb írásvédett.

Hálók megosztása

Az Mesh erőforrások a hálóösszetevők több példányán is megoszthatók. Továbbá a Mesh hálóösszetevőhöz rendelt erőforrás programozott módon bármikor módosítható. Az alábbi kód bemutatja, hogyan klónozhat egy hálót:

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-dokumentáció

Következő lépések