Dela via


Klippa ut planer

Ett klippt plan är en visuell funktion som klipper pixlar på ena sidan av ett virtuellt plan och avslöjar insidan av nät. Bilden nedan visar effekten. Till vänster visas det ursprungliga nätet, till höger kan man titta inuti nätet:

Cut plane

CutPlaneComponent

Du lägger till ett klippt plan i scenen genom att skapa en CutPlaneComponent. Planets plats och orientering bestäms av komponentens ägarentitet.

void CreateCutPlane(RenderingSession session, Entity ownerEntity)
{
    CutPlaneComponent cutPlane = (CutPlaneComponent)session.Connection.CreateComponent(ObjectType.CutPlaneComponent, ownerEntity);
    cutPlane.Normal = Axis.X; // normal points along the positive x-axis of the owner object's orientation
    cutPlane.FadeColor = new Color4Ub(255, 0, 0, 128); // fade to 50% red
    cutPlane.FadeLength = 0.05f; // gradient width: 5cm
}
void CreateCutPlane(ApiHandle<RenderingSession> session, ApiHandle<Entity> ownerEntity)
{
    ApiHandle<CutPlaneComponent> cutPlane = session->Connection()->CreateComponent(ObjectType::CutPlaneComponent, ownerEntity)->as<CutPlaneComponent>();;
    cutPlane->SetNormal(Axis::X); // normal points along the positive x-axis of the owner object's orientation
    Color4Ub fadeColor;
    fadeColor.channels = { 255, 0, 0, 128 }; // fade to 50% red
    cutPlane->SetFadeColor(fadeColor);
    cutPlane->SetFadeLength(0.05f); // gradient width: 5cm
}

Egenskaper för CutPlaneComponent

Följande egenskaper exponeras för en komponent i ett klippt plan:

  • Enabled: Du kan tillfälligt stänga av klippta plan genom att inaktivera komponenten. Inaktiverade klippplan medför inte renderingskostnader och räknas inte heller mot den globala gränsen för klippplan.

  • Normal: Anger vilken riktning (+X,-X,+Y,-Y,+Z,-Z) som används som det normala planet. Den här riktningen är relativ till ägarentitetens orientering. Flytta och rotera ägarentiteten för exakt placering.

  • FadeColor och FadeLength:

    Om alfavärdet för FadeColor inte är noll tonas pixlar nära klippt plan ut mot RGB-delen av FadeColor. Alfakanalens styrka avgör om den kommer att tonas helt mot toningsfärgen eller bara delvis. FadeLength definierar över vilket avstånd den här toningen ska äga rum.

  • ObjectFilterMask: En filterbitmask som avgör vilken geometri som påverkas av skärplanet. Mer information finns i nästa stycke.

Selektiva skärplan

Det är möjligt att konfigurera enskilda klippplan så att de bara påverkar specifik geometri. Följande bild visar hur den här konfigurationen kan se ut i praktiken:

Selective cut planes

Filtreringen fungerar genom logisk bitmaskjämförelse mellan en bitmask på klippplanssidan och en andra bitmask som är inställd på geometrin. Om resultatet av en logisk AND åtgärd mellan maskerna inte är noll, påverkar skärplanet geometrin.

  • Bitmasken på komponenten för det klippta planet ställs in via dess ObjectFilterMask egenskap
  • Bitmasken i en underhierarki med geometri anges via HierarchicalStateOverrideComponent

Exempel:

Klipp ut planfiltermask Geometrifiltermask Resultat av logiskt AND Klippt plan påverkar geometrin?
(0000 0001) == 1 (0000 0001) == 1 (0000 0001) == 1 Ja
(1111 0000) == 240 (0001 0001) == 17 (0001 0000) == 16 Ja
(0000 0001) == 1 (0000 0010) == 2 (0000 0000) == 0 Inga
(0000 0011) == 3 (0000 1000) == 8 (0000 0000) == 0 Inga

Dricks

Om du anger ett klippt plan ObjectFilterMask till 0 påverkas ingen geometri eftersom resultatet av logiskt AND aldrig kan vara icke-null. Renderingssystemet kommer inte att överväga dessa plan i första hand, så det här är en lätt metod för att inaktivera enskilda klippplan. Dessa klippta plan räknas inte heller mot gränsen på 8 aktiva plan.

Begränsningar

  • Azure Remote Rendering stöder högst åtta aktiva klippplan. Du kan skapa fler klippta plankomponenter, men om du försöker aktivera fler samtidigt ignoreras aktiveringen. Inaktivera andra plan först om du vill växla vilka komponenter som ska påverka scenen.
  • Klipp ut plan är en rent visuell funktion, de påverkar inte resultatet av rumsliga frågor. Om du vill strålgjutas i ett klippt nät kan du justera strålens startpunkt så att den är på skärplanet. På så sätt kan strålen bara träffa synliga delar.

Prestandaöverväganden

Varje aktivt klippplan medför en liten kostnad under återgivningen. Inaktivera eller ta bort klippta plan när de inte behövs.

API-dokumentation

Nästa steg