Fritask (discussão | contribs)
Fritask (discussão | contribs)
Linha 11: Linha 11:


= Código =
= Código =
void RenderFrame (int n, const struct mdl_model_t *mdl)
void
RenderFrame (int n, const struct mdl_model_t *mdl)
{
{
  int i, j;
int i, j;
  GLfloat s, t;
GLfloat s, t;
  vec3_t v;
vec3_t v;
  struct mdl_vertex_t *pvert;
struct mdl_vertex_t *pvert;
   
 
  /* Check if n is in a valid range */
  /* Verifica se n está em um alcance válido */
  if ((n < 0) || (n > mdl->header.num_frames - 1))
if ((n < 0) || (n > mdl->header.num_frames - 1))
    return;
return;
   
 
  /* Enable model's texture */
  /* Ativa as texturas dos modelos */
  glBindTexture (GL_TEXTURE_2D, mdl->tex_id[mdl->iskin]);
glBindTexture (GL_TEXTURE_2D, mdl->tex_id[mdl->iskin]);
   
 
  /* Draw the model */
  /* Desenha o Modelo */
  glBegin (GL_TRIANGLES);
glBegin (GL_TRIANGLES);
    /* Draw each triangle */
/* Desenha cada Triângulo */
    for (i = 0; i < mdl->header.num_tris; ++i)
for (i = 0; i < mdl->header.num_tris; ++i)
      {
{
/* Draw each vertex */
/* Desenha cada vértice */
for (j = 0; j < 3; ++j)
for (j = 0; j < 3; ++j)
  {
{
    pvert = &mdl->frames[n].frame.verts[mdl->triangles[i].vertex[j]];
pvert = &mdl->frames[n].frame.verts[mdl->triangles[i].vertex[j]];
 
    /* Compute texture coordinates */
/* Calcula as coordenadas da textura */
    s = (GLfloat)mdl->texcoords[mdl->triangles[i].vertex[j]].s;
s = (GLfloat)mdl->texcoords[mdl->triangles[i].vertex[j]].s;
    t = (GLfloat)mdl->texcoords[mdl->triangles[i].vertex[j]].t;
t = (GLfloat)mdl->texcoords[mdl->triangles[i].vertex[j]].t;
 
    if (!mdl->triangles[i].facesfront &&
if (!mdl->triangles[i].facesfront &&
mdl->texcoords[mdl->triangles[i].vertex[j]].onseam)
mdl->texcoords[mdl->triangles[i].vertex[j]].onseam)
      {
{
s += mdl->header.skinwidth * 0.5f; /* Backface */
s += mdl->header.skinwidth * 0.5f; /* Face Traseira */
      }
}
 
    /* Scale s and t to range from 0.0 to 1.0 */
/* Escalas S e T variam de 0.0 a 1.0 */
    s = (s + 0.5) / mdl->header.skinwidth;
s = (s + 0.5) / mdl->header.skinwidth;
    t = (t + 0.5) / mdl->header.skinheight;
t = (t + 0.5) / mdl->header.skinheight;
 
    /* Pass texture coordinates to OpenGL */
/* Passa as coordenadas de textura para OpenGL */
    glTexCoord2f (s, t);
glTexCoord2f (s, t);
 
    /* Normal vector */
/* Vetor Normal */
    glNormal3fv (anorms_table[pvert->normalIndex]);
glNormal3fv (anorms_table[pvert->normalIndex]);
 
    /* Calculate real vertex position */
/* Calcula a posição do vértice real */
    v[0] = (mdl->header.scale[0] * pvert->v[0]) + mdl->header.translate[0];
v[0] = (mdl->header.scale[0] * pvert->v[0]) + mdl->header.translate[0];
    v[1] = (mdl->header.scale[1] * pvert->v[1]) + mdl->header.translate[1];
v[1] = (mdl->header.scale[1] * pvert->v[1]) + mdl->header.translate[1];
    v[2] = (mdl->header.scale[2] * pvert->v[2]) + mdl->header.translate[2];
v[2] = (mdl->header.scale[2] * pvert->v[2]) + mdl->header.translate[2];
 
    glVertex3fv (v);
glVertex3fv (v);
  }
}
      }
}
  glEnd ();
glEnd ();
}
}
<br>
<br>

