【发布时间】:2016-03-02 21:12:52
【问题描述】:
我用的是OpenGL OBJ loader,可以下载here!
我从 Blender 导出了一个 OBJ 模型。 问题是我想实现平滑的阴影。 As you can see, it is not smooth here. 我如何实现这一目标?法线向量计算器可能有问题?
float* Model_OBJ::calculateNormal( float *coord1, float *coord2, float *coord3 )
{
/* calculate Vector1 and Vector2 */
float va[3], vb[3], vr[3], val;
va[0] = coord1[0] - coord2[0];
va[1] = coord1[1] - coord2[1];
va[2] = coord1[2] - coord2[2];
vb[0] = coord1[0] - coord3[0];
vb[1] = coord1[1] - coord3[1];
vb[2] = coord1[2] - coord3[2];
/* cross product */
vr[0] = va[1] * vb[2] - vb[1] * va[2];
vr[1] = vb[0] * va[2] - va[0] * vb[2];
vr[2] = va[0] * vb[1] - vb[0] * va[1];
/* normalization factor */
val = sqrt( vr[0]*vr[0] + vr[1]*vr[1] + vr[2]*vr[2] );
float norm[3];
norm[0] = vr[0]/val;
norm[1] = vr[1]/val;
norm[2] = vr[2]/val;
return norm;
}
并且设置了 glShadeModel(GL_SMOOTH)。
有什么想法吗?
【问题讨论】:
标签: c++ opengl glut blender cg