不然就是作死,以下是obj的材质解析
private void SetupMaterial() {
try{
InputStream ins = resources.getAssets().open(mesh.strMeshName + ".mtl");
InputStreamReader insReader = new InputStreamReader(ins);
BufferedReader br = new BufferedReader(insReader);
String strTemp = null;
String mtlNameString = "";
int mtlId = -1;
float[] arrKd = new float[3];
int index = 0;
while((strTemp = br.readLine())!= null){
String[] arrStr = strTemp.split("[ ]+");
if(arrStr[0] .trim().equals( "newmtl")){ //标示材质
if(index!=0){
Newmtl newmtl = new Newmtl(mtlId,arrKd.clone());//作死!注意加个clone,不然全是一个色
mesh.arrNewmtl.put(mtlNameString, newmtl);
}
index++;
mtlNameString = arrStr[1];
}
else if(arrStr[0] .trim().equals("Ka")){
}
else if(arrStr[0] .trim().equals("Kd")){
arrKd[0] = Float.parseFloat(arrStr[1]);
arrKd[1] = Float.parseFloat(arrStr[2]);
arrKd[2] = Float.parseFloat(arrStr[3]);
}
else if(arrStr[0] .trim().equals("Ks")){
}
else if(arrStr[0] .trim().equals("map_Kd")){ //纹理名
if(mtlNameString.length()!=0 && arrStr.length>=2){
mtlId = ToolFunction.CreateTexture(resources, arrStr[1]);
}
} //end if
}//end while
Newmtl newmtl = new Newmtl(mtlId,arrKd);
mesh.arrNewmtl.put(mtlNameString, newmtl);
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}//end class