• Nenhum resultado encontrado

MODELAGEM TOPOLÓGICA NON-MANIFOLD PARA O AMBIENTE 3DMAX

N/A
N/A
Protected

Academic year: 2021

Share "MODELAGEM TOPOLÓGICA NON-MANIFOLD PARA O AMBIENTE 3DMAX"

Copied!
13
0
0

Texto

(1)

Universidade Presbiteriana Mackenzie

MODELAGEM TOPOLÓGICA NON-MANIFOLD PARA O AMBIENTE 3DMAX Daniel Sousa Fest (IC) e Luciano Silva (Orientador)

Apoio: PIBIC CNPq

Resumo

Para todos os tipos de representação de modelos existentes, existem duas categorias: manifold e non-manifold (GLASSNER,2005). Estes modelos são chamados de modelos topológicos, pois utilizam noções de vizinhança típicas da área de Topologia Combinatória. Uma das ferramentas de modelagem digital mais utilizadas na atualidade que implementa esta noção de topologia é o 3Ds Max. Esta ferramenta utiliza-se de modelos topológicos para reconhecer vértices, arestas e faces dos objetos através de suas numerações. O aplicativo oferece suporte apenas a objetos do tipo manifold para criar uma relação lógica de dependência entre estes vértices, arestas e faces e para manter a consistência topológica da estrutura de dados que ele utiliza internamente. Desta maneira, o 3Ds Max impossibilita a criação de objetos do tipo non-Manifold, o que restringe muito a representação de objetos mais complexos dentro de seu ambiente. O projeto tem como principais objetivos o estudo das representações manifold e non-manifold e o desenvolvimento de uma solução na forma de um plug-in que possibilite a representação de modelos non-Manifold no ambiente do 3Ds Max. Desta maneira, este projeto espera trazer um significativo avanço em estudos para novas representações de objetos de qualquer tipo não só para a ferramenta escolhida para o desenvolvimento, mas para aplicativos de modelagem computacional em geral.

Palavras-chave: non-Manifold, plug-in 3Ds Max, vizinhança

Abstract

For all types of representation of existing models, there are two categories: non-manifold and manifold (GLASSNER, 2005). These models are called topological models because they use typical notions from Combinatorial Topology. One of the latest digital modeling tools used today to implement this notion of topology is the 3ds Max This tool is used to recognize topological models of vertices, edges and faces of objects through their numbering. The application supports only objects of type manifold to create a logical relationship of dependence between these vertices, edges and faces and to maintain the topological consistency of the data structure it uses internally. Thus, the 3ds Max inhibiting the creation of objects of type non-manifold, which restricts the representation of much more complex objects within its environment. The aims of this project are the study of representations manifold and non-manifold and the development of a solution in the form of a plug-in that allows the representation of non-manifold models in 3ds Max environment. So, this project hopes to bring a significant advance studies for new representations of objects of any kind not only for the chosen tool for development, but application of computational modeling in general.

(2)

VII Jornada de Iniciação Científica - 2011

1.1 INTRODUÇÃO

Modelagem topológica é uma técnica de modelagem em Computação Gráfica, que trata da construção de modelos computacionais que são controlados pela topologia (relações de incidência e invariantes topológicos) (GOMES e VELHO, 1998). Existem duas categorias de modelagem topológica: manifold e non-manifold.

Na modelagem manifold, utilizam-se as restrições topológicas que definem as variedades discretas em Topologia Combinatória. Por exemplo, em modelos manifold não é possível de modelar a noção de auto-intersecção. Já na modelagem non-manifold, estas restrições topológicas já não são exigidas. Neste contexto, é possível se construir modelos com auto-intersecção ou que possuam alteração de orientação nas cartas locais discretas associadas a cada ponto do objeto.

O ambiente de modelagem e renderização 3DMax (http://www.autodesk.com) representa uma das ferramentas mais utilizadas para síntese de imagens em Computação Gráfica. Apesar da grande complexidade desta ferramenta, ela suporta somente modelagem de sólidos do tipo manifold. Esta restrição obriga, muitas vezes, um modelador a ter que dividir um determinado objeto para contemplar construções que envolvam auto-intersecção ou com orientação variável, por exemplo, para que as divisões possam atender aos critérios das variedades discretas e orientáveis. Neste contexto, o desenvolvimento de um ambiente de modelagem non-manifold para 3DMax representa um tema de grande interesse tanto computacional quanto comercial.

O projeto vinculado a este artigo teve como objetivo o desenvolvimento e implementação de um sistema de modelagem poligonal non-manifold para o ambiente 3DMax. O sistema será desenvolvido na linguagem C++, devido aos requisitos de desempenho para grandes modelos gráficos, e integrado como um plug-in dentro do ambiente. Este plug-in tem, adicionalmente, o propósito de iniciar uma linha de plug-ins non-manifold para outras técnicas de modelagem como NURBS ou superfícies de subdivisão.

Este artigo está organizado da seguinte forma:

• A Seção 1.2 apresenta o referencial teórico que traz detalhes do desenvolvimento do projeto.

• A Seção 1.3 demonstra o método utilizado para a implementação da solução para a problemática tratada pelo projeto.

• A Seção 1.4 mostra os resultados e discussões sobre o projeto bem como a presente fase do projeto e suas principais contribuições.

(3)

• Finalmente, a Seção 1.5 do projeto em questão.

1.2 REFERENCIAL TEÓRICO

Um objeto sólido é um objeto que possui um volume finito no espaço, e que possui tanto propriedades geométricas como

físicas como massa, centro de gravidade e inércia

de modelagem de sólidos pode normalmente representar tanto propriedades geométricas como físicas de um objeto sólido.

sólido em Computação Gráfica: A representação CSG (WATT,1993)

Os nós não-terminais representam operadores, que podem ser movimentos rígidos ou operações boleanas (união, interseção e diferença). Os nós terminais podem ser primitivas (sólidos) ou movimentos rígidos.

Basicamente, CSG é uma representação explícita parci informações topológicas implícitas. Por exemplo, na

representado em CSG como:

Universidade Presbiteriana Mackenzie

Finalmente, a Seção 1.5 traz as conclusões obtidas no decorrer do desenvolvimento do projeto em questão.

REFERENCIAL TEÓRICO

Um objeto sólido é um objeto que possui um volume finito no espaço, e que possui tanto propriedades geométricas como superfície, volume e centro, como também propriedades físicas como massa, centro de gravidade e inércia (GOMES e VELHO, 1998)

de modelagem de sólidos pode normalmente representar tanto propriedades geométricas como físicas de um objeto sólido. Existem diversas técnicas para se representar um objeto sólido em Computação Gráfica:

(WATT,1993) é uma árvore binária ilustrada na Figura 1

Figura 1: Representação CSG.

terminais representam operadores, que podem ser movimentos rígidos ou operações boleanas (união, interseção e diferença). Os nós terminais podem ser primitivas

sólidos) ou movimentos rígidos.

Basicamente, CSG é uma representação explícita parcialmente geométrica com informações topológicas implícitas. Por exemplo, na Figura 1, o objeto sólido pode ser representado em CSG como:

bloco(10,10,10) - bloco(5,20,5).

Universidade Presbiteriana Mackenzie

no decorrer do desenvolvimento

Um objeto sólido é um objeto que possui um volume finito no espaço, e que possui tanto superfície, volume e centro, como também propriedades (GOMES e VELHO, 1998). Um sistema de modelagem de sólidos pode normalmente representar tanto propriedades geométricas Existem diversas técnicas para se representar um objeto

Figura 1:

terminais representam operadores, que podem ser movimentos rígidos ou operações boleanas (união, interseção e diferença). Os nós terminais podem ser primitivas

almente geométrica com , o objeto sólido pode ser

(4)

Esta representação CSG pode ser modificada de forma que o objeto sólido pode ser representado como uma expressão boleana como descrito abaixo:

(H1 ∩ H2 ∩ H3 ∩

Qualquer ponto no espaço do modelo para o qual esta expressão boleana é verdadeira pertence ao interior do objeto sólido. Na equação,

localização de um plano no sistema coordenado especificado são dados geométricos, e todas as relações topológicas são inferidas a partir do operador boleano.

As vantagens da representação CSG são as seguintes: automaticamente, que os objetos são válidos e

são conhecidos e confiáveis. O esquema B-rep (MOLLER,2000) número finito de subconjuntos interl

representando cada face por suas arestas (que c 2 mostra um exemplo de B

Basicamente, B-rep é uma representação explícita da topologia. A árvore B árvore de relação topológica. Para as peças A e B na

vértices, arestas e faces são completamente idênticas. A diferença corresponde coordenadas dos pontos na árvore B

VII Jornada de Iniciação Científica

Esta representação CSG pode ser modificada de forma que o objeto sólido pode ser entado como uma expressão boleana como descrito abaixo:

∩ H4 ∩ H5 ∩ H6) ∩ (H7 ∪ H8 ∪ H9 ∪ H10 ∪

Qualquer ponto no espaço do modelo para o qual esta expressão boleana é verdadeira pertence ao interior do objeto sólido. Na equação, todos os meio-espaços que indicam a localização de um plano no sistema coordenado especificado são dados geométricos, e todas as relações topológicas são inferidas a partir do operador boleano.

As vantagens da representação CSG são as seguintes: é concisa, nte, que os objetos são válidos e os algoritmos para converter CSG em B são conhecidos e confiáveis.

(MOLLER,2000) representa um sólido segmentando o seu contorno num número finito de subconjuntos interligados normalmente chamados faces (ou “patches”), e representando cada face por suas arestas (que compõem um contorno) e vértices.

mostra um exemplo de B-rep:

Figura 2: Representação B-rep.

rep é uma representação explícita da topologia. A árvore B

árvore de relação topológica. Para as peças A e B na Figura 3, as relações topológicas entre vértices, arestas e faces são completamente idênticas. A diferença corresponde

das dos pontos na árvore B-rep.

VII Jornada de Iniciação Científica - 2011

Esta representação CSG pode ser modificada de forma que o objeto sólido pode ser

∪ H11 ∪ H12)

Qualquer ponto no espaço do modelo para o qual esta expressão boleana é verdadeira espaços que indicam a localização de um plano no sistema coordenado especificado são dados geométricos, e todas as relações topológicas são inferidas a partir do operador boleano.

é concisa, garante, algoritmos para converter CSG em B-rep

representa um sólido segmentando o seu contorno num igados normalmente chamados faces (ou “patches”), e ompõem um contorno) e vértices. A Figura

rep é uma representação explícita da topologia. A árvore B-rep é uma , as relações topológicas entre vértices, arestas e faces são completamente idênticas. A diferença corresponde às

(5)

Imagem 3: Representação B

As vantagens da representação B

• as informações são completas, e esta representação tem uma longa his

comunidade de CAD, e portanto existem muitos softwares disponíveis para a manipulação dos seus dados geométricos;

• as aplicações e algoritmos baseados em B baseados em CSG;

• a tecnologia disponível para superfícies “ portanto é mais fácil incorporá

Para todos estes esquemas de representação,

manifold e non-manifold (GLASSNER,2005)

topológicos, pois utilizam noções de vizinhança típicas da área de Topologia Combinatória. Todo objeto 3D pode ser visto como um grafo. Se analisarmos um dado ponto de um grafo, e os seus vizinhos, e houver a possibilidade deste grafo

(grafo planar), este modelo satisfaz a propriedade geral para que seja variedades (no caso de sólidos 3D) são deformações

propriedade de variedade parecido com um plano.

Universidade Presbiteriana Mackenzie

Representação B-rep mostrando dois objetos diferentes com a mesma topologia

As vantagens da representação B-rep são as seguintes:

as informações são completas, e esta representação tem uma longa his

comunidade de CAD, e portanto existem muitos softwares disponíveis para a manipulação dos seus dados geométricos;

as aplicações e algoritmos baseados em B-rep são competitivos com aqueles

a tecnologia disponível para superfícies “sculptured”

baseia-portanto é mais fácil incorporá-la em sistemas B-rep dos que em sistemas CSG.

Para todos estes esquemas de representação, existem duas categorias de modelos: (GLASSNER,2005). Estes modelos são chamados de modelos topológicos, pois utilizam noções de vizinhança típicas da área de Topologia Combinatória. Todo objeto 3D pode ser visto como um grafo. Se analisarmos um dado ponto de um grafo,

houver a possibilidade deste grafo ser representado em um plano (grafo planar), este modelo satisfaz a propriedade geral para que seja

variedades (no caso de sólidos 3D) são deformações no plano R². Assim, para man propriedade de variedade (manifold), cada vizinhança de um ponto do sólido tem

Universidade Presbiteriana Mackenzie

rep mostrando dois objetos diferentes com a mesma topologia.

as informações são completas, e esta representação tem uma longa história na comunidade de CAD, e portanto existem muitos softwares disponíveis para a

rep são competitivos com aqueles

-se em superfícies, e rep dos que em sistemas CSG.

existem duas categorias de modelos: chamados de modelos topológicos, pois utilizam noções de vizinhança típicas da área de Topologia Combinatória. Todo objeto 3D pode ser visto como um grafo. Se analisarmos um dado ponto de um grafo,

ser representado em um plano (grafo planar), este modelo satisfaz a propriedade geral para que seja manifold. As . Assim, para manter a ponto do sólido tem ser muito

(6)

VII Jornada de Iniciação Científica - 2011

Na modelagem topológica, quando um objeto ou forma é criado, cada vértice, aresta e face recebe uma numeração. Esses números são usados, internamente, para saber quais vértices/aresta/faces serão alterados em qualquer tipo de operação. A essa estrutura de vértices, aretas, faces e suas devidas numerações é dado o nome de topologia do modelo. A Figura 4 ilustra um objeto poligonal simples (esquerda) e as informações de sua topologia (direita):

Figura 4: Um modelo poligonal simples (cubo) e sua topologia.

Se a representação da topologia satisfaz aos critérios das variedades combinatórias discretas, o modelo é chamado de manifold. Caso contrário, o modelo é chamado

non-manifold.

Modelos non-manifold permitem a construção de objetos complexos que envolvem, por exemplo:

• auto-intersecção;

• alteração de orientação local da fronteira do sólido;

• operadores geométricos e topológicos mais complexos;

Além destes fatores, estes modelos possibilitam a representação de superfícies não finitas. Quando isto acontece, usa-se uma aproximação discreta digital conhecida como malhas poligonais. Esta representação é a mais usada ultimamente por vários softwares de modelagem 3D digital.

A ferramenta 3Ds Max, abordada neste projeto, possui limitações quanto a utilização de modelos non-manifold. A ferramenta utiliza-se da topologia para reconhecer faces, vértices e arestas dos objetos através de suas numerações. Dessa forma, quando um deles é selecionado e manipulado, através de um modificador, por exemplo, ele reconhece quais vértices, arestas e faces sofrerão efeitos com a aplicação do recurso. Dependendo das

(7)

Universidade Presbiteriana Mackenzie

modificações feitas no modelo, é possível até mesmo alterar sua topologia. (AUTODESK, s. d.). Sendo assim, um objeto necessariamente se utilizará da relação lógica de dependência entre vértices, arestas e faces para ser representado no 3Ds Max. Na representação de objetos do tipo non-Manifold, essa dependência entre vértices, arestas e faces entre si e entre seus vizinhos inexiste, ou seja, não é necessário que um vértice faça parte de uma aresta, ou de uma face, e qualquer modificação aplicada apenas a um deles não necessariamente afetará a sua vizinhança. Além destes pontos, O 3Ds Max exige que o modelo seja manifold para manter a consistência topológica da estrutura de dados que ele utiliza internamente.

Através de estudos sobre o problema, dada a restrição do 3Ds Max quanto a sua estrutura de dados interna, constatou-se que uma das formas para que a utilização de objetos

non-Manifold pela ferramenta fosse possível seria utilizar estruturas de dados que fossem

capazes de manter a consistência topológica, independente do tipo do modelo, e que fosse reconhecível por ele.

Uma maneira de se representar uma malha poligonal, muito eficiente em alguns casos, se dá através de listas compartilhadas de vértices e uma lista de faces contendo ponteiros para seus respectivos vértices (MCGUIRE, 2000). Algumas estruturas foram pesquisadas como a

Winged Edge, a TopEdge, a Quad-Edge e a HalfEdge.

A idéia básica de uma estrutura do tipo Winged Edge é baseada em uma aresta e em seus polígonos adjacentes (GLASSNER, 1991). A estrutura é composta de três listas duplamente ligadas contendo faces, arestas e vértices. Uma aresta é uma conexão direcionada entre dois vértices, além disso, ela separa duas faces sendo uma a sua esquerda e outra a sua direita. Cada aresta possui quatro arestas ligadas a ela sendo elas as primeiras que estiverem em volta do vértice encontrado na direção especificada.

A figura 5 demonstra um exemplo da representação Winged Edge:

Figura 5: Análise de uma aresta (Instância da estrutura WEdgeData). Fonte: (GLASSNER, 1991).

Esta figura representa a aresta, suas arestas adjacentes e as faces ligadas a ela. A forma de análise das arestas mais próximas à analisada se dá no sentido horário ou anti-horário, logo, se queremos visitar a aresta mais próxima ao vértice a e que também faça parte da

(8)

VII Jornada de Iniciação Científica - 2011

face b, basta atravessar a aresta no sentido horário, e para visitar a aresta próxima ao vértice b, basta atravessar a aresta no sentido anti-horário, o mesmo método é aplicado também a face a e suas respectivas arestas.

A propriedade mais atraente em utilizar estruturas deste tipo é a possibilidade de modelar objetos que possuam buracos em sua superfície.

Outra estrutura vista foi a TopEdge, uma extensão da estrutura do tipo HalfEdge e que suporta operadores topológicos além dos tradicionais operadores geométricos. Como o projeto não possui foco nos operadores topológicos, o uso da estrutura foi descartado. Mais uma conhecida estrutura para representação poliédrica é a estrutura do tipo

Quad-Edge. Ela é limitada poliedros do tipo manifold (HECKBER, 2001). A estrutura é uma

variação da Winged Edge, porém, por possuir a limitante de ser usada apenas por modelos

manifold, o estudo não foi aprofundado. Essencialmente, uma estrutura do tipo HalfEdge

mantém informações de incidência de vértices, arestas e faces em superfícies (CGAL Manual, s. d.). Cada HalfEdge armazena referencias para uma face e um vértice incidente. Para cada face e vértice incidente, uma HalfEdge é armazenada. Variantes reduzidas da estrutura HalfEdge pode omitir algumas dessas incidências. Ela recebe este nome por que a estrutura armazena informações de “meia aresta” e não da aresta inteira (MCGUIRE, 2000). Em uma HalfEdge as arestas são dirigidas, sendo assim, o armazenamento requer que sejam guardadas as informações da aresta em suas duas direções.

A Figura 6 traz a representação de uma malha poligonal triangular e suas HalfEdges onde os pontos laranja são os vértices da malha, as barras azuis são as HalfEdges e as setas representam os ponteiros entre elas. (MCGUIRE, 2000).

Figura 6: Representação de uma malha triangular e suas respectivas HalfEdges. Fonte: (MCGUIRE, 2000)

A estrutura de dados escolhida foi a HalfEdge por ser uma estrutura simples de ser usada além de ser bem rápida. Outro detalhe bastante interessante para a escolha desta estrutura é a de que qualquer alteração que seja feita na orientação de uma HalfEdge é feita em

(9)

Universidade Presbiteriana Mackenzie

tempo O(1) trazendo um ótimo desempenho caso seja necessária a alteração de alguma HalfEdge na estrutura.

1.3 MÉTODO

Para que o plug-in para 3Ds Max fosse desenvolvido, foi utilizada a biblioteca CGAL(www.cgal.org) para C++ que contém a estrutura de dados do tipo HalfEdge necessários para o desenvolvimento do projeto.Primeiramente foi necessário um estudo aprofundado da biblioteca sobre os recursos disponíveis. A primeira coisa a ser estudada foi a superfície poliédrica Polyhedron_3 composta por vértices, arestas e faces e um relacionamento de incidência entre eles. Logo após, adquiriu-se um conhecimento aprofundado da classe auxiliar Polyhedron_incremental_builder_3 que dá suporta a construção de superfícies poliédricas utilizando a estrutura de dados HalfEdge.

Por fim, utilizando o Wizard do 3Ds Max SDK para o Visual Studio 2008 e os próprios recursos da linguagem C++, foi feito o estudo sobre codificação de recursos visuais utilizado pela WIN API32 e manipulação de arquivos.

Abaixo, vemos detalhes sobre a codificação utilizada na construção do plug-in. Para o reconhecimento do objeto é necessária a manipulação de arquivos através das bibliotecas padrões do C++ (fstream). Foi criada uma variável para a manipulação do arquivo (in) e uma variável char contendo o caminho do objeto (path).Na área do código designada para o controle da parte visual do projeto, foi aplicada o seguinte código no evento de pressionar o botão de carregamento: GetDlgItem(hWnd,IDC_EDIT); GetDlgItemText(hWnd,IDC_EDIT,path,100); in.open(path); if(!in) {

MessageBox(hWnd,"Object Not Found!" , "Non-Manifold Object Exporter Error!", MB_OK);

in.clear(); return 0; } else{ Polyhedron P; P=leitura(P);

MessageBox(hWnd,"Object Loaded Successfully!" , "Non-Manifold Object Exporter Sucessfull!", MB_OK);

return 0;

}

A variável de manipulação do arquivo é global, pois é utilizada tanto na ação do botão quanto no reconhecimento das informações do objeto pela estrutura.

(10)

VII Jornada de Iniciação Científica - 2011

Pelo código vemos que um objeto só poderá ser reconhecido se o caminho digitado estiver correto, caso contrário, a mensagem de erro é exibida e a variável do arquivo é limpa para receber um novo caminho.

Confirmada a existência do arquivo do objeto, um Polyhedron é criado e a função leitura é chamada. A função de leitura simplesmente recebe um Polyhedron criado e delega a ele as informações do objeto coletadas do arquivo e retorna o Polyhedron atualizado com as novas informações.

Segue abaixo o código utilizado no armazenamento na estrutura das informações do objeto baseada na leitura do arquivo:

template <class HDS>

class Build_triangle : public CGAL::Modifier_base<HDS> {

public:

Build_triangle() {}

void operator()( HDS& hds) {

CGAL::Polyhedron_incremental_builder_3<HDS> B( hds, true);

typedef typename HDS::Vertex Vertex; typedef typename Vertex::Point Point;

int q, numv=-1;

float x, y, z;

in >> q;

B.begin_surface( q, q/3, 2*q); for(int i=0;i<q/3;i++){

numv++; in>>x>>y>>z; B.add_vertex( Point( x, y, z)); numv++; in>>x>>y>>z; B.add_vertex( Point( x, y, z)); numv++; in>>x>>y>>z; B.add_vertex( Point( x, y, z)); B.begin_facet(); B.add_vertex_to_facet(numv-2); B.add_vertex_to_facet(numv-1); B.add_vertex_to_facet(numv); B.end_facet(); } B.end_surface(); in.close(); in.clear(); } };

