Bagikan melalui


Bidang potong

Bidang potong adalah fitur visual yang memotong piksel di satu sisi bidang virtual, mengungkapkan bagian dalam dari meshes. Gambar di bawah ini menunjukkan efeknya. Pada bagian kiri menunjukkan jaring asli, sedangkan di sebelah kanan dapat melihat ke dalam jaring:

Cut plane

CutPlaneComponent

Anda menambahkan bidang potong ke tempat kejadian dengan membuat CutPlaneComponent. Lokasi dan orientasi bidang ditentukan oleh entitas pemilik komponen.

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
}

Properti CutPlaneComponent

Properti berikut ini diekspos pada komponen bidang yang dipotong:

  • Enabled: Anda dapat mematikan sementara bidang yang dipotong dengan menonaktifkan komponen. Bidang potong yang dinonaktifkan tidak dikenakan biaya penyajian dan juga tidak dihitung terhadap batas bidang potong global.

  • Normal: Menentukan arah mana (+X,-X,+Y,-Y,+Z,-Z) digunakan sebagai bidang normal. Arah ini relatif terhadap orientasi entitas pemilik. Memindahkan dan memutar entitas pemilik untuk penempatan yang tepat.

  • FadeColor dan FadeLength:

    Jika nilai alfa dari FadeColor bukan nol, piksel yang dekat dengan bidang potong akan memudar ke bagian RGB FadeColor. Kekuatan saluran alfa menentukan baik itu akan memudar sepenuhnya ke arah warna pudar atau hanya sebagian. FadeLength menentukan pada jarak mana pudar ini akan terjadi.

  • ObjectFilterMask: Masker bit filter yang menentukan geometri mana yang terpengaruh oleh bidang pemotongan. Lihat paragraf berikutnya untuk informasi mendetail.

Bidang potong selektif

Dimungkinkan untuk mengkonfigurasi bidang potong individu sehingga mereka hanya mempengaruhi geometri tertentu. Gambar berikut ini menggambarkan bagaimana pengaturan ini mungkin terlihat dalam praktik:

Selective cut planes

Filter bekerja melalui perbandingan masker bit logis antara sedikit masker di sisi pesawat yang dipotong dan masker bit kedua yang diatur pada geometri. Jika hasil operasi logis AND antara masker bukan nol, bidang yang dipotong akan mempengaruhi geometri.

  • Masker bit pada komponen bidang yang dipotong diatur melalui properti ObjectFilterMask
  • Masker bit pada sub hierarki geometri diatur melalui HierarchicalStateOverrideComponent

Contoh:

Potong masker filter bidang Masker filter geometri Hasil logika AND Memotong bidang mempengaruhi geometri?
(0000 0001) == 1 (0000 0001) == 1 (0000 0001) == 1 Ya
(1111 0000) == 240 (0001 0001) == 17 (0001 0000) == 16 Ya
(0000 0001) == 1 (0000 0010) == 2 (0000 0000) == 0 Tidak
(0000 0011) == 3 (0000 1000) == 8 (0000 0000) == 0 Tidak

Tip

Mengatur ObjectFilterMask bidang potong ke 0 berarti tidak akan memengaruhi geometri apa pun karena hasil AND logis tidak pernah bisa non-null. Sistem penyajian tidak akan mempertimbangkan bidang-bidang tersebut di tempat pertama, jadi ini adalah metode ringan untuk menonaktifkan bidang potong individu. Bidang yang dipotong ini juga tidak dihitung dalam batas 8 bidang aktif.

Batasan

  • Azure Remote Rendering mendukung maksimal delapan bidang potong aktif. Anda dapat membuat lebih banyak komponen bidang yang dipotong, tetapi jika Anda mencoba untuk mengaktifkan lebih bersamaan, itu akan mengabaikan aktivasi. Nonaktifkan bidang lain terlebih dahulu jika Anda ingin beralih komponen mana yang akan mempengaruhi scene.
  • Bidang potong adalah fitur visual murni, mereka tidak mempengaruhi hasil kueri spasial. Jika Anda ingin mentransmisikan sinar ke dalam jala yang terbuka, Anda dapat menyesuaikan titik awal sinar berada di bidang yang dipotong. Dengan cara ini sinar hanya dapat mengenai bagian yang terlihat.

Pertimbangan performa

Setiap bidang potong aktif dikenakan biaya kecil selama penyajian. Nonaktifkan atau hapus bidang dipotong saat tidak diperlukan.

Dokumentasi API

Langkah berikutnya