对于OpenGL项目的照明部分,我现在正在为我的团队做这个部分:
在第1部分中定义模型的材料属性。轻松制作材料定义 更换。具体来说,机器人组件和遥控器应该“闪亮”; 如果有各种颜色的色调,应该拆除碎石堆;主平台瓷砖应该是漫反射的 灰色。选择您自己的材料属性并为块,基础,工厂等正确记录它们。
我只是试图在控制单元上应用“闪亮”效果而且效果不佳。我尝试放入一些样本照明,因为我们还没有放入(或者至少它不在存储库中)来测试它。结果是控制器的立方体部分反射(尽管太白了,无论我尝试什么,立方体的颜色是灰色的)但不是圆柱形天线。 (这些测试都不在存储库中,因为我无法提交不起作用的东西。)
基本上我需要帮助处理材料属性并设置一些基本照明来测试它们(测试照明是暂时的,因为我的一个队友正在进行照明)。
如果有人可以帮我解决这个问题,我真的很感激。
项目信息:
如果我遗漏了任何内容或者您需要更多信息,请询问!
答案 0 :(得分:2)
我将帮助您了解OpenGL中闪电的基础知识...首先您需要启用和设置灯光,所以,这里有一些例子:
void setlight(){
//here you set the lights and parameters, example with one light
float LightAmbient[] = { 0.1f, 0.1f, 0.05f, 1.0f };
float LightEmission[] = { 1.0f, 1.0f, 0.8f, 1.0f };
float LightDiffuse[] = { 1.0f, 1.0f, 0.8f, 1.0f };
float LightSpecular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
float LightDirection[]={-0.5f, -0.5f, -0.5f};
glLightfv(GL_LIGHT0, GL_AMBIENT, LightAmbient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, LightDiffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR, LightSpecular);
glLightfv(GL_LIGHT0, GL_POSITION, LightDirection);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
}
void setmaterial(){
//here you set materials, you must declare each one of the colors global or locally like this:
float MatAmbient[] = { 0.1f, 0.1f, 0.1f, 1.0f };
float MatDiffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
float MatSpecular[] = { 0.1f, 0.1f, 0.0f, 0.1f };
float MatShininess = 60;
float black[] = {0.0f,0.0f,0.0f,1.0f};
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, MatAmbient);
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MatDiffuse);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, MatSpecular);
glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, MatShininess);
glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, black);
}
void render(){
//your render function
//clean buffers, set viewport, projection, lookat, etc...
. . .
//set light and materials
setlight();
setmaterial();
//draw your stuff
. . .
glutSwapBuffers();
}
现在,如果您需要为不同的对象设置不同的材质来绘制,则必须在绘制它们之前为每个对象设置材质...例如:
for(int i=0; i<num_objetcs; i++){
setmaterial(i);
drawobject(i);
}
当然,你必须修改我之前写的内容......你只需要设置灯光然后为你设置材料的每个对象然后逐个绘制。你必须修改“setmaterial”函数来获取材料参数,我想你知道如何做其余的事情......祝你好运!