У меня проблемы с освещением при работе с очень маленькими частицами. Я делаю имитацию жидкости на основе частиц и сейчас представляю жидкость в виде очень маленьких полигонизированных сфер (очень маленькими я говорю о радиусе 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);