SmallVR - Virtual Reality Toolkit
Prof. Márcio Sarroglia Pinho
Informações sobre Objetos do Cenário

1. Acessando Informações de Objetos Carregados

Em algumas aplicações é necessario que se acesse as faces e os vertices dos objetos carregados na cena, como por exemplo em aplicações que usam bibliotecas de fisica, onde essa biblioteca tem que conhecer a geometria do objeto para poder realizar os calculos necessarios. Sendo assim todos os objetos carregados pela classe SmVR_COBJLoader possuem um conjunto de métodos os quais acessam informações do objeto, como as faces, vertices, limites do objeto.

void GetBoundaries(SmVR_CPoint *min, SmVR_CPoint *max)

Este método serve para obtenção dos limites do objeto carregado, isto é, seu ponto minimo e maximo. Segue um exemplo para sua utilização.

// Cria os Pontos
SmVR_CPoint Min, Max; 

// Cria um objeto para carregar o modelo de arquivo
SmVR_COBJLoader *obj = new SmVR_COBJLoader(); 
// Executa a carga do objeto
obj->Load("teste.obj");
// Pega os limites do objeto carregado
obj->GetBoundaries(&Min, &Max);

int GetNFaces()

Este método retorna a quantidade de faces que o objeto carregado possui


TVertices *GetVertices()

Este método retorna um ponteiro pra a lista de todos os vertices do objeto, a estrutura TVertices simplesmente guarda as coordenadas x, y e z da face.

// Cria o vetor que recebera os vertices
TVertices *tvertices;

// Cria um objeto para carregar o modelo de arquivo
SmVR_COBJLoader *obj = new SmVR_COBJLoader(); 
// Executa a carga do objeto
obj->Load("teste.obj");
// Pega todos os vertices do objeto
tvertices = obj->GetVertices();


void GetFace(int n, int v[3]);

Este método retonar no vetor v  o numero das faces que compõe a face n.

// Cria o vetor que recebera o numero dos vertices
int v[3];
// Cria o vetor que recebera os vertices
TVertices *tvertices;

// Cria um objeto para carregar o modelo de arquivo
SmVR_COBJLoader *obj = new SmVR_COBJLoader(); 
// Executa a carga do objeto
obj->Load("teste.obj");
// Pega todos os vertices do objeto
tvertices = obj->GetVertices();
// Pega os vertices pertecentes a primeira face
obj->GetFace(0, v);
//Imprime os vertices da primeira face
for(int i = 0; i < 3; i++)
  printf("(%f, %f, %f)\n", tvertices[v[i]].x,
tvertices[v[i]].y, tvertices[v[i]].z);