GLTFMaterialsAnisotropyExtension constructor
GLTFMaterialsAnisotropyExtension(
- GLTFParser parser
Implementation
GLTFMaterialsAnisotropyExtension(this.parser) {
name = gltfExtensions["KHR_MATERIALS_ANISOTROPY"]!;
getMaterialType = (materialIndex) {
final parser = this.parser;
final materialDef = parser.json["materials"][materialIndex];
if (materialDef["extensions"] == null ||
materialDef["extensions"][name] == null) return null;
return MeshPhysicalMaterial;
};
extendMaterialParams = (int materialIndex, Map<String, dynamic> materialParams) async {
final parser = this.parser;
final materialDef = parser.json["materials"][materialIndex];
if (materialDef["extensions"] == null ||
materialDef["extensions"][name] == null) {
return null;
}
List<Future<Texture?>> pending = [];
final extension = materialDef["extensions"][name];
materialParams['anisotropyStrength'] = (extension['anisotropyStrength'] as num?)?.toDouble() ?? 1.0;
if (extension['anisotropyRotation'] != null) {
materialParams['anisotropyRotation'] = (extension['anisotropyRotation'] as num?)?.toDouble();
}
final colorArray = extension['specularColorFactor'] ?? [1, 1, 1];
materialParams['specularColor'] =
Color(colorArray[0], colorArray[1], colorArray[2]);
if (extension['anisotropyTexture'] != null) {
final texture = parser.assignTexture(materialParams, 'anisotropyMap', extension['anisotropyTexture'], LinearSRGBColorSpace);
pending.add(texture);
}
return await Future.wait(pending);
};
}