SharpGL图形显示效果问题

使用C# SharpGL 显示加载并显示的3D模型

绘制图形的代码如下

private void ListOfRobot(OpenGL gl, int n)
        {
            // 开启光照
            gl.Enable(OpenGL.GL_LIGHTING);
            gl.Enable(OpenGL.GL_LIGHT0);
            gl.Enable(OpenGL.GL_LIGHT1);

            // 设置模型材质(可以从源STL文件中获取)
            SetRobotMaterial(gl);

            tpMesh = ModelFile.mesh[n];
            int YU = 1;
            // 绘制模型
            gl.Begin(OpenGL.GL_TRIANGLES);
            for (int i = 0; i < tpMesh.F.Count(); i++)
            {
                if (tpMesh.VT.Count() != 0) gl.TexCoord(tpMesh.VT[tpMesh.F[i].T[0]].TU, tpMesh.VT[tpMesh.F[i].T[0]].TV);  //纹理    
                if (tpMesh.VN.Count() != 0) gl.Normal(tpMesh.VN[tpMesh.F[i].N[0]].NX, tpMesh.VN[tpMesh.F[i].N[0]].NY, -tpMesh.VN[tpMesh.F[i].N[0]].NZ);//法向量               
                gl.Vertex(tpMesh.V[tpMesh.F[i].V[0]].X / YU, tpMesh.V[tpMesh.F[i].V[0]].Y / YU, -tpMesh.V[tpMesh.F[i].V[0]].Z / YU);        // 上顶点

                if (tpMesh.VT.Count() != 0) gl.TexCoord(tpMesh.VT[tpMesh.F[i].T[1]].TU, tpMesh.VT[tpMesh.F[i].T[1]].TV);  //纹理
                if (tpMesh.VN.Count() != 0) gl.Normal(tpMesh.VN[tpMesh.F[i].N[1]].NX, tpMesh.VN[tpMesh.F[i].N[1]].NY, -tpMesh.VN[tpMesh.F[i].N[1]].NZ);//法向量             
                gl.Vertex(tpMesh.V[tpMesh.F[i].V[1]].X / YU, tpMesh.V[tpMesh.F[i].V[1]].Y / YU, -tpMesh.V[tpMesh.F[i].V[1]].Z / YU);        // 左下

                if (tpMesh.VT.Count() != 0) gl.TexCoord(tpMesh.VT[tpMesh.F[i].T[2]].TU, tpMesh.VT[tpMesh.F[i].T[2]].TV);  //纹理
                if (tpMesh.VN.Count() != 0) gl.Normal(tpMesh.VN[tpMesh.F[i].N[2]].NX, tpMesh.VN[tpMesh.F[i].N[2]].NY, -tpMesh.VN[tpMesh.F[i].N[2]].NZ);//法向量
                gl.Vertex(tpMesh.V[tpMesh.F[i].V[2]].X / YU, tpMesh.V[tpMesh.F[i].V[2]].Y / YU, -tpMesh.V[tpMesh.F[i].V[2]].Z / YU);        // 右下  
            }
            gl.End();          
        }

显示效果不太理想,主要是有些黑色杂乱的地方。

希望可以去掉这些黑色部分。

补充一下图形显示效果

img

应该是纹理材质的应试没达到位置

这个程序员不纠结了,让3d人员在建模工具里试验好,让他告诉你用啥材料,用啥光源,用啥法线贴图(对比一下美图秀秀这类把,其实美图秀秀这种都是先让美工在ps操作,然后告诉程序员他用了啥步骤和滤镜,程序员在上手写成模板代码的,玩3d的都一样。3d的先出一个流程,程序在变成自动化和傻瓜化操作)

总体上上模型有些显的粗糙,但是貌似光源和法线贴图没处理好

光照设置不当引起的,你试试把光照关掉看一下。