我尝试从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 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();
其中triangle是struct
下的变量typedef struct
{
VECTOR_3 vertices[3];
VECTOR_3 normals;
int size=0;
}STL_PARAMETERS;
但小部件并没有吸引任何事情。我尝试另一个绘制三角形
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中的坐标或单位比例存在问题,因为加载的顶点值非常大。 有什么解决方案可以解决我的问题吗?