Posted by
DeuRid on
Aug 17, 2013; 9:55am
URL: https://forum.jogamp.org/3dmodel-wird-falsch-angezeigt-tp4029836.html
Hallo,
das ist mein erster Beitrag und hoffe auf Eure Hilfe.
ich habe ein 3dbutton mit cs6 erstellt und in .obj und .mtl files exportiert. Diese parse ich und versuche diese anzuzeigen, leider wird nicht richtig angezeigt. ICH BIN EIN TOTAL OPENGL ANFÄNGER.
Ausgabe:

Orginal:

hier mein Code:
float stretch=1f;
private void loadOBJ(String objPath, ModelProperties modelProperties, String mtlPath){
OBJModel oBJModel = null;
try {
oBJModel = ThreeDLoader.loadObj(new File(objPath));
ThreeDLoader.parseMTL(oBJModel, new File(mtlPath));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
int polyList=0;
if (polyList == 0) {
polyList = _gl.glGenLists(1);
_gl.glNewList(polyList, GL.GL_COMPILE);
stretch=modelProperties.size;
render(oBJModel);
_gl.glEndList();
_gl.glTranslatef(modelProperties.x, modelProperties.y, modelProperties.z);
_gl.glRotatef(0.0f, 0.0f, 0.0f, 11.0f);
_gl.glCallList(polyList);
}
}
private void render(OBJModel oBJModel){
_gl.glBegin(GL.GL_TRIANGLES);
for(Face face: oBJModel.faces){
Vector3f v1 = oBJModel.vertices.get((int)face.vertex.x - 1);
Vector3f n1 = oBJModel.normals.get((int)face.normal.x - 1);
Vector2f t1 = oBJModel.texVerticies.get((int)face.textures.x -1);
Vector3f v2 = oBJModel.vertices.get((int)face.vertex.y - 1);
Vector3f n2 = oBJModel.normals.get((int)face.normal.y - 1);
Vector2f t2 = oBJModel.texVerticies.get((int)face.textures.y -1);
Vector3f v3 = oBJModel.vertices.get((int)face.vertex.z - 1);
Vector3f n3 = oBJModel.normals.get((int)face.normal.z - 1);
Vector2f t3 = oBJModel.texVerticies.get((int)face.textures.z -1);
_gl.glTexCoord2f(t1.x, t1.y);
_gl.glNormal3f(n1.x, n1.y, n1.z);
_gl.glVertex3f(v1.x * stretch, v1.y * stretch, v1.z * stretch);
_gl.glColor3f(oBJModel.material.get(0).diffuse.getX(), oBJModel.material.get(0).diffuse.getY(),
oBJModel.material.get(0).diffuse.getZ());
_gl.glTexCoord2f(t2.x, t2.y);
_gl.glNormal3f(n2.x, n2.y, n2.z);
_gl.glVertex3f(v2.x * stretch, v2.y * stretch, v2.z * stretch);
_gl.glColor3f(oBJModel.material.get(0).specular.getX(), oBJModel.material.get(0).specular.getY(),
oBJModel.material.get(0).specular.getZ());
_gl.glTexCoord2f(t3.x, t3.y);
_gl.glNormal3f(n3.x, n3.y, n3.z);
_gl.glVertex3f(v3.x * stretch, v3.y * stretch, v3.z * stretch);
_gl.glColor3f(oBJModel.material.get(0).ambient.getX(), oBJModel.material.get(0).ambient.getY(),
oBJModel.material.get(0).ambient.getZ());
}
_gl.glEnd();
}
bitte was mache ich hier falsch? was fehlt? -ich kann lwjgl nicht benutzen wegen native in classpath..-
Vielen Dank