Dela via


Åsidosätta material under modellkonverteringen

Materialinställningarna i källmodellen definierar pbr-materialen som används av återgivningen. Ibland ger standardkonverteringen inte önskat resultat och du måste göra ändringar. Mer information finns i Materialmappning för modellformat.

När ett trekantigt nät konverteras för användning i Azure Remote Rendering kan du tillhandahålla en material åsidosättningsfil för att anpassa hur materialkonvertering görs per material. Om en fil med namnet <modelName>. MaterialOverrides.json finns i indatacontainern med indatamodellen <modelName>.<ext> används den som material åsidosättningsfil.

Åsidosättningsfilen som användes under konverteringen

Som ett enkelt exempel kan du ta en lådmodell som har ett enda material som kallas Default. Dess albedofärg måste justeras för användning i Fjärrrendering. I det här fallet en ruta. MaterialOverrides.json-filen kan skapas på följande sätt:

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

Lådan . Filen MaterialOverrides.json placeras i indatacontainern med box.fbx, som instruerar konverteringstjänsten att tillämpa de nya inställningarna.

Färgmaterial

Färgmaterialmodellen beskriver en ständigt skuggad yta som är oberoende av belysning. Färgmaterial är till exempel användbara för tillgångar som tillverkas av Photogrammetry-algoritmer. Mer information finns i Färgmaterial. I material åsidosättningsfiler kan ett material deklareras som ett färgmaterial genom att ange unlit till true.

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

Ignorera specifika strukturkartor

Ibland kanske du vill att konverteringsprocessen ska ignorera specifika strukturkartor. Den här situationen kan inträffa när din modell genererades av ett verktyg som genererar särskilda kartor som inte tolkas av renderaren. Till exempel kan en "OpacityMap" användas för att definiera något annat än opacitet, eller så lagras "NormalMap" som "BumpMap". I det senare fallet vill du ignorera "NormalMap", vilket gör att konverteraren använder "BumpMap" som "NormalMap".

Lägg till en egenskap med namnet ignoreTextureMaps och lägg till valfri strukturkarta som du vill ignorera:

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

Den fullständiga listan över texturkartor som du kan ignorera finns i JSON-schemat.

Tillämpa samma åsidosättningar på flera material

Som standard gäller en post i materialet som åsidosätter filen när namnet matchar materialnamnet exakt. Eftersom det är vanligt att samma åsidosättning ska gälla för flera material kan du ange ett reguljärt uttryck som postnamn. Fältet nameMatching har ett standardvärde exact, men det kan anges till regex att ange att posten ska gälla för varje matchande material. Syntaxen för regex är samma syntax som används för JavaScript.

Dricks

Det finns kostnadsfria regex-testwebbplatser tillgängliga för att testa och felsöka ett reguljärt uttryck mot godtyckliga strängar.

I följande exempel visas en åsidosättning som gäller för material med namn som Material2, Material01 och Material999.

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

Det här exemplet visar en åsidosättning som tillämpas på allt material:

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

Ordningen i vilken varje material hittar en matchande åsidosättning är följande:

  1. För det första testas för exakt namnmatchning (dvs. kontrollerar den alla åsidosättningar där nameMatching saknas eller är lika med exact).
  2. Om ingen åsidosättning hittas testar den alla åsidosättningar med regex namnmatchningsläge och använder den första åsidosättningen som matchar.

Ett enskilt material får aldrig mer än en åsidosättning tillämpad, även om flera regex uttryck gäller för materialnamnet.

Hämta information om vilka poster som tillämpas

Informationsfilen som skrivits till utdatacontainern innehåller information om antalet åsidosättningar som angetts och antalet material som åsidosätts. Mer information finns i Information om en konverterad modell.

JSON-schema

Det fullständiga JSON-schemat för materialfiler finns här. unlit Förutom och ignoreTextureMapsär de tillgängliga egenskaperna en delmängd av egenskaperna som beskrivs i avsnitten i färgmaterialet och PBR-materialmodellerna.

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

Nästa steg