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:
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
danFadeLength
: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:
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.