Sdílet prostřednictvím


Sítě

Sítě jsou neměnné sdílené prostředky , které je možné vytvořit pouze prostřednictvím převodu modelu. Sítě se používají k vykreslování, ale také k zajištění fyzikální reprezentace dotazů na přetypování paprsků. Pokud chcete umístit síť do 3D prostoru, přidejte do entity meshcomponent.

Typy sítí

V ARR existují dva různé typy síťových prostředků: trojúhelníkové mřížky a bodové mraky. Oba typy jsou reprezentovány stejnou třídou Meshrozhraní API . S výjimkou drobných rozdílů v chování různých typů sítí je vystavená funkce rozhraní API stejná.

Služba převodu automaticky určuje odpovídající typ sítě podle přípony zdrojového souboru. Například soubor FBX se vždy převede jako trojúhelníková síť, zatímco PLY se považuje za bodový cloud. Úplný seznam podporovaných formátů souborů najdete v seznamu zdrojových formátů souborů.

Mezi převody bodového cloudu a trojúhelníkové sítě existují dva významné rozdíly:

  • Bodové cloudové sítě nezpřístupňují žádné materiály. Vizuální vzhled bodů je definován pouze barvou jednotlivých bodů,
  • bodové mraky nezpřístupňují graf scény. Místo toho jsou všechny body připojené k entitě kořenového uzlu.

Vlastnosti prostředku mesh

Vlastnosti Mesh třídy jsou:

  • Materiály: Pole materiálů. Každý materiál je používán jiným dílčím polem. Více položek v matici může odkazovat na stejný materiál. Položky v tomto poli nelze změnit za běhu, ale vlastnosti materiálu mohou. Pro bodové mraky je toto pole prázdné.

  • Hranice: Osu místního prostoru zarovnaného ohraničujícího rámečku (AABB) vrcholů sítě.

MeshComponent

Třída MeshComponent se používá k umístění instance prostředku mesh. Každá funkce MeshComponent odkazuje na jednu síť. Může přepsat, které materiály se používají k vykreslení jednotlivých dílčích součástí.

MeshComponent – vlastnosti

  • Mesh: Prostředek sítě, který tato komponenta používá.

  • Materiály: Pole materiálů určených pro samotnou součást sítě. Pole bude mít vždy stejnou délku jako pole Materiály na prostředku sítě. Materiály, které se ve výchozím nastavení sítě nepřepíše, jsou v tomto poli nastaveny na hodnotu null .

  • Použitématerialy: Pole skutečně použitých materiálů pro každou dílčí část. Bude shodná s daty v poli Materiály pro hodnoty, které nemají hodnotu null. V opačném případě obsahuje hodnotu z pole Materiály v instanci sítě. Toto pole je jen pro čtení.

Sdílení sítí

Prostředek Mesh je možné sdílet napříč několika instancemi komponent sítě. Kromě toho Mesh lze prostředek přiřazený komponentě sítě kdykoli změnit programově. Následující kód ukazuje, jak klonovat síť:

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;
}

Dokumentace k rozhraní API

Další kroky