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:
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
veFadeLength
: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:
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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin