Materialen overschrijven tijden modelconversie
De materiaalinstellingen in het bronmodel definiëren de PBR-materialen die door de renderer worden gebruikt. Soms geeft de standaardconversie niet de gewenste resultaten en moet u wijzigingen aanbrengen. Zie Materiaaltoewijzing voor modelindelingen voor meer informatie.
Wanneer een driehoekige mesh wordt geconverteerd voor gebruik in Azure Remote Rendering, kunt u een materiaaloverschrijvingsbestand opgeven om aan te passen hoe materiaalconversie per materiaal wordt uitgevoerd. Als een bestand met de naam <modelName>. MaterialOverrides.json vindt u in de invoercontainer met de modelnaam> van het invoermodel<.<ext>, het wordt gebruikt als het materiaal onderdrukkingsbestand.
Het onderdrukkingsbestand dat tijdens de conversie wordt gebruikt
Neem als eenvoudig voorbeeld een vakmodel met één materiaal, genaamd Default
.
De albedo-kleur moet worden aangepast voor gebruik in Remote Rendering.
In dit geval een doos. MaterialOverrides.json-bestand kan als volgt worden gemaakt:
[
{
"name": "Default",
"albedoColor": {
"r": 0.33,
"g": 0.33,
"b": 0.33,
"a": 1.0
}
}
]
De doos. MaterialOverrides.json-bestand wordt in de invoercontainer geplaatst met box.fbx, waarmee de conversieservice de nieuwe instellingen moet toepassen.
Kleurmaterialen
Het kleurenmateriaalmodel beschrijft een voortdurend gearceerd oppervlak dat onafhankelijk is van verlichting.
Kleurmaterialen zijn bijvoorbeeld handig voor assets die zijn gemaakt door Photogrammetry-algoritmen. Zie Kleurmaterialen voor meer informatie.
In materiaaloverschrijven bestanden kan een materiaal worden gedeclareerd als een kleurmateriaal door in te stellen unlit
op true
.
[
{
"name": "Photogrametry_mat1",
"unlit" : true
},
{
"name": "Photogrametry_mat2",
"unlit" : true
}
]
Specifieke patroontoewijzingen negeren
Soms wilt u dat het conversieproces specifieke patroontoewijzingen negeert. Deze situatie kan optreden wanneer uw model is gegenereerd door een hulpprogramma dat speciale kaarten genereert die niet worden begrepen door de renderer. Een 'OpacityMap' kan bijvoorbeeld worden gebruikt om iets anders te definiëren dan dekking, of de 'NormalMap' wordt opgeslagen als 'BumpMap'. In het laatste geval wilt u 'NormalMap' negeren, waardoor het conversieprogramma 'BumpMap' als 'NormalMap' gebruikt.
Voeg een eigenschap toe met de naam ignoreTextureMaps
en voeg een patroonkaart toe die u wilt negeren:
[
{
"name": "Default",
"ignoreTextureMaps": ["OpacityMap", "NormalMap"]
}
]
Zie het JSON-schema voor de volledige lijst met patroontoewijzingen die u kunt negeren.
Dezelfde onderdrukkingen toepassen op meerdere materialen
Standaard is een vermelding in het materiaaloverschrijvingsbestand van toepassing wanneer de naam exact overeenkomt met de materiaalnaam.
Aangezien het gebruikelijk is dat dezelfde onderdrukking moet worden toegepast op meerdere materialen, kunt u desgewenst een reguliere expressie opgeven als de naam van het item.
Het veld nameMatching
heeft een standaardwaarde exact
, maar kan worden ingesteld op regex
de status dat de vermelding moet worden toegepast op elk overeenkomend materiaal.
De syntaxis van de regex is dezelfde syntaxis die wordt gebruikt voor JavaScript.
Fooi
Er zijn gratis regex-testwebsites beschikbaar om een reguliere expressie te testen en fouten op te sporen op basis van willekeurige tekenreeksen.
In het volgende voorbeeld ziet u een onderdrukking die van toepassing is op materialen met namen zoals Material2
, Material01
en Material999
.
[
{
"name": "Material[0-9]+",
"nameMatching": "regex",
"albedoColor": {
"r": 0.0,
"g": 0.0,
"b": 1.0,
"a": 1.0
}
}
]
In dit voorbeeld ziet u een onderdrukking die wordt toegepast op alle materialen:
[
{
"name": ".*",
"nameMatching": "regex",
"albedoColor": {
"r": 0.0,
"g": 0.0,
"b": 1.0,
"a": 1.0
}
}
]
De volgorde waarin elk materiaal een overeenkomende onderdrukking vindt, is als volgt:
- Eerst wordt getest op exacte naamovereenkomst (dat wil zeggen, het controleert alle onderdrukkingen waar
nameMatching
afwezig of gelijk is aan).exact
- Als er geen onderdrukking wordt gevonden, worden alle onderdrukkingen getest met
regex
de naamkoppelingsmodus en wordt de eerste onderdrukking gebruikt die overeenkomt.
Eén materiaal wordt nooit meer dan één onderdrukking toegepast, zelfs als meerdere regex
expressies van toepassing zijn op de materiaalnaam.
Informatie ophalen over welke vermeldingen zijn toegepast
Het informatiebestand dat naar de uitvoercontainer wordt geschreven, bevat informatie over het aantal opgegeven onderdrukkingen en het aantal materialen dat is overschreven. Zie Informatie over een geconverteerd model voor meer informatie.
JSON-schema
Het volledige JSON-schema voor materiaalbestanden wordt hier gegeven. unlit
Behalve en ignoreTextureMaps
zijn de beschikbare eigenschappen een subset van de eigenschappen die worden beschreven in de secties over het kleurenmateriaal en PBR-materiaalmodellen.
{
"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
}
}