14/03/12 | Herobrine | Aucun commentaire |

Bon après quelques longs, longs, lonnnnnngs calculs, j’ai réussi à trouver des formules algorithmique permettant d’afficher des objet en 3D.

J’ai enfin compris à quoi servait la trigonométrie et les matrices, autre part que dans les DS ou pendant une colle ^^ !

Alors bien sûr, c’est la base de la base, hein, mais ça marche ! J’en ai presque la larme à l’oeil… snif…

En soit le moteur se réduit à une seule fonction unificatrice, elle prends comme argument :

– La position du joueur (player_x, player_y, player_z)

– La direction vers laquelle il regarde (direction_i, direction_j)

– La position de l’objet (un point en réalité) (object_x, object_y, object_z)

– La taille de l’écran en unité arbitraire (screen_x, screen_y)

– La distance entre l’oeil et l’écran (screen_z)

– La constant permettant de passer de l’unité arbitraire au pixel (scale)

Et elle retourne :

– La position de l’objet sur l’écran (screenobject_x, screenobject_y)

Oui, on est bien passé de 12 variables à seulement 2 ^^ ! Bien sûr, ceci ne fonctionne qu’avec un point, donc il faut en calculer plusieurs pour avoir un véritable objet affiché.

Le moteur est pour l’instant codé en PHP (oui, un moteur 3D en PHP, c’est un peu bizarre…), mais c’est uniquement en attendant de voir quel langage j’utiliserai pour coder (à 95% Java)

Voici ce que ça donne :

STX Engine - 4 cubes filaires

On peut également appliqué une texture unie :

STX Engine - Cube coloré

En ce qui concerne les vraies textures, dont celle de test que je vous avais montré :

Textures de test

Leur « placage » sur les polygones formé est un peu complexe, et je n’ai pas encore fait de fonction pour ça. De même l’impression de lumière qu’il y a sur le cube coloré est totalement artificiel, c’est moi qui ai choisi les couleurs des faces du cube.

Il me reste donc encore quelques petites chose à faire avant de vraiment pouvoir se déplacer dans un monde texturé.

Para ailleurs, je tenais à dire que le jeu est en CPU only, c’est à dire que c’est uniquement le processeur qui fera tout les calculs, et donc que votre carte graphique (GPU) ne servira à rien. Il n’y aura donc pas d’accélération matérielle.

S’il s’avère que ce n’est pas assez fluide, j’abandonnerai le moteur et je prendrais LWJGL, mais je préférerai tout de même éviter…

Pas de commentaire pour le moment

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *