Share via


Model dönüştürme sırasında malzemeleri geçersiz kılma

Kaynak modeldeki malzeme ayarları, işleyici tarafından kullanılan PBR malzemelerini tanımlar. Bazen varsayılan dönüştürme istenen sonuçları vermez ve değişiklik yapmanız gerekir. Daha fazla bilgi için bkz . Model biçimleri için malzeme eşleme.

Üçgen bir ağ Azure Uzaktan İşleme'de kullanılmak üzere dönüştürüldüğünde, malzeme dönüştürme işleminin malzeme başına nasıl yapıldığını özelleştirmek için bir malzeme geçersiz kılma dosyası sağlayabilirsiniz. modelName> adlı <bir dosyaysa. MaterialOverrides.json, giriş modeli modelAdı>< ile giriş kapsayıcısında bulunur.<ext>, malzeme geçersiz kılma dosyası olarak kullanılır.

Dönüştürme sırasında kullanılan geçersiz kılma dosyası

Basit bir örnek olarak, adlı Defaulttek bir malzemeye sahip bir kutu modeli alın. Albedo renginin Uzaktan İşleme'de kullanılmak üzere ayarlanması gerekir. Bu durumda, bir kutu. MaterialOverrides.json dosyası aşağıdaki gibi oluşturulabilir:

[
    {
        "name": "Default",
        "albedoColor": {
            "r": 0.33,
            "g": 0.33,
            "b": 0.33,
            "a": 1.0
        }
    }
]

Kutu. MaterialOverrides.json dosyası, dönüştürme hizmetine yeni ayarları uygulamasını söyleyen box.fbx ile giriş kapsayıcısına yerleştirilir.

Renk malzemeleri

Renk malzemesi modeli, aydınlatmadan bağımsız, sürekli gölgeli bir yüzeyi tanımlar. Renk malzemeleri, örneğin Fotogrametri algoritmaları tarafından yapılan varlıklar için kullanışlıdır. Daha fazla bilgi için bkz . Renk malzemeleri. Malzeme geçersiz kılma dosyalarında, bir malzeme olarak ayarlanarak unlittruebir renk malzemesi olarak bildirilebilir.

[
    {
        "name": "Photogrametry_mat1",
        "unlit" : true
    },
    {
        "name": "Photogrametry_mat2",
        "unlit" : true
    }
]

Belirli doku haritalarını yoksay

Bazen dönüştürme işleminin belirli doku haritalarını yoksaymasını isteyebilirsiniz. Modeliniz işleyici tarafından anlaşılmayan özel haritalar oluşturan bir araç tarafından oluşturulduğunda bu durum ortaya çıkabilir. Örneğin, opaklık dışında bir şeyi tanımlamak için "OpacityMap" kullanılabilir veya "NormalMap" "BumpMap" olarak depolanır. İkinci durumda, dönüştürücüde "NormalMap" olarak "BumpMap" kullanılmasına neden olan "NormalMap"i yoksaymak istiyorsunuz.

adlı ignoreTextureMaps bir özellik ekleyin ve yoksaymak istediğiniz doku eşlemelerini ekleyin:

[
    {
        "name": "Default",
        "ignoreTextureMaps": ["OpacityMap", "NormalMap"]
    }
]

Yoksayabileceğiniz doku eşlemelerinin tam listesi için bkz . JSON şeması.

Aynı geçersiz kılmaları birden çok malzemeye uygulama

Varsayılan olarak, malzeme dosyasındaki bir girdi, adı malzeme adıyla tam olarak eşleştiğinde uygulanır. Aynı geçersiz kılmanın birden çok malzeme için geçerli olması yaygın olduğundan, isteğe bağlı olarak giriş adı olarak normal bir ifade sağlayabilirsiniz. Alanın nameMatching varsayılan değeri exactvardır, ancak girişin eşleşen her malzemeye uygulanacağını belirtecek şekilde ayarlanabilir regex . Regex söz dizimi JavaScript için kullanılan söz dizimi ile aynıdır.

Bahşiş

Rastgele dizelerde normal ifadeyi test etmek ve hatalarını ayıklamak için ücretsiz regex test web siteleri vardır.

