IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

Projection de gameplay 2D sur un mesh 3D


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Par défaut Projection de gameplay 2D sur un mesh 3D
    Bonjour,

    Ma question est d'ordre général donc je pense être dans la bonne catégorie mais n'hésitez pas à me dire si je dois migrer le topic

    Voilà, pour un projet de jeu, j'aurais besoin de "projeter" un gameplay 2D sur une surface 3D, comme une texture. Au-delà de la projection, il faudrait que je puisse intéragir (avec un curseur) avec ce gameplay dans un univers en 3D. En gros, quelque chose qui se rapproche des puzzles de The Witness.

    J'avoue avoir du mal à visualiser comment m'y prendre techniquement. Sachant que je préfèrerais rester sur un moteur de jeu existant (de préférence Unity mais pourquoi pas Unreal) pour prototyper plus rapidement de part mon expérience personnelle. Si toutefois il n'y a pas le choix, je peux aussi considérer repartir "from scratch" sur un framework plus "bas-niveau"...

    Je voulais donc recueillir des avis sur la manière d'aborder ce dév ? Mon idée de base consisterait à "filmer" un gameplay 2D quelque part dans le monde à l'écart et le projeter sur le mesh 3D. Il faudrait cependant récupérer la projection du curseur sur la texture et la retranscrire pour l'espace 2D "réel" afin que le gameplay 2D réagisse. Est-ce que ça vous semble une bonne approche ? Est-ce qu'il y en a d'autres auxquelles je ne pense pas qui seraient plus efficaces/optimisées ? Est-ce que Unity et/ou Unreal permettent ce genre de choses (je n'ai pas trouvé pour Unity et je ne connais pas assez bien Unreal d'un point de vue dév.) ?

    Merci d'avance des réponses et n’hésitez pas à demander plus de précisions si ce n'est pas clair

  2. #2
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Comme quoi faire de la 3D bas niveau peut être utile quelque fois :p
    Je suis étonné que Unity ne propose pas ce genre de fonctionnalité.

    La transformation 3D en 2D se fait deja par ta carte graphique (vu que tu indique des coordonnées 3D qu'elle transforme en 2D par rapport a la projection).

    Donc si tu veux faire de la 3D en 2D il faut faire MatrixProjection*MatrixMoelView*point3D.
    Et une division point3D = point3D/MatrixFinal[3][3].

    Si tu veux faire de la 2D a la 3D (donc une coordonnée 2D qui te donne les coordonnée 3D par rapport a la projection) il faut tout simplement faire l'inverse

  3. #3
    Membre Expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2006
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 1 031
    Par défaut
    Petite réflexion rapide si ça peut t'aider :

    - Tu rends ton gameplay via une camera sur une rendertexture
    - Tu dessines cette textures sur un quad
    - Tu fais un raycast de ton curseur dans le monde, qui te renvoie la world position touchée sur ton cube
    - Comme tu connais exactement la position de ton cube et sa taille, tu peux interpoler facilement.

    Sinon si tu peux faire ton jeu 2D via le system d'UI de Unity saches que tu peux le faire directement sur une UI et l'afficher dans l'espace monde :
    https://docs.unity3d.com/Manual/HOWTO-UIWorldSpace.html

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Par défaut
    Merci pour vos réponses rapides

    Comme tu dis MoDDiB, le Render Texture de Unity me paraît une bonne approche (https://docs.unity3d.com/Manual/clas...erTexture.html)
    Ca semble même correspondre exactement à ce que je recherche, je vais donc essayer de prototyper ça pour voit si ça fonctionne.

    La partie de récup des inputs joueurs sur le mesh 3D m'inquiète moins, par raycast ça doit bien se faire en effet.

    Pour ce qui est du gameplay 2D, la UI n'est pas très adaptée à ça d'expérience. Autant utiliser la partie 2D de Unity qui fonctionne plutôt bien et la filmer je pense...

Discussions similaires

  1. [Oracle 10g] Projection d'un point sur un segment
    Par CosmoPic dans le forum SQL
    Réponses: 1
    Dernier message: 05/08/2008, 10h08
  2. Réponses: 3
    Dernier message: 10/06/2008, 10h45
  3. Projection d'un point sur une droite.
    Par méphistopheles dans le forum Mathématiques
    Réponses: 9
    Dernier message: 27/05/2007, 23h35
  4. Projection d'une courbe sur un maillage 3D
    Par Kevinyaya dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 17/05/2006, 10h00
  5. Réponses: 4
    Dernier message: 24/01/2005, 08h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo