Wycięte płaszczyzny
Płaszczyzna wycinania to funkcja wizualna, która przycina piksele po jednej stronie płaszczyzny wirtualnej, ujawniając wewnątrz siatki. Na poniższej ilustracji przedstawiono efekt. Po lewej stronie widać oryginalną siatkę, po prawej stronie można spojrzeć wewnątrz siatki:
CutPlaneComponent
Dodasz płaszczyznę wycinania do sceny, tworząc element CutPlaneComponent. Lokalizacja i orientacja płaszczyzny jest określana przez jednostkę właściciela składnika.
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
}
Właściwości cutPlaneComponent
Następujące właściwości są uwidocznione w składniku płaszczyzny wycinania:
Enabled
: Można tymczasowo wyłączyć płaszczyzny wycinania, wyłączając składnik. Wyłączone płaszczyzny wycinania nie powodują narzutów renderowania, a także nie są liczone względem globalnego limitu płaszczyzny cięcia.Normal
: określa kierunek (+X,-X,+Y,-Y,+Z,-Z) jest używany jako normalny płaszczyzna. Ten kierunek jest względny względem orientacji jednostki właściciela. Przenieś i obróć jednostkę właściciela w celu dokładnego umieszczania.FadeColor
iFadeLength
:Jeśli wartość alfa elementu FadeColor jest różna od zera, piksele zbliżone do płaszczyzny wycinania zanikają w kierunku części RGB elementu FadeColor. Siła kanału alfa określa, czy w pełni zanika w kierunku koloru zanikania, czy tylko częściowo. FadeLength definiuje, w jakim dystansie nastąpi to zanikanie.
ObjectFilterMask
: Maska bitów filtru, która określa, która geometria ma wpływ na płaszczyznę cięcia. Aby uzyskać szczegółowe informacje, zobacz następny akapit.
Selektywne płaszczyzny wycinania
Można skonfigurować poszczególne płaszczyzny cięcia tak, aby miały wpływ tylko na konkretną geometrię. Na poniższej ilustracji pokazano, jak ta konfiguracja może wyglądać w praktyce:
Filtrowanie działa poprzez porównanie maski bitów logicznych między maską bitową po stronie płaszczyzny cięcia a drugą maską bitową ustawioną na geometrii. Jeśli wynikiem operacji logicznej AND
między maskami nie jest zero, płaszczyzna cięcia wpłynie na geometrię.
- Maska bitowa na składniku płaszczyzny cięcia jest ustawiana za pośrednictwem jego
ObjectFilterMask
właściwości - Maska bitów w pod hierarchii geometrii jest ustawiana za pośrednictwem hierarchicznejStateOverrideComponent
Przykłady:
Maska filtru płaszczyzny wycinania | Maska filtru geometrii | Wynik logiczny AND |
Wyciąć płaszczyznę wpływa na geometrię? |
---|---|---|---|
(0000 0001) == 1 | (0000 0001) == 1 | (0000 0001) == 1 | Tak |
(1111 0000) == 240 | (0001 0001) == 17 | (0001 0000) == 16 | Tak |
(0000 0001) == 1 | (0000 0010) == 2 | (0000 0000) == 0 | Nie. |
(0000 0011) == 3 | (0000 1000) == 8 | (0000 0000) == 0 | Nie. |
Napiwek
Ustawienie płaszczyzny ObjectFilterMask
cięcia na wartość 0 oznacza, że nie wpłynie to na geometrię, ponieważ wynik logiczny AND
nigdy nie może mieć wartości null. System renderowania nie rozważy tych samolotów w pierwszej kolejności, więc jest to uproszczona metoda wyłączania pojedynczych płaszczyzn wycinania. Te płaszczyzny cięcia również nie liczą się z limitem 8 aktywnych płaszczyzn.
Ograniczenia
- Usługa Azure Remote Rendering obsługuje maksymalnie osiem aktywnych płaszczyzn wycinania. Możesz utworzyć więcej składników płaszczyzny cięcia, ale jeśli spróbujesz włączyć więcej jednocześnie, zignoruje aktywację. Wyłącz najpierw inne płaszczyzny, jeśli chcesz przełączyć składniki, które powinny mieć wpływ na scenę.
- Płaszczyzny wycinania są funkcją czysto wizualną, ale nie mają wpływu na wynik zapytań przestrzennych. Jeśli chcesz promieniować rzutować na otwartą siatkę, możesz dostosować punkt początkowy promienia, aby był na płaszczyźnie cięcia. W ten sposób ray może uderzyć tylko widoczne części.
Zagadnienia dotyczące wydajności
Każda aktywna płaszczyzna cięcia wiąże się z niewielkim kosztem podczas renderowania. Wyłącz lub usuń płaszczyzny wycinania, gdy nie są potrzebne.