Aşağıdaki örnekte, Material01 ve Material999gibi Material2adlara sahip malzemeler için geçerli olan bir geçersiz kılma gösterilmektedir.

[
    {
        "name": "Material[0-9]+",
        "nameMatching": "regex",
        "albedoColor": {
            "r": 0.0,
            "g": 0.0,
            "b": 1.0,
            "a": 1.0
        }
    }
]

Bu örnekte tüm malzemelere uygulanan bir geçersiz kılma gösterilmektedir:

[
    {
        "name": ".*",
        "nameMatching": "regex",
        "albedoColor": {
            "r": 0.0,
            "g": 0.0,
            "b": 1.0,
            "a": 1.0
        }
    }
]

Her malzemenin eşleşen geçersiz kılmayı bulma sırası aşağıdaki gibidir:

  1. İlk olarak, tam ad eşleşmesini test eder (yani, eksik veya eşit olduğunda nameMatching tüm geçersiz kılmaları exactdenetler).
  2. Geçersiz kılma bulunmazsa, ad eşleştirme moduyla regex tüm geçersiz kılmaları test eder ve eşleşen ilk geçersiz kılmayı kullanır.

Tek bir malzeme, malzeme adına birden çok ifade uygulansa bile hiçbir zaman birden fazla regex geçersiz kılma uygulanmaz.

Hangi girişlerin uygulandığı hakkında bilgi alma

Çıkış kapsayıcısına yazılan bilgi dosyası, sağlanan geçersiz kılma sayısı ve geçersiz kılınan malzeme sayısı hakkında bilgi taşır. Daha fazla bilgi için bkz . Dönüştürülen model hakkındaki bilgiler.

JSON şeması

Malzeme dosyaları için tam JSON şeması burada verilmiştir. unlit ve ignoreTextureMapsdışında, kullanılabilir özellikler, renk malzemesi ve PBR malzeme modellerindeki bölümlerde açıklanan özelliklerin bir alt kümesidir.

{
    "definitions" :
    {
        "color":
        {
            "type" : "object",
            "description" : "Color as 4 components vector",
            "properties":
            {
                "r": {"type":"number"},
                "g": {"type":"number"},
                "b": {"type":"number"},
                "a": {"type":"number"}
            },
            "required": ["r", "g", "b"]
        },
        "alpha":
        {
            "type" : "object",
            "description" : "Alpha channel for color",
            "properties":
            {
                "a": {"type":"number"}
            },
            "required": ["a"]
        },
        "colorOrAlpha":
        {
            "anyOf": [
                {"$ref": "#/definitions/color"},
                {"$ref": "#/definitions/alpha"}
            ]
        },
        "listOfMaps":
        {
            "type": "array",
            "items": {
                "type": "string",
                "enum": ["AlbedoMap",
                            "EmissiveMap",
                            "NormalMap",
                            "OcclusionMap",
                            "RoughnessMap",
                            "MetalnessMap",
                            "ReflectivityMap",
                            "BumpMap",
                            "OpacityMap",
                            "DiffuseMap",
                            "SpecularMap",
                            "ShininessMap",
                            "MetallicRoughnessMap",
                            "SpecularGlossinessMap"]
            }
        }
    },
    "type" : "array",
    "description" : "List of materials to override",
    "items":
    {
        "type" : "object",
        "description" : "List of parameters to override",
        "properties":
        {
            "name": { "type" : "string"},
            "nameMatching" : { "type" : "string", "enum" : ["exact", "regex"] },
            "unlit": { "type" : "boolean" },
            "albedoColor": { "$ref": "#/definitions/colorOrAlpha" },
            "roughness": { "type": "number" },
            "metalness": { "type": "number" },
            "normalMapScale": { "type": "number" },
            "transparent": { "type" : "boolean" },
            "alphaClipEnabled": { "type" : "boolean" },
            "alphaClipThreshold": { "type": "number" },
            "useVertexColor": { "type" : "boolean" },
            "isDoubleSided": { "type" : "boolean" },
            "ignoreTextureMaps": { "$ref" : "#/definitions/listOfMaps" },
            "transparencyWritesDepth": {"type" : "boolean" }
        },
        "required": ["name"],
        "additionalProperties" : false
    }
}

Sonraki adımlar