在处理非常小的粒子时,我遇到了照明问题。我正在做基于粒子的流体模拟,现在正在将流体渲染为非常小的多边形球体(我说的是球体的半径约为 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);