GLTFMaterialsSheenExtension constructor

GLTFMaterialsSheenExtension(
  1. GLTFParser parser
)

Implementation

GLTFMaterialsSheenExtension(this.parser) {
  name = gltfExtensions["KHR_MATERIALS_SHEEN"]!;

  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) {
    final parser = this.parser;
    final materialDef = parser.json["materials"][materialIndex];

    if (materialDef["extensions"] == null ||
        materialDef["extensions"][name] == null) {
      return null;
    }

    List<Future> pending = [];

    materialParams['sheenColor'] = Color(0, 0, 0);
    materialParams['sheenRoughness'] = 0;
    materialParams['sheen'] = 1;

    Map extension = materialDef["extensions"][name];

    if (extension["sheenColorFactor"] != null) {
      final colorFactor = List<double>.from(extension['sheenColorFactor'].map((e) => e.toDouble()));
			  materialParams['sheenColor'].setRGB( colorFactor[ 0 ], colorFactor[ 1 ], colorFactor[ 2 ]);
    }

    if (extension["sheenRoughnessFactor"] != null) {
      materialParams['sheenRoughness'] = extension["sheenRoughnessFactor"];
    }

    if (extension["sheenColorTexture"] != null) {
      pending.add(parser.assignTexture(materialParams, 'sheenColorMap', extension["sheenColorTexture"], SRGBColorSpace));
    }

    if (extension["sheenRoughnessTexture"] != null) {
      pending.add(parser.assignTexture(materialParams, 'sheenRoughnessMap',extension["sheenRoughnessTexture"]));
    }

    return Future.wait(pending);
  };
}