Jump to content

Recommended Posts

Posted

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?

Posted

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
Posted

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?

Posted

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
Posted

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?

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.