private static void processMaterial(AIMaterial aiMaterial, List<Material> materials, String texturesDir) throws Exception {
AIColor4D colour = AIColor4D.create();
AIString path = AIString.calloc();
Assimp.aiGetMaterialTexture(aiMaterial, aiTextureType_DIFFUSE, 0, path, (IntBuffer) null, null, null, null, null, null);
String textPath = path.dataString();
Texture texture = null;
if (textPath != null && textPath.length() > 0) {
TextureCache textCache = TextureCache.getInstance();
texture = textCache.getTexture(texturesDir + "/" + textPath);
}
Vector4f ambient = Material.DEFAULT_COLOUR;
int result = aiGetMaterialColor(aiMaterial, AI_MATKEY_COLOR_AMBIENT, aiTextureType_NONE, 0, colour);
if (result == 0) {
ambient = new Vector4f(colour.r(), colour.g(), colour.b(), colour.a());
}
Vector4f diffuse = Material.DEFAULT_COLOUR;
result = aiGetMaterialColor(aiMaterial, AI_MATKEY_COLOR_DIFFUSE, aiTextureType_NONE, 0, colour);
if (result == 0) {
diffuse = new Vector4f(colour.r(), colour.g(), colour.b(), colour.a());
}
Vector4f specular = Material.DEFAULT_COLOUR;
result = aiGetMaterialColor(aiMaterial, AI_MATKEY_COLOR_SPECULAR, aiTextureType_NONE, 0, colour);
if (result == 0) {
specular = new Vector4f(colour.r(), colour.g(), colour.b(), colour.a());
}
Material material = new Material(ambient, diffuse, specular, 1.0f);
material.setTexture(texture);
materials.add(material);
}