V-ART e objetos descritos por XML

Anteriomente aprendemos a criar uma cena com primitivas básicas (esfera, cubo, etc.). Mas suponha que agora você queira dar mais realismo a sua cena, adicionando objetos mais realistas, criados através de ferramentas de modelagem (3DS, Blender, etc). Como fazer isso?
Existem algumas maneiras de se trabalhar com objetos descritos por malhas de triângulos no V-ART.

A primeira forma é, tendo um objeto descrito através de um arquivo do tipo obj (ou .obj), adicioná-lo na cena. Como o objeto será do tipo meshObject, o qual é composto por várias meshs existentes no .obj, utilizaremos o método MeshObject::ReadFromOBJ(<nome do obj>, <lista que guardará todas as malhas do objeto>) e através de um loop, adicionaremos cada malha à cena. Por exempol, suponhamos que exista o objeto cenário descrito em um .obj (escritorio.obj), um objeto do tipo Scene chamado cena e uma lista de malhas chamada listaMeshsCenario. Se usarmos os seguintes comandos:

listaMeshsCenario.clear();

MeshObject::ReadFromOBJ("escritorio.obj", &listaMeshsCenario);
for (iter = listaMeshsCenario.begin(); iter != listaMeshsCenario.end(); ++iter)

*{*

cena.AddObject( * iter);

*}*

Outra forma é usar a classe XMLScene, que trata da cena descrita através de um arquivo xml. Tomemos por exemplo a aplicação robotarm, a qual pode ser visualizada na figura abaixo.

robotarm.png

O braço do robô está descrito nos arquivos chamados robotarm.xml (trata da descrição das articulações, seus dofs e malhas que as representam), robotarm.obj (descrição das malhas) e robotarm.mtl (tabela de cores das malhas). O arquivo xml está de acordo com a dtd vartScene.dtd, a qual dá as diretivas para a descrição da cena. Esta dtd pode ser vista na seção de releases.
Voltando à aplicação, para que o braço do robô seja carregado na cena, basta usar o comando LoadFromFile da seguinte forma:

if (scene.LoadFromFile("robotarm.xml")) {...}

Este comando será o responsável por fazer o parsing (avaliação) do arquivo xml, bem como carregar tudo o que estiver nele na cena. É importante frisar que é desejo dos desenvolvedores que toda a cena seja seja carregada através do xml, porém esta parte não está totalmente concluída. assim, tanto a luz como a câmera ainda são carregadas como nos blogs anteriores.

No próximo blog falaremos em como criar ações (com e sem xml) para um determinado objeto.

Last edited Aug 10, 2007 at 7:49 PM by araschneider, version 7

Comments

No comments yet.