切割平面
切割平面 是一種視覺功能,可裁剪虛擬平面一側的圖元,並顯示網格 內部 。 下圖示范效果。 左側會顯示原始網格,在右側可以查看網格內:
CutPlaneComponent
您可以藉由建立 CutPlaneComponent ,將剪下平面新增至場景。 平面的位置和方向是由元件的擁有者 實體 所決定。
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 屬性
下列屬性會在切割平面元件上公開:
Enabled
:您可以停用元件來暫時關閉切斷平面。 已停用的切割平面不會產生轉譯額外負荷,也不會計入全域剪下平面限制。Normal
:指定哪個方向 (+X,-X,+Y,-Y,+Z,-Z)作為平面正常。 這個方向相對於擁有者實體的方向。 移動和旋轉擁有者實體以取得確切的位置。FadeColor
和FadeLength
:如果 FadeColor 的 Alpha 值不是零,接近剪下平面的圖元會淡入 FadeColor 的 RGB 部分。 Alpha 色板的強度決定它會完全淡入淡出色彩,還是只淡出部分。 FadeLength 定義此淡出將發生的距離。
ObjectFilterMask
:篩選位遮罩,決定哪些幾何受到剪下平面的影響。 如需詳細資訊,請參閱下一段。
選擇性切割平面
您可以設定個別切割平面,使其只會影響特定的幾何。 下圖說明此設定在實務上的外觀:
篩選可透過 切割平面端的位遮罩與幾何上設定的第二個位遮罩之間的邏輯位遮罩比較 來運作。 如果遮罩之間的邏輯 AND
運算結果不是零,剪下平面會影響幾何。
- 剪下平面元件上的位元遮罩是透過其
ObjectFilterMask
屬性來設定 - 幾何子階層上的位元遮罩是透過 HierarchyStateOverrideComponent 設定
範例:
剪下平面篩選遮罩 | 幾何篩選遮罩 | 邏輯的結果 AND |
切割平面會影響幾何? |
---|---|---|---|
(0000 0001) == 1 | (0000 0001) == 1 | (0000 0001) == 1 | Yes |
(1111 0000) == 240 | (0001 0001) == 17 | (0001 0000) == 16 | Yes |
(0000 0001) == 1 | (0000 0010) == 2 | (0000 0000) == 0 | No |
(0000 0011) == 3 | (0000 1000) == 8 | (0000 0000) == 0 | No |
提示
將切割平面的 ObjectFilterMask
設定為 0 表示它不會影響任何幾何,因為邏輯 AND
的結果永遠不能是非 Null。 轉譯系統不會先考慮這些平面,因此這是停用個別切割平面的輕量型方法。 這些切割平面也不計入 8 個作用中平面的限制。
限制
- Azure 遠端轉譯最多支援八個 作用中切割平面 。 您可以建立更多切割平面元件,但如果您嘗試同時啟用,則會忽略啟用。 如果您想要切換哪些元件會影響場景,請先停用其他平面。
- 切割平面是純視覺特徵,不會影響空間查詢 的結果 。 如果您想要將光線投射到切開的網格中,您可以調整光線的起點以在切割平面上。 如此一來,光線就只能擊中可見部分。
效能考量
每個作用中的切割平面在轉譯期間會產生少量成本。 當不需要剪下平面時,請停用或刪除剪下平面。