Java JOGL:obj模型颜色材质的奇怪行为

Java JOGL:obj模型颜色材质的奇怪行为,java,opengl,textures,jogl,Java,Opengl,Textures,Jogl,对于一个带有三维模型的项目,我得到了一个Autocad文件。我在3ds max中导入了该文件,并将其导出为.obj文件。到现在为止,一直都还不错。 但是当我把这个文件加载到我的Jogl应用程序中时,我对颜色材质有一个奇怪的问题。更准确地说,请看下面的图片。第一个是我的应用程序的屏幕截图,第二个是加载到3d操作软件中的完全相同的文件的屏幕截图 它看起来是什么样子: 它应该是什么样子的: 为了清楚起见,在我的代码中,我使用三角形,每个三角形都有顶点、法线和纹理坐标。所以问题是,遗漏了什么 gl.

对于一个带有三维模型的项目,我得到了一个Autocad文件。我在3ds max中导入了该文件,并将其导出为.obj文件。到现在为止,一直都还不错。 但是当我把这个文件加载到我的Jogl应用程序中时,我对颜色材质有一个奇怪的问题。更准确地说,请看下面的图片。第一个是我的应用程序的屏幕截图,第二个是加载到3d操作软件中的完全相同的文件的屏幕截图

它看起来是什么样子:

它应该是什么样子的:

为了清楚起见,在我的代码中,我使用三角形,每个三角形都有顶点、法线和纹理坐标。所以问题是,遗漏了什么

gl.glNewList(1, gl.GL_COMPILE);
        for (int i = 0; i < len; i=i+3) {

            gl.glBegin(GL.GL_TRIANGLES);

            gl.glTexCoord2f(body.body_textCoords[i][0], body.body_textCoords[i][1]);
            gl.glNormal3f(body.body_normal[i][0], body.body_normal[i][1], body.body_normal[i][2]);
            gl.glVertex3f(body.body_vertex[i][0], body.body_vertex[i][1], body.body_vertex[i][2]);

            gl.glTexCoord2f(body.body_textCoords[i+1][0], body.body_textCoords[i+1][1]);
            gl.glNormal3f(body.body_normal[i+1][0], body.body_normal[i+1][1], body.body_normal[i+1][2]);
            gl.glVertex3f(body.body_vertex[i+1][0], body.body_vertex[i+1][1], body.body_vertex[i+1][2]);

            gl.glTexCoord2f(body.body_textCoords[i+2][0], body.body_textCoords[i+2][1]);
            gl.glNormal3f(body.body_normal[i+2][0], body.body_normal[i+2][1], body.body_normal[i+2][2]);
            gl.glVertex3f(body.body_vertex[i+2][0], body.body_vertex[i+2][1], body.body_vertex[i+2][2]);
            gl.glEnd();
        }
gl.glEndList();
gl.glNewList(1,gl.gl\u编译);
对于(int i=0;i
根据图像,它看起来像是剔除了错误的正面(用
glCullFace
更改)和非常明亮的灯光的混合。查看其余的绘图代码将非常有用。

只是一些随机的尝试:

你的法线已经标准化了吗?(如果不是,这可能是因为光线太亮。请启用GL_NORMALIZE进行修复)


如果禁用纹理并将所有内容都绘制为橙色,会发生什么?(只需少担心一个变量)

我试过使用glCullFace,但没有解决问题。这不是光照强度的问题,因为我将经典茶壶添加到了准确的场景中,效果非常好。谢谢:)