Aracılığıyla paylaş


Hiyerarşik durumu geçersiz kılma

Çoğu durumda, bir modelin parçalarının görünümünü dinamik olarak değiştirmek gerekir; örneğin alt grafikleri gizleme veya parçaları saydam işlemeye geçirme. Sahne grafiğinin tamamı üzerinde yineleme yapılması ve her düğümde malzeme kopyalama ve atamayı yönetmesi gerektiğinden, ilgili her bölümün malzemelerini değiştirmek pratik değildir.

Bu kullanım örneğini mümkün olan en az ek yükle gerçekleştirmek için kullanın HierarchicalStateOverrideComponent. Bu bileşen, sahne grafiğinin rastgele dallarında hiyerarşik durum güncelleştirmeleri uygular. Başka bir deyişle, bir durum sahne grafiğindeki herhangi bir düzeyde tanımlanabilir ve yeni bir durum tarafından geçersiz kılınana veya yaprak nesneye uygulanana kadar hiyerarşiyi aşağı doğru kaydırır.

Örnek olarak, bir arabanın modelini düşünün ve iç motor kısmı dışında tüm otomobili şeffaf olacak şekilde değiştirmek istiyorsunuz. Bu kullanım örneği, bileşenin yalnızca iki örneğini içerir:

  • İlk bileşen modelin kök düğümüne atanır ve tüm araba için saydam işlemeyi açar.
  • İkinci bileşen, altyapının kök düğümüne atanır ve gözden geçir modunu açıkça kapatarak durumu yeniden geçersiz kılar.

Not

Nokta bulutları tam bir sahne grafiğini kullanıma sunmaz (bkz . ağ türü farklılıkları), bu nedenle bir nokta bulut modelinin kök varlığına hiyerarşik geçersiz kılma atamak durumu tam nokta buluta uygular. Ayrıca, ilgili bölümde belirtildiği gibi bazı durum geçersiz kılma özellikleri nokta bulutları için desteklenmez.

Özellikler

Geçersiz kılınabilecek sabit durum kümesi şunlardır:

  • Hidden: Sahne grafiğindeki ilgili tireler gizlenir veya gösterilir.

  • Tint color: İşlenen bir nesne, ayrı renk tonu rengi ve renk tonu ağırlığıyla renk tonuyla renklendirilebilir. Aşağıdaki resimde bir tekerleğin jantının renk tonu gösterilmektedir.

    Nesneyi yeşile dönüştürmek için kullanılan renk tonu rengi

  • See-through: Geometri, örneğin bir nesnenin iç kısımlarını ortaya çıkarmak için yarı saydam olarak işlenir. Aşağıdaki görüntüde, kırmızı fren kalibresi dışında aracın tamamının gözden geçirilme modunda işlendiği gösterilmektedir:

    Seçili nesneleri saydam hale getirmek için kullanılan geçiş modu

    Önemli

    Geçiş efekti yalnızca TileBasedComposition işleme modu kullanıldığında çalışır.

    Not

    Nokta bulutları için gözden geçir efekti yoksayılır.

  • Shell: Geometri saydam, doygun olmayan bir kabuk olarak işlenir. Bu mod, bir sahnenin önemli olmayan bölümlerinin soluk olmasına ve şekil ve göreli konumlama hissini korumaya devam etmesine olanak tanır. Kabuk işlemenin görünümünü değiştirmek için ShellRenderingSettings durumunu kullanın. Mavi yaylar dışında tamamen kabuk işlemeli olan araba modeli için aşağıdaki görüntüye bakın:

    Belirli nesneleri soluk almak için kullanılan kabuk modu

    Önemli

    Kabuk efekti yalnızca TileBasedComposition işleme modu kullanıldığında çalışır.

    Not

    Kabuk efekti nokta bulutları için yoksayılır.

  • Selected: Geometri bir seçim ana hattıyla işlenir.

    Seçili bölümü vurgulamak için kullanılan ana hat seçeneği

    Not

    Nokta bulutları için seçim ana hat işlemesi yoksayılır.

  • DisableCollision: Geometri uzamsal sorgulardan muaftır. Bayrak Hidden , çarpışma durumu bayrağını etkilemez, bu nedenle bu iki bayrak genellikle birlikte ayarlanır.

  • TransparencyWritesDepth: Bileşenin varlığının sahne ağacında derinlik yazısını See-through ve malzeme saydamlıklarını etkinleştirir. Saydamlıklar, bu bayrağı kullanarak, See-through genel olarak zorlanmış olsa TransparencyWritesDepth bile bir alt ağaçta derinlik yazma özelliğini etkinleştirebilir veya devre dışı bırakabilir. Malzeme saydamlığı için bayrak kapsayıcı bir şekilde davranır; başka bir deyişle, geçersiz kılma, genel olarak zorlamalı veya malzemenin bayrakları aracılığıyla etkinleştirilirse TransparencyWritesDepth , bu malzemeyle işlenen nesneler için derinlik yazma etkinleştirilir.

  • UseCutPlaneFilterMask: Kesme düzlemi seçimini denetlemek için tek bir filtre bit maskesi kullanın. Bu bayrak, tek tek filtre maskesinin kullanılması mı yoksa üst öğesinden devralınması mı gerektiğini belirler. Filtre bit maskesinin kendisi özelliği aracılığıyla CutPlaneFilterMask ayarlanır. Filtrelemenin nasıl çalıştığı hakkında ayrıntılı bilgi için Seçmeli kesme düzlemleri paragrafına bakın. Sahnenin geri kalanı etkilenmeden kalırken yalnızca lastiğin ve jantın kesildiği aşağıdaki örniğe bakın. Seçmeli kesme düzlemleri

  • UseOverrideMaterial: Etkinleştirilirse, içinde OverrideMaterial depolanan malzeme geometriyi bu malzemeyle işlemek için kullanılır. Büyük model parçalarının işlenmesini, ayrı ayrı parça malzemelerini değiştirmeden ayrılmış bir malzemeye geçirmenin verimli bir yoludur. Renk malzemeleri PBR malzemelerini geçersiz kılabilir ve bunun tersi de geçerlidir. Ancak, modelin zorunlu köşe akışları sağladığı garanti edilmelidir; örneğin, geçersiz kılınan malzeme bir PBR malzemesi olması durumunda köşe normaldir. Ayrıca, saydamlığı etkinleştiren geçersiz kılmalar yalnızca TileBasedComposition işleme modunda güvenilir bir şekilde çalışır.

    Not

    Geçersiz kılma malzemesi nokta bulutları için yoksayılır.

