Ambiente 3D no Fasm

Este é um vídeo mostrando polígonos de vários objetos contidos num ambiente em três dimensões criados a partir de um programa em Assembly 32 bits escrito no FASM. 


Vídeo:

 




 

Nesse ambiente virtual tem-se os eixos xyz e os pontos, que compõem os objetos, que possuem coordenadas retangulares xyz. A tela 2D representa a tela do computador, onde os pontos 3D são projetados em coordenadas 2D xy nesta tela. 

 

 

Após esses pontos projetados, pode-se desenhar, na tela, uma linha entre dois pontos ou um triângulo, entre três. Com várias linhas ou triângulos, pode-se modelar um objeto 3D.

Num objeto com vários triângulos, desenha-se primeiramente os triângulos mais afastados no eixo z e, depois, os mais próximos da referência 0, que é o observador, fazendo-se com que a face mais próxima do objeto se sobreponha à mais distante. Isso é feito com um contador decrescente no eixo z que vai desenhando os triângulos que estão acima desse, fazendo assim uma varredura.

Para projetar um ponto 3D na tela 2D, foram criadas estas duas fórmulas simples que calculam as coordenadas xy de um ponto na tela, em função da profundidade z.
Esta tela 2D é fixa, alinhada no eixo z, ou seja, o observador fica parado e o que se movimenta na realidade são os objetos. Esse método simplifica os cálculos e a precisão do ponto flutuante da FPU mantêm os objetos consistentes.
 

 

Para deslocar um objeto no eixo x por exemplo, simplesmente soma-se um passo às coordenadas x dos pontos 3D do objeto. O mesmo é feito no eixo y e z. Dessa forma, o objeto pode ir p/ frente, trás, direita, esquerda, cima, baixo.

Para rotacionar um objeto no plano xz por exemplo, converte-se as coordenadas retangulares xz em coordenadas polares com a hipotenusa e o ângulo e, soma-se um passo a este ângulo que corresponde à rotação, convertendo posteriormente de volta p/ coordenadas retangulares:


A combinação do deslocamento com a rotação permite um objeto ficar rotacionando sobre si mesmo, estando na referência da tela 2D.

Aqui o programa e os arquivos que contêm as coordenadas dos objetos. Estão postados mais a título de curiosidade porque as fontes são um tanto grandes e eu tenho programas que automatizam a manipulação destes:

 

Programa:
 
https://drive.google.com/file/d/11pEIO23BBpTxaAefPzwWfw1pS8B5H8iW/view?usp=share_link 

  



Comentários

Postagens mais visitadas deste blog

Gerador Aleatório

MP3

HD com relês