Edição das 19h11min de 26 de setembro de 2017

Conceito

Programação em renderização é o processo de geração de uma imagem a partir de um modelo por meio de um software. No contexto da renderização gráfica, a programação em renderização refere-se a um processo de renderização que não depende dos ASICs de hardware gráfico, como uma placa gráfica. A renderização ocorre inteiramente na CPU. Renderizar tudo com a CPU tem a principal vantagem de não se restringir às capacidades do hardware gráfico.

A renderização é usada na arquitetura, jogos e filmes. Renderizar é o último passo em um processo de animação, e dá a aparência final aos modelos e animação com efeitos visuais como sombreamento, mapeamento de texturas, sombras, reflexos e borrões de movimento.

Softwares

Alguns softwares que são usados para esta finalidade são: OpenGL e DirectX. Alguns dos softwares que usam a programação em renderização são: 3ds Max, Maya, CINEMA 4D, Blender, Adobe Photoshop, Gimp, Corel, entre outros. E algumas das linguagens de programação mais usadas para tal processo são: C, C++, C#, Haskell, JavaScript. Descrever os softwares usados para esta finalidade. Detalhar, se existir, linguagens, banco de dados e frameworks.

Código

void RenderFrame (int n, const struct mdl_model_t *mdl) { int i, j; GLfloat s, t; vec3_t v; struct mdl_vertex_t *pvert;

/* Verifica se n está em um alcance válido */
if ((n < 0) || (n > mdl->header.num_frames - 1))

return;

/* Ativa as texturas dos modelos */
glBindTexture (GL_TEXTURE_2D, mdl->tex_id[mdl->iskin]);
/* Desenha o Modelo */

glBegin (GL_TRIANGLES); /* Desenha cada Triângulo */ for (i = 0; i < mdl->header.num_tris; ++i) { /* Desenha cada vértice */ for (j = 0; j < 3; ++j) { pvert = &mdl->frames[n].frame.verts[mdl->triangles[i].vertex[j]];

/* Calcula as coordenadas da textura */ s = (GLfloat)mdl->texcoords[mdl->triangles[i].vertex[j]].s; t = (GLfloat)mdl->texcoords[mdl->triangles[i].vertex[j]].t;

if (!mdl->triangles[i].facesfront && mdl->texcoords[mdl->triangles[i].vertex[j]].onseam) { s += mdl->header.skinwidth * 0.5f; /* Face Traseira */ }

/* Escalas S e T variam de 0.0 a 1.0 */ s = (s + 0.5) / mdl->header.skinwidth; t = (t + 0.5) / mdl->header.skinheight;

/* Passa as coordenadas de textura para OpenGL */ glTexCoord2f (s, t);

/* Vetor Normal */ glNormal3fv (anorms_table[pvert->normalIndex]);

/* Calcula a posição do vértice real */ v[0] = (mdl->header.scale[0] * pvert->v[0]) + mdl->header.translate[0]; v[1] = (mdl->header.scale[1] * pvert->v[1]) + mdl->header.translate[1]; v[2] = (mdl->header.scale[2] * pvert->v[2]) + mdl->header.translate[2];

glVertex3fv (v); } } glEnd (); }

Diagrama de Casos de Uso

Desenhar ou plotar  os requisitos funcionais de uma aplicação.


Interações com as tecnologias

Incluir links (internos ou externos) temas que tem relação com este, explicando detalhes sobre. Limite de 3 internos e 2 externos.


Informações adicionais

Descrever detalhes a mais sobre esse tema.


Referências bibliográficas

Relacionar aqui as referências bibliográficas no padrão ABNT. 
Bases de procura: Artigos, publicações acadêmicas, revistas e sites de fornecedores