Å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:
- För det första testas för exakt namnmatchning (dvs. kontrollerar den alla åsidosättningar där
nameMatching
saknas eller är lika medexact
). - 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
}
}