切断面Cut planes

切断面は、仮想的な平面の片方のピクセルをクリップし、メッシュの内部を表示する視覚機能です。A cut plane is a visual feature that clips pixels on one side of a virtual plane, revealing the inside of meshes. 下の図は、効果を示しています。The image below demonstrates the effect. 左側には元のメッシュ、右側にはメッシュの内側が表示されています。The left shows the original mesh, on the right one can look inside the mesh:

切断面

制限事項Limitations

  • 現時点では、Azure Remote Rendering では、最大 8 つのアクティブな切断面がサポートされています。For the time being, Azure Remote Rendering supports a maximum of eight active cut planes. さらに多くの切断面のコンポーネントを作成することもできますが、より多くを同時に有効にしようとすると、アクティブ化が無視されます。You may create more cut plane components, but if you try to enable more simultaneously, it will ignore the activation. シーンに影響を与えるコンポーネントを切り替えたい場合は、最初に他のプレーンを無効にします。Disable other planes first if you want to switch which component should affect the scene.
  • 各切断面は、リモートでレンダリングされるすべてのオブジェクトに影響します。Each cut plane affects all remotely rendered objects. 現在、特定のオブジェクトまたはメッシュ パーツを除外する方法はありません。There is currently no way to exclude specific objects or mesh parts.
  • 切断面は純粋に単なる視覚機能であり、空間クエリの結果には影響しません。Cut planes are purely a visual feature, they don't affect the outcome of spatial queries. 切り開かれたメッシュにレイ キャストする場合は、射線の開始点を、切断面上に配置するように調整します。If you do want to ray cast into a cut-open mesh, you can adjust the starting point of the ray to be on the cut plane. このようにすることで、射線を表示されている部分にのみ当てることができます。This way the ray can only hit visible parts.

パフォーマンスに関する考慮事項Performance considerations

アクティブな各切断面により、レンダリング中にわずかなコストが発生します。Each active cut plane incurs a small cost during rendering. 不要になった切断面は、無効化または削除します。Disable or delete cut planes when they aren't needed.

CutPlaneComponentCutPlaneComponent

CutPlaneComponent を作成して、シーンに切断面を追加します。You add a cut plane to the scene by creating a CutPlaneComponent. 平面の位置と向きは、コンポーネントの所有者エンティティによって決まります。The location and orientation of the plane is determined by the component's owner entity.

void CreateCutPlane(AzureSession session, Entity ownerEntity)
{
    CutPlaneComponent cutPlane = (CutPlaneComponent)session.Actions.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<AzureSession> session, ApiHandle<Entity> ownerEntity)
{
    ApiHandle<CutPlaneComponent> cutPlane = session->Actions()->CreateComponent(ObjectType::CutPlaneComponent, ownerEntity)->as<CutPlaneComponent>();;
    cutPlane->Normal(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->FadeColor(fadeColor);
    cutPlane->FadeLength(0.05f); // gradient width: 5cm
}

CutPlaneComponent のプロパティCutPlaneComponent properties

次のプロパティは、切断面コンポーネントで公開されます。The following properties are exposed on a cut plane component:

  • 有効: コンポーネントを無効にすることで、切断面を一時的にオフにすることができます。Enabled: You can temporarily switch off cut planes by disabling the component. 無効化された切断面は、レンダリング オーバーヘッドを発生させず、グローバルな切断面の制限にもカウントされません。Disabled cut planes don't incur rendering overhead and also don't count against the global cut plane limit.

  • Normal: 面法線として使用される方向 (+X、-X、+Y、-Y、+Z、-Z) を指定します。Normal: Specifies which direction (+X,-X,+Y,-Y,+Z,-Z) is used as the plane normal. この方向は、所有者のエンティティの向きに対して相対的です。This direction is relative to the owner entity's orientation. 正確に配置するため、所有者エンティティを移動および回転します。Move and rotate the owner entity for exact placement.

  • FadeColorFadeLength:FadeColor and FadeLength:

    FadeColor のアルファ値が 0 以外の場合、切断面に近いピクセルは、FadeColor の RGB 部分の色へフェードします。If the alpha value of FadeColor is non-zero, pixels close to the cut plane will fade towards the RGB part of FadeColor. アルファ チャネルの強度によって、フェードの色に完全にフェードするか、部分的にフェードするかが決まります。The strength of the alpha channel determines whether it will fade fully towards the fade color or only partially. このフェードが行われる距離は、FadeLength によって定義されます。FadeLength defines over which distance this fade will take place.

次のステップNext steps