3dmodel wird falsch angezeigt

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

3dmodel wird falsch angezeigt

DeuRid
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
Reply | Threaded
Open this post in threaded view
|

Re: 3dmodel wird falsch angezeigt

gouessej
Administrator
Hallo

Mein Deutsch is gar nicht gut aber Ich habe dein Problem (ein Bisschen) verstanden. Warum sprichst du über den Konkurrent von JOGL? Du bist im offiziellen JogAmp Forum, in der falsche Sektion (JOAL). Was ist ThreeDLoader? Du brauchst glFrustum und gluLookAt richtig zu verwenden.

@Sven, please help him, you know my German is very poor. I'm not a native speaker.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: 3dmodel wird falsch angezeigt

DeuRid
hallo vielen dank für Deine antwort.
sorry, das war nicht mein absicht. für mich (als anfänger) sieht so alles gleich aus jogl oder joal.
ThreeDLoader ist der parser, der mir die .obj und .mtl files ausliest. da picke ich die vertex's normals .. v, vt, vn, f

ich versuche das ganze in ein augmented reality application zu integrieren.. wenn du besseren vorschlag hast mit joal, dann nehme ich dankend gern.

you can replay in english, my english is "poor" but i can understand very well, but not write!

what should glfrustum do? and why do need glulookat?
thanks
best's
Reply | Threaded
Open this post in threaded view
|

Re: 3dmodel wird falsch angezeigt

gouessej
Administrator