Tarefa : Implementar o Demo na página da disciplina .

7
Tarefa: Implementar o Demo na página da disciplina. Para trabalhar com iluminação em OpenGL, deve- se definir: 1) Vetores de iluminação : Ex: GLfloat luzAmbiente[4]={0.2,0.2,0.2,1.0}; 2) Tipos de iluminação: Ex: // Define os parâmetros da luz de número 0 glLightfv(GL_LIGHT0, GL_AMBIENT, luzAmbiente);

description

Tarefa : Implementar o Demo na página da disciplina . Para trabalhar com iluminação em OpenGL, deve -se definir : Vetores de iluminação : Ex: GLfloat luzAmbiente [4]={0.2,0.2,0.2,1.0}; 2) Tipos de iluminação : Ex: // Define os parâmetros da luz de número 0 - PowerPoint PPT Presentation

Transcript of Tarefa : Implementar o Demo na página da disciplina .

Page 1: Tarefa :   Implementar  o Demo  na página  da  disciplina .

Tarefa: Implementar o Demo na página da disciplina.

Para trabalhar com iluminação em OpenGL, deve-se definir:

1) Vetores de iluminação : Ex: GLfloat luzAmbiente[4]={0.2,0.2,0.2,1.0};

2) Tipos de iluminação: Ex: // Define os parâmetros da luz de número 0

glLightfv(GL_LIGHT0, GL_AMBIENT, luzAmbiente);

Page 2: Tarefa :   Implementar  o Demo  na página  da  disciplina .

3) Materiais que vão ser usados:

Exemplo: // Capacidade de brilho do material

GLfloat especularidade[4]={1.0,1.0,1.0,1.0};

GLint especMaterial = 60;

A seguir encontram-se algumas funções de devem ser inseridas no código que permitem trabalhar com iluminação. Algumas estão incompletas para serem completadas pelos alunos.

Page 3: Tarefa :   Implementar  o Demo  na página  da  disciplina .

// Função responsável pela especificação dos parâmetros de iluminação

void DefineIluminacao (void)

{

// definição da iluminação

GLfloat luzAmbiente[4]={0.2,0.2,0.2,1.0};

GLfloat luzDifusa[4]={0.7,0.7,0.7,1.0}; // "cor"

GLfloat luzEspecular[4]={1.0, 1.0, 1.0, 1.0};// "brilho"

GLfloat posicaoLuz[4]={0.0, 50.0, 50.0, 1.0};

// Capacidade de brilho do material

GLfloat especularidade[4]={1.0,1.0,1.0,1.0};

GLint especMaterial = 60;

// Define a refletância do material

glMaterialfv(GL_FRONT,GL_SPECULAR, especularidade);

// Define a concentração do brilho

glMateriali(GL_FRONT,GL_SHININESS,especMaterial);

// Ativa o uso da luz ambiente

glLightModelfv(GL_LIGHT_MODEL_AMBIENT, luzAmbiente);

// Define os parâmetros da luz de número 0

glLightfv(GL_LIGHT0, GL_AMBIENT, luzAmbiente);

glLightfv(GL_LIGHT0, GL_DIFFUSE, luzDifusa );

glLightfv(GL_LIGHT0, GL_SPECULAR, luzEspecular );

glLightfv(GL_LIGHT0, GL_POSITION, posicaoLuz );

}

Page 4: Tarefa :   Implementar  o Demo  na página  da  disciplina .

// Função usada para especificar a posição do observador virtual

void PosicionaObservador(void)

{

// Especifica sistema de coordenadas do modelo

.....

// Inicializa sistema de coordenadas do modelo

.....

DefineIluminacao();

// Posiciona e orienta o observador

glTranslatef(-obsX,-obsY,-obsZ);

glRotatef(rotX,1,0,0);

glRotatef(rotY,0,1,0);

}

Page 5: Tarefa :   Implementar  o Demo  na página  da  disciplina .

// Função usada para especificar o volume de visualização

void EspecificaParametrosVisualizacao(void)

{

// Especifica sistema de coordenadas de projeção

.......

// Inicializa sistema de coordenadas de projeção

.......

// Especifica a projeçãperspectiva(angulo,aspecto,zMin,zMax)

gluPerspective(angle,fAspect,0.5,500);

PosicionaObservador();

}

Page 6: Tarefa :   Implementar  o Demo  na página  da  disciplina .

// Função callback chamada quando o tamanho da janela é alterado

void AlteraTamanhoJanela(GLsizei w, GLsizei h)

{

// Para previnir uma divisão por zero

if ( h == 0 ) h = 1;

// Especifica as dimensões da viewport

glViewport(0, 0, w, h);

// Calcula a correção de aspecto

fAspect = (GLfloat)w/(GLfloat)h;

EspecificaParametrosVisualizacao();

}

Page 7: Tarefa :   Implementar  o Demo  na página  da  disciplina .

// Função responsável por inicializar parâmetros e variáveis

void Inicializa (void)

{

// Define a cor de fundo da janela de visualização como branca

glClearColor(1.0f, 1.0f, 1.0f, 1.0f);

// Habilita a definição da cor do material a partir da cor corrente

glEnable(GL_COLOR_MATERIAL);

//Habilita o uso de iluminação

glEnable(GL_LIGHTING);

// Habilita a luz de número 0

glEnable(GL_LIGHT0);

// Habilita o depth-buffering

glEnable(GL_DEPTH_TEST);

// Habilita o modelo de colorização de Gouraud

glShadeModel(GL_SMOOTH);

// Inicializa a variável que especifica o ângulo da projeção

// perspectiva

angle=45;

// Inicializa as variáveis usadas para alterar a posição do

// observador virtual

rotX = 0;

rotY = 0;

obsX = obsY = 0;

obsZ = 150;

}