【问题标题】:JOGL: Strange behaviour with color material for an obj modelJOGL:obj 模型的颜色材料的奇怪行为
【发布时间】:2012-01-15 19:26:08
【问题描述】:

对于一个带有 3d 模型的项目,我得到了一个 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();

【问题讨论】:

    标签: java opengl textures jogl


    【解决方案1】:

    只是一些随机的尝试:

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

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

    【讨论】:

    • GL_Normalize 完成了这项工作。谢谢你:)
    【解决方案2】:

    根据图像,它看起来像是剔除错误的正面(用glCullFace 更改它)和非常明亮的灯光的混合。查看其余的绘图代码将非常有用。

    【讨论】:

    • 我用 glCullFace 试过,没有解决问题。而且这不是光强的问题,因为我将古典茶壶添加到确切的场景中,效果非常好。
    猜你喜欢
    • 2015-02-02
    • 2020-01-15
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 2018-04-13
    • 2015-08-15
    相关资源
    最近更新 更多