我在处理非常小的粒子时遇到了照明问题。我正在进行基于粒子的流体模拟,并将流体呈现为非常小的多边形球体(我说的是球体半径约为0.03个单位)。我的场景中的照明效果不是我想要的,我无法使其看起来正确。我想要的是与此图像中粒子柔和照明类似的效果...
然而,我的粒子看起来像这样...
你可以看到我的粒子有明亮的白色区域,而绿色粒子只是柔和地照亮,没有大的白色热点。我知道原因可能是我的光线设置或者仅仅是因为粒子太小,光线占据了更大的空间(这可能吗?)。我的照明设置如下...
GLfloat mat_ambient[] = {0.5, 0.5, 0.5, 1.0};
GLfloat mat_specular[] = {1.0, 1.0, 1.0, 1.0};
GLfloat mat_shininess[] = {10.0};
GLfloat light_position[] = {0.0, 0.1, p_z, 1.0};
GLfloat model_ambient[] = {0.5, 0.5, 0.5, 1.0};
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, model_ambient);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_DEPTH_TEST);
glShadeModel(GL_SMOOTH);
glColorMaterial(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE);
glEnable(GL_COLOR_MATERIAL);