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);