İpucu

Tam alt grafik için görünürlüğü ve uzamsal sorguları kapatmaya alternatif olarak, enabled oyun nesnesinin durumu değiştirilebilir. Hiyerarşi devre dışı bırakılırsa, bunun herhangi bir HierarchicalStateOverrideComponentyerine tercihi vardır.

Hiyerarşik geçersiz kılmalar

bir HierarchicalStateOverrideComponent nesne hiyerarşisinin birden çok düzeyine eklenebilir. Bir varlıkta her türün yalnızca bir bileşeni olabileceğinden, her HierarchicalStateOverrideComponent biri gizli, geçişli, seçili, renk tonu ve çarpışma durumlarını yönetir.

Bu nedenle her durum aşağıdakilerden birine ayarlanabilir:

  • ForceOn - durum, bu düğümün üzerindeki ve altındaki tüm meshler için etkinleştirilir
  • ForceOff - bu düğümdeki ve altındaki tüm tireler için durum devre dışı bırakıldı
  • InheritFromParent - durum bu geçersiz kılma bileşeninden etkilenmez

Durumları doğrudan veya işlev aracılığıyla SetState değiştirebilirsiniz:

HierarchicalStateOverrideComponent component = ...;

// set one state directly
component.HiddenState = HierarchicalEnableState.ForceOn;

// set a state with the SetState function
component.SetState(HierarchicalStates.SeeThrough, HierarchicalEnableState.InheritFromParent);

// set multiple states at once with the SetState function
component.SetState(HierarchicalStates.Hidden | HierarchicalStates.DisableCollision, HierarchicalEnableState.ForceOff);
ApiHandle<HierarchicalStateOverrideComponent> component = ...;

// set one state directly
component->SetHiddenState(HierarchicalEnableState::ForceOn);

// or: set a state with the SetState function
component->SetState(HierarchicalStates::SeeThrough, HierarchicalEnableState::InheritFromParent);

// set multiple states at once with the SetState function
component->SetState(
    (HierarchicalStates)((int32_t)HierarchicalStates::Hidden | (int32_t)HierarchicalStates::DisableCollision), HierarchicalEnableState::ForceOff);

Renk tonu rengi

Geçersiz tint color kılma, hem açma/kapatma/devralma durumu hem de renk tonu renk özelliği olması için biraz özeldir. Renk tonu renginin alfa kısmı renk tonu efektinin kalınlığını tanımlar: 0,0 olarak ayarlanırsa, renk tonu rengi görünmez ve 1,0 olarak ayarlanırsa nesne saf renk tonu rengiyle işlenir. Aradaki değerler için, son renk ton rengiyle karıştırılır. Renk tonu rengi, renk animasyonu elde etmek için kare başına temelinde değiştirilebilir.

Performans değerlendirmeleri

Kendi örneği HierarchicalStateOverrideComponent çok fazla çalışma zamanı yükü eklemez. Ancak, etkin bileşen sayısını düşük tutmak her zaman iyi bir uygulamadır. Örneğin, seçilen nesneyi vurgulayan bir seçim sistemi uygulanırken, vurgu kaldırıldığında bileşenin silinmesi önerilir. Bileşenleri nötr özelliklerle çevreleyin, hızlı bir şekilde eklenebilir.

Saydam işleme, sunucunun GPU'larına standart işlemeden daha fazla iş yükü getirir. Sahne grafiğinin büyük bölümleri, geometrinin birçok katmanının görünür olduğu bir şekilde gözden geçirilirse performans sorununa neden olabilir. Aynı durum, seçim ana hatları olan nesneler ve kabuk işleme için de geçerlidir.

API belgeleri

Sonraki adımlar