Aracılığıyla paylaş


Malzemeler

Malzemeler, üçgen tirelerin nasıl işlendiğini tanımlayan paylaşılan kaynaklardır. Öte yandan nokta bulutları malzemeleri hiçbir şekilde açığa çıkarmaz.

Malzemeler belirtmek için kullanılır

  • uygulanacak dokular ,
  • nesnelerin saydam yapılıp yapılmayacağını,
  • aydınlatmanın yüzeyle nasıl etkileşime geçtiğini.

Malzemeler model dönüştürme sırasında otomatik olarak oluşturulur ve çalışma zamanında erişilebilir. Ayrıca koddan özel malzemeler oluşturabilir ve mevcut malzemeleri değiştirebilirsiniz. Bu senaryo, aynı malzemeyi birçok kafeste paylaşmak istiyorsanız özellikle mantıklıdır. Bir malzemenin değişiklikleri ona başvuran her ağ üzerinde görünür olduğundan, değişiklikleri kolayca uygulamak için bu yöntem kullanılabilir.

Not

Seçilen bir nesneyi vurgulama gibi bazı kullanım örnekleri malzemeleri değiştirerek yapılabilir, ancak HierarchicalStateOverrideComponent aracılığıyla çok daha kolaydır.

Malzeme türleri

Azure Remote Rendering iki farklı malzeme türüne sahiptir:

  • PBR malzemeleri , mümkün olduğunca fiziksel olarak doğru işlenmesi gereken yüzeyler için kullanılır. Gerçekçi aydınlatma, fiziksel tabanlı işleme (PBR) kullanılarak bu malzemeler için hesaplanır. Bu malzeme türünden en iyi şekilde yararlanmak için pürüzlülük ve normal haritalar gibi yüksek kaliteli giriş verileri sağlamak önemlidir.

  • Ekstra aydınlatmanın istendiği durumlarda renk malzemeleri kullanılır. Bu malzemeler her zaman tamamen parlaktır ve kurulumu daha kolaydır. Renk malzemeleri, hiç aydınlatması olmaması gereken veya fotogrametri aracılığıyla elde edilen modeller gibi statik aydınlatmayı zaten içeren veriler için kullanılır.

Mesh ve MeshComponent malzeme ataması karşılaştırması

Üçgen Tireler bir veya daha fazla alt çizgiye sahiptir. Her alt iş bir malzemeye başvurur. Malzemeyi doğrudan mesh üzerinde kullanılacak şekilde değiştirebilir veya MeshComponent'te alt iş için kullanılacak malzemeyi geçersiz kılabilirsiniz.

Bir malzemeyi doğrudan mesh kaynağında değiştirdiğinizde, bu değişiklik bu ağın tüm örneklerini etkiler. Ancak MeshComponent'te değiştirilmesi yalnızca bir mesh örneğini etkiler. Hangi yöntemin daha uygun olduğu istenen davranışa bağlıdır, ancak bir MeshComponent'i değiştirmek daha yaygın bir yaklaşımdır.

Malzeme yinelenenleri kaldırma

Aynı özelliklere ve dokulara sahip birden çok malzeme dönüştürme sırasında otomatik olarak tek bir malzemede çoğaltılır. Dönüştürme ayarlarında bu özelliği devre dışı bırakabilirsiniz, ancak en iyi performans için bu özelliği açık bırakmanızı öneririz.

Malzeme sınıfları

API tarafından sağlanan tüm malzemeler temel sınıfından Materialtüretilir. Türleri doğrudan atılarak veya aracılığıyla sorgulanabilir Material.MaterialSubType :

void SetMaterialColorToGreen(Material material)
{
    if (material.MaterialSubType == MaterialType.Color)
    {
        ColorMaterial colorMaterial = material as ColorMaterial;
        colorMaterial.AlbedoColor = new Color4(0, 1, 0, 1);
        return;
    }

    PbrMaterial pbrMat = material as PbrMaterial;
    if (pbrMat != null)
    {
        pbrMat.AlbedoColor = new Color4(0, 1, 0, 1);
        return;
    }
}
void SetMaterialColorToGreen(ApiHandle<Material> material)
{
    if (material->GetMaterialSubType() == MaterialType::Color)
    {
        ApiHandle<ColorMaterial> colorMaterial = material.as<ColorMaterial>();
        colorMaterial->SetAlbedoColor({ 0, 1, 0, 1 });
        return;
    }

    if (material->GetMaterialSubType() == MaterialType::Pbr)
    {
        ApiHandle<PbrMaterial> pbrMat = material.as<PbrMaterial>();
        pbrMat->SetAlbedoColor({ 0, 1, 0, 1 });
        return;
    }
}

API belgeleri

Sonraki adımlar