Aracılığıyla paylaş


Düzlemleri kesme

Kesme düzlemi, sanal düzlemin bir tarafındaki pikselleri klipsleyen ve kafeslerin içini gösteren görsel bir özelliktir. Aşağıdaki görüntüde etki gösterilmektedir. Sol tarafta özgün mesh gösterilir, sağ tarafta ağın içine bakabilirsiniz:

Cut plane

CutPlaneComponent

CutPlaneComponent oluşturarak bir kesme düzlemi eklersiniz. Düzlemin konumu ve yönü bileşenin sahip varlığı tarafından belirlenir.

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
}

CutPlaneComponent özellikleri

Kesme düzlemi bileşeninde aşağıdaki özellikler kullanıma sunulur:

  • Enabled: Bileşeni devre dışı bırakarak kesme düzlemlerini geçici olarak kapatabilirsiniz. Devre dışı bırakılan kesme düzlemleri işleme yüküne neden olmaz ve genel kesme düzlemi sınırına göre sayılmaz.

  • Normal: Normal düzlem olarak hangi yönün (+X,-X,+Y,-Y,+Z,-Z) kullanılacağını belirtir. Bu yön, sahip varlığının yönlendirmesine göredir. Tam yerleştirme için sahip varlığını taşıyın ve döndürün.

  • FadeColor ve FadeLength:

    FadeColor'ın alfa değeri sıfır değilse kesme düzlemine yakın pikseller FadeColor'ın RGB bölümüne doğru kaybolur. Alfa kanalının gücü, tamamen solma rengine doğru mu yoksa yalnızca kısmen mi solacağını belirler. FadeLength , bu solgunlugun hangi mesafede gerçekleşeceğini tanımlar.

  • ObjectFilterMask: Kesme düzleminin hangi geometriden etkilendiğini belirleyen bir filtre bit maskesi. Ayrıntılı bilgi için sonraki paragrafa bakın.

Seçmeli kesme düzlemleri

Tek tek kesme düzlemlerinin yalnızca belirli geometriyi etkilemesi için yapılandırılması mümkündür. Aşağıdaki resimde bu kurulumun pratikte nasıl görünebileceği gösterilmektedir:

Selective cut planes

Filtreleme, kesme düzlemi tarafındaki bit maskesi ile geometride ayarlanan ikinci bit maskesi arasındaki mantıksal bit maskesi karşılaştırması ile çalışır. Maskeler arasındaki mantıksal AND işlemin sonucu sıfır değilse kesme düzlemi geometriyi etkiler.

  • Kesme düzlemi bileşenindeki bit maskesi özelliği aracılığıyla ObjectFilterMask ayarlanır
  • Geometrinin alt hiyerarşisinde bit maskesi HierarchicalStateOverrideComponent aracılığıyla ayarlanır

Örnekler:

Kesme düzlemi filtre maskesi Geometri filtre maskesi Mantıksal sonucu AND Kesme düzlemi geometriyi etkiler mi?
(0000 0001) == 1 (0000 0001) == 1 (0000 0001) == 1 Evet
(1111 0000) == 240 (0001 0001) == 17 (0001 0000) == 16 Evet
(0000 0001) == 1 (0000 0010) == 2 (0000 0000) == 0 Hayır
(0000 0011) == 3 (0000 1000) == 8 (0000 0000) == 0 Hayır

Bahşiş

Kesme düzleminin ObjectFilterMask değerinin 0 olarak ayarlanması, hiçbir zaman mantıksal AND sonucu null olmayan olabileceğinden geometriyi etkilemeyebileceği anlamına gelir. İşleme sistemi ilk etapta bu düzlemleri dikkate almayacaktır, bu nedenle bu tek tek kesilmiş düzlemleri devre dışı bırakmak için basit bir yöntemdir. Bu kesilmiş uçaklar da 8 aktif uçak sınırına karşı sayılmaz.

Sınırlamalar

  • Azure Remote Rendering en fazla sekiz etkin kesme düzlemini destekler. Daha fazla kesme düzlemi bileşeni oluşturabilirsiniz, ancak aynı anda daha fazla etkinleştirmeyi denerseniz etkinleştirmeyi yoksayar. Sahneyi etkilemesi gereken bileşenleri değiştirmek istiyorsanız önce diğer düzlemleri devre dışı bırakın.
  • Kesme düzlemleri tamamen görsel bir özelliktir, uzamsal sorguların sonucunu etkilemez. Ray cast'ı kesik açık bir ağa aktarmak istiyorsanız, ray'in başlangıç noktasını kesme düzleminde olacak şekilde ayarlayabilirsiniz. Bu şekilde ışın yalnızca görünür parçalara çarpabilir.

Performansla ilgili önemli noktalar

Her etkin kesme düzlemi işleme sırasında küçük bir maliyete neden olur. Gerekmediğinde kesilmiş düzlemleri devre dışı bırakın veya silin.

API belgeleri

Sonraki adımlar