OpenGL不显示从STL文件加载的多个顶点
我尝试从STL文件中绘制3D模型。我已经成功地从CAD文件加载了三角形网格,加载的数据是正确的,因为我加载了ASCII文件。它是加载数据的样本OpenGL不显示从STL文件加载的多个顶点,opengl,Opengl,我尝试从STL文件中绘制3D模型。我已经成功地从CAD文件加载了三角形网格,加载的数据是正确的,因为我加载了ASCII文件。它是加载数据的样本 n 0.954709 -0.160052 -0.250827 v1 4826.07 16113.6 2710.49 v2 4826.26 16113.5 2711.21 v3 4824.94 16108.2 2709.71 n 0.87753 -0.142971 -0.457712 v1 4825.89
n 0.954709 -0.160052 -0.250827
v1 4826.07 16113.6 2710.49
v2 4826.26 16113.5 2711.21
v3 4824.94 16108.2 2709.71
n 0.87753 -0.142971 -0.457712
v1 4825.89 16113.6 2709.76
v2 4826.07 16113.6 2710.49
v3 4824.94 16108.2 2709.71
然后我在painGL函数中使用下面的代码来绘制
glViewport(0, 0, width(), height());
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1,1,0);
glBegin(GL_TRIANGLES);
for(int i=0;i<triangles.size;i++)
{
glNormal3f((GLfloat)triangles.normals[i].x,(GLfloat)triangles.normals[i].y,(GLfloat)triangles.normals[i].z);
glVertex3f((GLfloat)triangles.vertices[0][i].x,(GLfloat)triangles.vertices[0][i].y,(GLfloat)triangles.vertices[0][i].z);
glVertex3f((GLfloat)triangles.vertices[1][i].x,(GLfloat)triangles.vertices[1][i].y,(GLfloat)triangles.vertices[1][i].z);
glVertex3f((GLfloat)triangles.vertices[2][i].x,(GLfloat)triangles.vertices[2][i].y,(GLfloat)triangles.vertices[2][i].z);
}
glEnd();
但是小部件没有画任何东西。我试着画另一个三角形
glColor3f(1,1,0);
glScalef(1, 1, 0.0);
glBegin(GL_TRIANGLES);
glVertex3f(0,-0.5,0);
glVertex3f(0.5,-0.5,0);
glVertex3f(0.0,0.5,0);
glEnd();
它画得很正确。我想我对OpenGL中的坐标或单位比例有问题,因为加载的顶点值非常大。
有什么办法解决我的问题吗 由于顶点值太大,可能是在视图外渲染?您可以尝试通过使用gluLookAt缩小来更改视点。或者我想,通过除以max~16000来规范化顶点值也会使模型更小。只是不要缩放法线。你是指三角形[i]吗?顶点[0]。。。而不是三角形。顶点[0][i]。。。在您的第一个代码片段中?@Pavelbely:我向后推三角形中的法线和顶点,而不是向后推三角形变量,这样代码就不会出错。@Mewa:谢谢,我会尝试查看。
glColor3f(1,1,0);
glScalef(1, 1, 0.0);
glBegin(GL_TRIANGLES);
glVertex3f(0,-0.5,0);
glVertex3f(0.5,-0.5,0);
glVertex3f(0.0,0.5,0);
glEnd();