Dela via


Maskor

Nät är oföränderliga delade resurser som bara kan skapas genom modellkonvertering. Nät används för rendering men också för att tillhandahålla en fysikrepresentation för ray cast-frågor. Om du vill placera ett nät i 3D-utrymme lägger du till en MeshComponent i en entitet.

Nättyper

Det finns två olika typer av nätresurser i ARR: Triangulära nät och punktmoln. Båda typerna representeras av samma API-klass Mesh. Förutom mindre skillnader i beteende för de distinkta nättyperna är de exponerade API-funktionerna identiska.

Konverteringstjänsten avgör automatiskt lämplig nättyp efter källfilnamnstillägg. En FBX-fil konverteras till exempel alltid som ett triangulärt nät, medan PLY behandlas som ett punktmoln. Den fullständiga listan över filformat som stöds finns i listan över källfilformat.

Det finns två betydande användarinriktade skillnader mellan punktmoln- och triangulära nätkonverteringar:

  • Punktmolnnät exponerar inget material. Det visuella utseendet på punkter definieras enbart av deras färg per punkt,
  • punktmoln exponerar inte ett scendiagram. I stället kopplas alla punkter till rotnodentiteten.

Egenskaper för mesh-resurser

Klassegenskaperna Mesh är:

  • Material: En matris med material. Varje material används av en annan submesh. Flera poster i matrisen kan referera till samma material. Poster i den här matrisen kan inte ändras vid körning, men det kan materialegenskaperna. För punktmoln är den här matrisen tom.

  • Gränser: En AABB (local-space axis-aligned bounding box) för näthörn.

MeshComponent

Klassen MeshComponent används för att placera en instans av en nätresurs. Varje MeshComponent refererar till ett enda nät. Det kan åsidosätta vilka material som används för att återge varje undermapp.

MeshComponent-egenskaper

  • Mesh: Nätresursen som används av den här komponenten.

  • Material: Matrisen med material som anges på själva nätkomponenten. Matrisen har alltid samma längd som matrisen Material på nätresursen. Material som inte ska åsidosättas från nätstandarden anges till null i den här matrisen.

  • UsedMaterials: Matrisen med faktiskt använda material för varje undermapp. Kommer att vara identisk med data i matrisen Material för värden som inte är null. Annars innehåller den värdet från matrisen Material i mesh-instansen. Den här matrisen är skrivskyddad.

Delning av nät

En Mesh resurs kan delas mellan flera instanser av mesh-komponenter. Dessutom kan resursen Mesh som tilldelas en mesh-komponent ändras programmatiskt när som helst. Koden nedan visar hur du klonar ett nä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-dokumentation

Nästa steg