O operador Build_Triangle disponibilizado pela biblioteca CGAL, possibilita armazenamento de informações em um Polyhedron baseada em triângulos, ou seja, as informações do

(11)

Universidade Presbiteriana Mackenzie

objeto serão armazenadas como três coordenadas de vértices formando um triângulo, logo, o objeto essencialmente deve ter uma malha do tipo triângulo para que seja feita o correto reconhecimento por parte do plug-in.

1.4 RESULTADOS E DISCUSSÕES

Até o presente momento, o projeto esta na fase de reconhecimento dos vértices dos objetos pelo desenvolvimento do plug-in com a biblioteca CGAL. O plug-inpossibilita que o usuário entre com o caminho do objeto 3D que possui suas informações.

Os arquivos lidos pela DLL são da extensão .obj. O arquivo é iniciado com a quantidade de vértices e logo abaixo, uma linha para cada vértice possuindo suas três respectivas coordenadas separadas por espaço.

Segue abaixo um exemplo de arquivo .obj reconhecível pelo plug-in: 6 -58.2843 0.0000 68.2843 -58.2843 0.0000 11.7157 -1.7157 0.0000 11.7157 -1.7157 0.0000 68.2843 -58.2843 56.5685 68.2843 -1.7157 56.5685 68.2843

Dessa maneira o código, como mostrado anteriormente, insere na estrutura estas informações lendo as coordenadas de três em três, já que a malha do objeto deve ser triangular.

Após a entrada do usuário com o caminho do objeto, basta pressionar o botão de carregamento. Uma superfície do tipo Polyhedron é criada e o código de reconhecimento do objeto é iniciado, caso contrário, uma mensagem de erro é exibida se o objeto não for encontrado ou não exista.

A DLL do plug-in pode ser introduzida manualmente na pasta plug-ins do 3Ds Max ou pode ser carregada através do Plug-in Manager. Sua utilização se dá por meio da aba Utilities localizada a esquerda do ambiente.

(12)

VII Jornada de Iniciação Científica - 2011

A Figura 7 traz o visual do plug-in dentro do ambiente 3Ds Max.

Figura 7: Interface visual do plug-in no ambiente 3Ds Max

O desenvolvimento esta no estágio de reconhecimento dos vértices da topologia de modelos

non-Manifold utilizando a estrutura do tipo HalfEdge disponibilizada pela biblioteca CGAL.

Esta estrutura oferece o armazenamento das informações do objeto por estruturas de lista duplamente ligada além de permitir que se mantenha tanto a restrição de modelos manifold quanto também a liberdade de modelos non-manifold. O desenvolvimento deste plug-in para o 3Ds Max possibilitará uma gama muito maior de representações de objetos pelos seus usuários já que as restrições de modelos manifold por parte da ferramenta será contornada.

1.5 CONCLUSÃO

Com o desenvolvimento deste projeto foi possível concluir que a representação

non-Manifold de objetos contém bem menos restrições que a representação non-Manifold, dando-nos

a liberdade de construções de sólidos muito mais complexos. Através do projeto deste

plug-in para 3Ds Max, é possível que o ambiente reconheça objetos do tipo non-Manifold e nos

dê, também, a possibilidade de manipulá-los, propriedade que ele não possui nativamente. No momento, o plug-in possibilita o reconhecimento dos vértices da topologia dos objetos. Como trabalho futuro é recomendável à continuação deste desenvolvimento para que o

