AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez
 

 Sprites en 2D dans un monde en 3D

Aller en bas 
AuteurMessage
Simpson55
Débutant


Messages : 11

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptySam 11 Juin 2016 - 15: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:
 

Je vous vous remercie d'avance!  gnii
Revenir en haut Aller en bas
Kabcorp
Utilisateur confirmé: Rang **
Kabcorp

Messages : 315
Localisation : Savoie
Projet Actuel : trop...

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptySam 11 Juin 2016 - 23:15

Hello!

Appel ce script Wink

d3d_draw_sprite()
Code:
//Call: d3d_draw_sprite(sprite,index,x,y,z,x_rot,y_rot,z_rot,x_scale,y_scale,z_scale)
d3d_transform_set_identity()
d3d_transform_set_scaling(argument8,argument9,argument10)
d3d_transform_add_rotation_x(argument5)
d3d_transform_add_rotation_y(argument6)
d3d_transform_add_rotation_z(argument7)
d3d_transform_add_translation(argument2,argument3,argument4)

draw_sprite(argument0,argument1,0,0)

d3d_transform_set_identity()

_________________
Vous voulez un jeu pas comme les autres? Voici DeFRaG :
 
Revenir en haut Aller en bas
http://kabcorp.fr
Simpson55
Débutant


Messages : 11

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyDim 12 Juin 2016 - 7: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 Wink
Revenir en haut Aller en bas
Kabcorp
Utilisateur confirmé: Rang **
Kabcorp

Messages : 315
Localisation : Savoie
Projet Actuel : trop...

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyDim 12 Juin 2016 - 9:26

Tout est déformé avec un angle de vue superieur à 45°.

Tu veut que ta sprite soit affichée comme HUD?
(Comme en haut sur les côtées: https://chasmofthought.files.wordpress.com/2016/01/crash-bandicoot-3-medieval.jpg?w=680)

_________________
Vous voulez un jeu pas comme les autres? Voici DeFRaG :
 
Revenir en haut Aller en bas
http://kabcorp.fr
Simpson55
Débutant


Messages : 11

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyDim 12 Juin 2016 - 10: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
Sprites en 2D dans un monde en 3D Super_Mario_Kart_01
Revenir en haut Aller en bas
Kabcorp
Utilisateur confirmé: Rang **
Kabcorp

Messages : 315
Localisation : Savoie
Projet Actuel : trop...

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyDim 12 Juin 2016 - 10: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 :
 
Revenir en haut Aller en bas
http://kabcorp.fr
Simpson55
Débutant


Messages : 11

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyDim 12 Juin 2016 - 10: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.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9101
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyDim 12 Juin 2016 - 11: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.

_________________
Sprites en 2D dans un monde en 3D Runningpotato1Sprites en 2D dans un monde en 3D TvF6GED
Revenir en haut Aller en bas
Simpson55
Débutant


Messages : 11

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyDim 12 Juin 2016 - 11:18

Je n'ai trouvé que des liens morts triste2 mais merci quand même ^^"
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9101
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyDim 12 Juin 2016 - 12: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.

Bref après pas mal de recherches j'ai réussi a choper l'exemple: http://wyvup.com/?c=A2rzir3

_________________
Sprites en 2D dans un monde en 3D Runningpotato1Sprites en 2D dans un monde en 3D TvF6GED
Revenir en haut Aller en bas
Simpson55
Débutant


Messages : 11

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyDim 12 Juin 2016 - 12:57

Merci d'avoir trouvé l'exemple mais je crains que ça ne soit pas ce que je cherches Embarassed
Ce jeu utilise la fonction d3d_draw_wall pour dessiner les ennemis, c'est justement ce que j'essaie d'éviter à tout prix.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9101
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyDim 12 Juin 2016 - 14: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).

_________________
Sprites en 2D dans un monde en 3D Runningpotato1Sprites en 2D dans un monde en 3D TvF6GED
Revenir en haut Aller en bas
Simpson55
Débutant


Messages : 11

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyDim 12 Juin 2016 - 14:20

Oui c'est bien pour garder le sprite à taille réel Smile
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9101
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyDim 12 Juin 2016 - 14:22

Mais tu peux pas juste changer la taille du "wall" en fonction de la distance a la camera?

_________________
Sprites en 2D dans un monde en 3D Runningpotato1Sprites en 2D dans un monde en 3D TvF6GED
Revenir en haut Aller en bas
Simpson55
Débutant


Messages : 11

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyDim 12 Juin 2016 - 14: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
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9101
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyDim 12 Juin 2016 - 14: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.

_________________
Sprites en 2D dans un monde en 3D Runningpotato1Sprites en 2D dans un monde en 3D TvF6GED
Revenir en haut Aller en bas
Simpson55
Débutant


Messages : 11

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyDim 12 Juin 2016 - 14: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 gnii
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
glcraft

Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyMar 14 Juin 2016 - 14: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é.

_________________
GLEngine, la génération procédurale avancée !
Image:
 
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
onilink_
Modérateur
onilink_

Messages : 9101
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyMar 14 Juin 2016 - 15: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.

_________________
Sprites en 2D dans un monde en 3D Runningpotato1Sprites en 2D dans un monde en 3D TvF6GED
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
glcraft

Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyMer 15 Juin 2016 - 7: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.)

_________________
GLEngine, la génération procédurale avancée !
Image:
 
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
Simpson55
Débutant


Messages : 11

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyMer 15 Juin 2016 - 8:31

il n'y a aucun moyen de faire sans matrice?
Revenir en haut Aller en bas
Simpson55
Débutant


Messages : 11

Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D EmptyJeu 16 Juin 2016 - 12:58

J'ai bien trouvé une solution différente qui fonctionne mais qui est extrêmement lente et donc qui perd tout intérêt, j'avoues que ça me désespère...
Revenir en haut Aller en bas
Contenu sponsorisé




Sprites en 2D dans un monde en 3D Empty
MessageSujet: Re: Sprites en 2D dans un monde en 3D   Sprites en 2D dans un monde en 3D Empty

Revenir en haut Aller en bas
 
Sprites en 2D dans un monde en 3D
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» 91 % des crimes d’honneur dans le monde sont commis par des musulmans
» Les différentes formes d'immatriculation dans le monde
» Les 10 langues les plus parlées dans le monde
» Photos en live des ports dans le monde (webcam)
» Tableau!

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide confirmés-
Sauter vers: