Sujet: Sprites en 2D dans un monde en 3D Sam 11 Juin 2016 - 17:27
Bonjour,
Je viens ici pour vous exposer un problème qui me tracasse depuis peu, je suis en train de créer un jeu en 3D dans lequel certains objets doivent êtres représentés par des sprites en 2D, bien sûr je pourrais simplement utiliser des surface faisant toujours face à la caméra mais dans ce cas là, la perspective ferait subir quelques déformations au sprite utilisé comme texture (agrandissement, rétrécissement, etc ...) , j'ai donc eu l'idée de convertir les coordonnés x,y,z des objets en question en coordonnés x,y pour pouvoir dessiner les sprites qui leurs sont associé à ces coordonnés, et ce en utilisant les formules x' = x / z et y' = y / z, cette méthode marche à peu près, mon seul problème pour le moment étant le suivant, Lorsque un de ces objets se déplace, le sprite qui le représente se déplace aussi mais de façon légèrement incohérente avec le décor en 3D, je ne sais pas comment l'expliquer alors j'éspère que le schéma ci dessous peut aider.
image:
Le point P représente la position du sprite Et oui, j'ai inversé les axes Z et Y intentionnellement par soucis de compréhension personnelle
Je vous vous remercie d'avance!
Kabcorp Utilisateur confirmé: Rang **
Messages : 315 Localisation : Savoie Projet Actuel : trop...
Sujet: Re: Sprites en 2D dans un monde en 3D Dim 12 Juin 2016 - 1:15
Vous voulez un jeu pas comme les autres? Voici DeFRaG :
Simpson55 Débutant
Messages : 11
Sujet: Re: Sprites en 2D dans un monde en 3D Dim 12 Juin 2016 - 9:10
Merci d'avoir répondu ^^
J'avais déjà essayé quelque chose dans le même style mais le soucis est que le sprite est déformé par la projection en perspective, autrement dit mettons par exemple que si l'objet est près de la caméra, 1 pixel du sprite en occupera en réalité 8 sur l'écran. voilà j'espère que c'est que c'est plus compréhensible
Kabcorp Utilisateur confirmé: Rang **
Messages : 315 Localisation : Savoie Projet Actuel : trop...
Sujet: Re: Sprites en 2D dans un monde en 3D Dim 12 Juin 2016 - 11:26
Tout est déformé avec un angle de vue superieur à 45°.
Vous voulez un jeu pas comme les autres? Voici DeFRaG :
Simpson55 Débutant
Messages : 11
Sujet: Re: Sprites en 2D dans un monde en 3D Dim 12 Juin 2016 - 12:02
Ah non afficher un hud c'est très simple seulement là je voudrais représenter un objet présent dans le monde en 3D ( et donc qui a des coordonnées x,y,z ) avec un sprite en 2D qui n'est jamais déformé par la projection, et qui n'a donc que des coordonnés x et y. Les seuls exemples qui me viennent à l'esprit sont des jeux comme F zero et Mario Kart sur SNES où les obstacles et tous les autres objets fonctionnent de la même façon
Kabcorp Utilisateur confirmé: Rang **
Messages : 315 Localisation : Savoie Projet Actuel : trop...
Sujet: Re: Sprites en 2D dans un monde en 3D Dim 12 Juin 2016 - 12:17
Il faut dessiner la sprite et simuler sa position dans un faux espace 3D...
J'ai déjà éssayé mais ça ma vite gonflé =/
Attend un peut et peut-être que tu auras ta réponse via un autre utilisateur =)
_________________
Vous voulez un jeu pas comme les autres? Voici DeFRaG :
Simpson55 Débutant
Messages : 11
Sujet: Re: Sprites en 2D dans un monde en 3D Dim 12 Juin 2016 - 12:40
à vrai dire ça j'avais déjà réussi à le faire, comme je l'avais dit dans mon premier post avec une formule du genre x2d = ( x3d / y3d ) * échelleX y2d = ( z3d / y3d ) * échelleY J'ai eu de très bons résultats en bidouillant un peu les variables échelleX et échelleY à peu près égales à la longueur et à la largeur de l'écran respectivement mais je préfère ne pas compter sur les approximations.
Sujet: Re: Sprites en 2D dans un monde en 3D Dim 12 Juin 2016 - 13:01
T'as un exemple officiel GameMaker avec un petit Doom, et comme dans doom les sprites sont en 2d et suivent bien la caméra, ça devrait t'aider. Cherche doom game maker sur google tu devrais trouver ton bonheur.
_________________
Simpson55 Débutant
Messages : 11
Sujet: Re: Sprites en 2D dans un monde en 3D Dim 12 Juin 2016 - 13:18
Je n'ai trouvé que des liens morts mais merci quand même ^^"
Sujet: Re: Sprites en 2D dans un monde en 3D Dim 12 Juin 2016 - 14:02
Effectivement c'est devenu la mort les exemples GM depuis GMS... C'est stupide c'était 90% de l'interet de GM qu'y ai autant d'exemples, maintenant y a plus que de la daube.
Sujet: Re: Sprites en 2D dans un monde en 3D Dim 12 Juin 2016 - 14:57
Merci d'avoir trouvé l'exemple mais je crains que ça ne soit pas ce que je cherches Ce jeu utilise la fonction d3d_draw_wall pour dessiner les ennemis, c'est justement ce que j'essaie d'éviter à tout prix.
Sujet: Re: Sprites en 2D dans un monde en 3D Dim 12 Juin 2016 - 16:16
Je comprend pas le soucis d'utiliser d3d_draw_wall, en gros tu veux que le sprite soit toujours en scale x1? Oubien t'as un soucis avec l'interpolation des pixels? (chose qui peut être désactivée en principe).
_________________
Simpson55 Débutant
Messages : 11
Sujet: Re: Sprites en 2D dans un monde en 3D Dim 12 Juin 2016 - 16:20
Oui c'est bien pour garder le sprite à taille réel
Sujet: Re: Sprites en 2D dans un monde en 3D Dim 12 Juin 2016 - 16:22
Mais tu peux pas juste changer la taille du "wall" en fonction de la distance a la camera?
_________________
Simpson55 Débutant
Messages : 11
Sujet: Re: Sprites en 2D dans un monde en 3D Dim 12 Juin 2016 - 16:31
J'y ai pensé mais quelle serait la relation à calculer ? et puis les côtés du mur dessiné seraient plus ou moins verticaux selon leur position par rapport à la caméra
Sujet: Re: Sprites en 2D dans un monde en 3D Dim 12 Juin 2016 - 16:34
Dans l'exemple du fps j'ai essayé de faire:
Code:
texture_set_interpolation(false) tex = sprite_get_texture(tex_barrel,image_index) r = point_distance(x, y, obi_player.x, obi_player.y)/32 d3d_draw_wall(x-r*global.camsin,y-r*global.camcos,r*2, x+r*global.camsin,y+r*global.camcos,0,tex,1,1)
Le soucis c'est que ça scintille, peut être parce que j'ai pas réglé le z en fonction de la distance a la caméra.
_________________
Simpson55 Débutant
Messages : 11
Sujet: Re: Sprites en 2D dans un monde en 3D Dim 12 Juin 2016 - 16:47
En ce qui me concerne ce code semble bien marcher, bon il y a encore quelques défauts de déformation mais je pense pouvoir faire avec, merci en tout cas
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
Sujet: Re: Sprites en 2D dans un monde en 3D Mar 14 Juin 2016 - 16:00
s'il existait des matrices dans game maker, la question se poserait meme pas. Un simple calcul de matrice inverse et ce serait réglé.
Sujet: Re: Sprites en 2D dans un monde en 3D Mar 14 Juin 2016 - 17:39
Bah tu peux faire des matrices avec des ds_grid, mais faut écrire les fonctions de transformation a la mano. J'imagine que ça existe déjà quand même.
_________________
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
Sujet: Re: Sprites en 2D dans un monde en 3D Mer 15 Juin 2016 - 9:18
J'avais fait une bibliothèque de script de matrice qui fonctionnait pas mal et qui fonctionnait conjointement avec la 3D de Game Maker, mais je n'arrive plus a remettre la main dessus. Faudrait que je la refasse :3 (Encore faudrait-il aussi que j'ai encore acces a la 3D de Game Maker. Je ne pense pas avoir une version compatible avec.)