plug-in possa reconhecer não só os vértices do objeto, mas também suas arestas e faces,

além de possibilitar a utilização de outras técnicas de modelagem a este tipo de objeto. Outro objetivo a ser alcançado seria a continuação do desenvolvimento para que seja possível a aplicação das transformações realizadas na ferramenta 3Ds Max no reconhecimento das novas coordenadas do objeto pela estrutura HalfEdge.

(13)

Universidade Presbiteriana Mackenzie

Abaixo segue um exemplo da função (transforma) que reconhece a matriz de transformação que será aplicada aos vértices do modelo e retorna o novo Polyhedron com suas coordenadas atualizadas.

Polyhedron transforma(Polyhedron poly, double m[4][4]){

CGAL::Aff_transformation_3<Kernel> t(m[0][0], m[0][1], m[0][2], m[0][3], m[1][0], m[1][1], m[1][2], m[1][3], m[2][0], m[2][1], m[2][2], m[2][3], m[3][3]= RT(1));

CGAL::Polyhedron_3<Kernel>::Vertex_iterator iter;

for(iter = poly.vertices_begin(); iter!=poly.vertices_end(); ++iter){ iter->point()=t.transform(iter->point());

}

return poly;

}

REFERÊNCIAS

AUTODESK, 3Ds Max Help . v.2011, CGAL Online Manual. Disponível em: <www.cgal.org> deBERG, M., van KREVELD, M., OVERMARS, M., SCHWARZKOPF, O. Computational

Geometry: Algorithms and Applications. 2.ed. New York: Springer, 2000.

GOMES, Jonas de Miranda, VELHO, Luiz Carlos. Computação Gráfica. Rio de Janeiro : SBM/IMPA, 1998. v. 1. (Série de Computação e Matemática).

GLASSNER, A. Principles of Digital Image Synthesis. V.1 e 2. New York: Morgan Kauffmann, 2005.

GLASSNER, A. Maintaining Winged-Edge Models, Graphics Gems II (James Arvo, ed.). Academic Press, 1991 p. 192.

HECKBER, P. Quad-Edge Data Structure and Library, 2001. Disponível em: <http://www.cs.cmu.edu/afs/andrew/scs/cs/15-463/2001/pub/src/a2/quadedge.html#quadedge>. Acesso em 13 set. 2010

MCGUIRE, M. The Half-Edge Data Structure, 2000. Disponível em:

<http://www.flipcode.com/archives/The_Half-Edge_Data_Structure.shtml>. Acesso em: 15 out. 2010.

MOLLER, T. Real-Time Rendering. New York: A.K. Peters, 2002.

WATT, Allan. Fundamentals of three-dimensional computer graphics. Reading: Addison-Wesley, 1993.

Referências

Documentos relacionados

Este trabalho buscou, através de pesquisa de campo, estudar o efeito de diferentes alternativas de adubações de cobertura, quanto ao tipo de adubo e época de

No entanto, maiores lucros com publicidade e um crescimento no uso da plataforma em smartphones e tablets não serão suficientes para o mercado se a maior rede social do mundo

esta espécie foi encontrada em borda de mata ciliar, savana graminosa, savana parque e área de transição mata ciliar e savana.. Observações: Esta espécie ocorre

Dessa forma, os níveis de pressão sonora equivalente dos gabinetes dos professores, para o período diurno, para a condição de medição – portas e janelas abertas e equipamentos

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Estes limites são avaliados antes do envio de cada ordem ao sistema de negociação, permitindo estabelecer, para cada comitente¹, os seguintes parâmetros de negociação:

Com isso sugere-se a realização de trabalhos com um grupo de estudo maior além de utilizar-se um grupo como controle, onde a intensidade de exercí- cio e o período de treinamento

Podem treinar tropas (fornecidas pelo cliente) ou levá-las para combate. Geralmente, organizam-se de forma ad-hoc, que respondem a solicitações de Estados; 2)