Sdílet prostřednictvím


Potlačení materiálů během převodu modelů

Nastavení materiálu ve zdrojovém modelu definují materiály PBR používané rendererem. Někdy výchozí převod neposkytuje požadované výsledky a potřebujete provést změny. Další informace naleznete v tématu Mapování materiálu pro formáty modelu.

Při převodu trojúhelníkové mřížky pro použití ve službě Azure Remote Rendering můžete poskytnout soubor přepsání materiálu pro přizpůsobení způsobu převodu materiálu na základě materiálu. Pokud se soubor nazývá <modelName>. MaterialOverrides.json se nachází ve vstupním kontejneru se vstupním modelem <modelName>.<ext>, používá se jako soubor přepsání materiálu.

Soubor přepsání použitý během převodu

Jako jednoduchý příklad vezměte krabicový model, který má jeden materiál, který se nazývá Default. Jeho albedo barva musí být upravena pro použití ve vzdáleném vykreslování. V tomto případě pole . Soubor MaterialOverrides.json lze vytvořit následujícím způsobem:

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

Pole . Soubor MaterialOverrides.json se umístí do vstupního kontejneru s box.fbx, který službě převodu řekne, aby použila nová nastavení.

Barevné materiály

Model barevného materiálu popisuje neustále stínovaný povrch, který je nezávislý na osvětlení. Barevné materiály jsou užitečné například pro prostředky vytvořené algoritmy Photogrammetry. Další informace naleznete v tématu Barevné materiály. V souborech s přepsáním materiálu lze materiál deklarovat jako barevný materiál nastavením unlit na true.

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

Ignorovat specifické mapy textury

Někdy můžete chtít, aby proces převodu ignoroval konkrétní texturové mapy. K této situaci může dojít, když byl model generován nástrojem, který generuje speciální mapy, které renderer nerozumí. Například "OpacityMap" lze použít k definování jiného než neprůhlednosti nebo "NormalMap" je uložen jako "BumpMap". V druhém případě chcete ignorovat "NormalMap", což způsobí, že převaděč použít "BumpMap" jako "NormalMap".

Přidejte volanou ignoreTextureMaps vlastnost a přidejte jakoukoli mapu textury, kterou chcete ignorovat:

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

Úplný seznam map textur, které můžete ignorovat, najdete ve schématu JSON.

Použití stejných přepsání u více materiálů

Ve výchozím nastavení se položka v souboru materiálu přepíše, když název přesně odpovídá názvu materiálu. Vzhledem k tomu, že stejné přepsání by mělo platit pro více materiálů, můžete volitelně zadat regulární výraz jako název položky. nameMatching Pole má výchozí hodnotuexact, ale může být nastaveno tak, aby regex uvedlo, že položka by se měla použít pro každý odpovídající materiál. Syntaxe regulárního výrazu je stejná syntaxe jako pro JavaScript.

Tip

K dispozici jsou bezplatné weby pro testování regulárních výrazů a ladění regulárních výrazů s libovolnými řetězci.

Následující příklad ukazuje přepsání, které platí pro materiály s názvy jako Material2, Material01 a Material999.

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

Tento příklad ukazuje přepsání použité u všech materiálů:

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

Pořadí, ve kterém každý materiál najde odpovídající přepsání, je následující:

  1. Nejprve testuje přesnou shodu názvů (to znamená, že kontroluje všechna přepsání, která nameMatching chybí nebo se rovná exact).
  2. Pokud se nenajde žádné přepsání, otestuje všechna přepsání s režimem regex porovnávání názvů a použije první přepsání, které odpovídá.

Jeden materiál nikdy nedostane více než jedno přepsání, i když více regex výrazů platí pro název materiálu.

Získání informací o použitých položkách

Informační soubor zapsaný do výstupního kontejneru obsahuje informace o zadaném počtu přepsání a počtu přepsaných materiálů. Další informace naleznete v tématu Informace o převedený model.

Schéma JSON

Tady najdete úplné schéma JSON pro soubory materiálů. unlit S výjimkou a ignoreTextureMapsjsou dostupné vlastnosti podmnožinou vlastností popsaných v oddílech o barevném materiálu a modelech materiálu PBR.

{
    "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
    }
}

Další kroky