Ir para o conteúdo
angelicous

[OpenGL] Guardar referências de triângulos

Mensagens Recomendadas

angelicous

Boas malta, preciso de uma sugestão da vossa parte.

Tenho um trabalho da universidade que se está a aproximar a entrega, e as nossas aulas práticas estão um bocado apertadas na matéria, e não queria deixar tudo para fazer em cima da hora uma vez que estamos a dar coisas relativamente básicas.

O nosso trabalho é relativamente simples nesta primeira fase. Temos que fazer um gerador de figuras, e um leitor das figuras geradas. O exemplo dado no enunciado para o gerador é algo como executar o comando

gerador esfera 1 10 10 output.3d

em que "gerador" é o nome do programa gerador de figuras, "esfera" é a figura que queremos gerar, "1 10 10" é o raio, fatias e filas que queremos na esfera, e o "output.3d" é um ficheiro em que queremos guardar os dados da figura para depois ser lida.

É dito pelo enunciado, que o ficheiro de output deve ser definido por nós, e como sugestão diz que devemos usar por exemplo o número de vértices da figura, para facilitar o processo de leitura.

O programa leitura, simplesmente é escolher o ficheiro output que queremos, e desenhar a cena.

A minha dúvida é face ao programa gerador. Eu para desenhar uma esfera, estava simplesmente a pensar utilizar a função para o exemplo em cima:

glutWireSphere(1,10,10);

E isto foi o que demos para desenhar uma figura deste género. Mas eu não precisaria de saber o número de vertices para este caso, o que me leva a pensar que o uso desta função para desenhar a cena em si, não seria muito correcto. Neste momento(esta semana) só ainda estamos a dar desenho de triângulos simples, com rotações e translações, e este trabalho já é para entregar para a semana. Calculo que para a semana já aprendamos a fazer isto, mas eu queria adiantar trabalho. Como é que eu poderia por exemplo guardar todos os triângulos gerados na cena, para os poder guardar num ficheiro e posteriormente fazer o display?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

tu não guardas triângulos, mas sim a informação necessária para "reconstruir" os triângulos

tens de guardar duas listas:

- lista de vertices

- lista de arestas do triangulo

um exemplo simples seria

# comentario

# listar vertices
#
# <tipo de dados>:<x>,<y>,<z>
#
# exemplo para um vertice na posicao 2, 4, 6
# v:2,4,6

v:-1,0,0
v:0,-1,0
v:0,1,0
v:1,0,0

# lista de arestas
#
# <tipo de dados>:<indice_vertice_1>,<indice_vertice_2>,<indice_vertice_3>
#
# nota : nao esquecer que em OpenGL, as arestas são descrita no sentido contrário dos ponteiros do relógio

t:0,1,2
t:2,1,3

este tipo de ficheiros são fáceis de ler e recontruir as listas em memória para depois serem usadas na criação da imagem final


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
angelicous

O formato não seria o meu problema, mas já ajuda a perceber que não são só os vertices a ser guardados. Mas a minha dúvida é mais como é que eu "saco" essa informação da cena em si. Porque eu desenhar o circulo com a função consigo sem problema, o meu problema é saber as coordenadas de tudo uma vez que estão desenhados. Existe alguma função que eu possa começar a explorar?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

ai está o teu problema

o trabalho da aplicação gerador não é desenhar mas sim determinar a posição de todos os vértices e arestas do objeto a ser desenhado, e no final escrever o ficheiro.

depois disso, a segunda aplicação terá de ler o ficheiro e apresentar a lista de triângulos de forma completamente transparente, isto é, sem fazer a mínima ideia do que está a desenhar.


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
angelicous

Sim a segunda já tinha percebido.

Ok, penso que já percebi a ideia. Basicamente quer queira quer não, vou ter que desenhar círculos à mão(triângulo a triângulo), e sempre que determino a posição de um triângulo, guardo as referências para guardar em ficheiro. É isto certo?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.