Link

Integrando a biblioteca tinyobjloader no projeto

Os modelos 3D devem ser o menor possível para acelerar o processo de carregamento e diminuir o espaço em disco necessário para armazená-los. Geralmente, quando pensamos em criar jogos, por exemplo, devemos escolher um dos formatos binários, porque a maioria deles atende aos requisitos mencionados. Mas quando começamos a aprender novas APIs, é bom escolher um formato mais simples. Os arquivos OBJ contêm dados armazenados em forma de texto, para que possamos visualizá-los facilmente ou até modificá-los sozinhos. A maioria dos programas de modelagem comum (se não todos) utilizados permite que os modelos gerados sejam exportados para arquivos OBJ. Portanto, é um bom formato para começar.

Um arquivo OBJ consiste em posições, normais, coordenadas de textura e faces. As faces consistem em uma quantidade arbitrária de vértices, em que cada vértice se refere a uma posição, normal e/ou coordenada de textura por índice. Isso possibilita não apenas reutilizar vértices inteiros, mas também atributos individuais.

Existem várias bibliotecas que nos permitem carregar arquivos OBJ (ou outros tipos de arquivos). Uma das bibliotecas mais simples, mas muito rápida e ainda em aprimoramento, é a biblioteca tinyobjloader desenvolvido por Syoyo Fujita. Como é uma biblioteca de cabeçalho único, não precisamos incluir nenhum outro arquivo nem fazer referência a outras bibliotecas.

Para adicionar essa biblioteca em nosso projeto, criamos uma nova pasta no diretório do projeto chamada vendor. Em seguida, vamos ao repositório em https://github.com/syoyo/tinyobjloader e fazemos o download do arquivo tiny_obj_loader.h para essa pasta. Precisamos nos certificar de usar a versão do arquivo no branch principal, pois a versão oficial mais recente está desatualizada.

Agora precisamos criar um arquivo model.cpp que irá conter o código-fonte do método da estrutura Model responsável por carregar os dados de malha de um arquivo no formato OBJ para nosso programa. Para isso, localizamos a pasta do projeto na árvore do projeto, clicamos com o botão direito do mouse no nome do projeto e selecione Add New …. Selecionamos C++ na lista da esquerda e C++ Source File na lista central. Clicamos no botão Choose…, digitamos “Model” no campo Name. Clicamos em Next e Finish.

Precisamos incluir os arquivos model.h e tiny_obj_loader.h em model.cpp e definir TINYOBJLOADER_IMPLEMENTATION antes da inclusão de tiny_obj_loader.h para gerar sua implementação:

#include "model.h"

#ifndef TINYOBJLOADER_IMPLEMENTATION
#define TINYOBJLOADER_IMPLEMENTATION
#include <tiny_obj_loader.h>
#endif

Em seguida, devemos adicionar a seguinte linha no final do arquivo .pro:

INCLUDEPATH += $${_PRO_FILE_PWD_}/vendor


Anterior Próximo