Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: View et caméra  (Lu 4514 fois)

0 Membres et 1 Invité sur ce sujet

christophedlr

  • Full Member
  • ***
  • Messages: 151
    • Voir le profil
    • E-mail
View et caméra
« le: Septembre 04, 2012, 04:38:07 pm »
Bonjour,

J'ai deux petites questions :
Quel est l'intérêt des View ? En SFML 1.6 (je sais pas si la 2.0 change ce fonctionnement), si j'affiche quelque chose par exemple un pont puis que je modifie la vue pour n'afficher que la portion où se trouve le pont, son emplacement est modifié (par exemple il est au centre de la fenêtre, si je change la vue pour un carré de 500x500 par exemple avec toujours le point bien au milieu, ben il est plus à la même place). D'après ce que j'ai compris une fois une vue modifiée il faut qu'on recalcule la position c'est ça ?


Seconde question :
Est-ce que la SFML 1.6 ou 2.0 à un système smiliaire à la caméra d'OpenGL ? Je pensais à la base que c'était ce que faisait la vue mais ce n'est à priori pas le cas. Je souhaite pouvoir modifier la vue (déplacer la caméra) sans devoir recalculer les positions, comme le permet OpenGL.

Merci d'avance pour la réponse.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : View et caméra
« Réponse #1 le: Septembre 04, 2012, 05:00:06 pm »
Citer
Quel est l'intérêt des View ?
Afficher un autre endroit de ta scène 2D sans avoir à déplacer toutes les entités qui la composent. C'est pareil qu'une caméra en 3D, et même dans la vraie vie d'ailleurs.

Citer
Est-ce que la SFML 1.6 ou 2.0 à un système smiliaire à la caméra d'OpenGL ? Je pensais à la base que c'était ce que faisait la vue mais ce n'est à priori pas le cas.
Si, c'est très exactement ça.

J'ai pas très bien compris ton problème de position, mais tu dois t'y prendre mal. Tu peux nous en dire plus ?
Laurent Gomila - SFML developer

christophedlr

  • Full Member
  • ***
  • Messages: 151
    • Voir le profil
    • E-mail
Re : View et caméra
« Réponse #2 le: Septembre 04, 2012, 07:25:24 pm »
Bonjour Laurent,

D'abord merci d'avoir pris le temps de répondre à mon message (malgré que tu n'as pas forcément tout le temps libre que tu désires, cf. ta réponse concernant les tutos SFML2 ;) ).

Alors pour illustrer mon problème, voici deux photos d'écrans.


Première image : le programme de test sans la vue :


Seconde image : le programme de test avec une vue de 380x380 :


Ici je ne comprend pas deux choses : le déplacement de toute la scène correspond à la vue (donc il me faut alors recalculer les positions), d'autres part il fait un zoom arrière (on voit bien que le pont est beaucoup plus petit).

Alors peut être n'ais-je pas su utiliser les vues correctement. Je te montre le code en question :
#include <iostream>
#include <SFML/Graphics.hpp>

int main (void)
{
    using namespace sf;

    RenderWindow window( VideoMode(640, 480, 32), "Test Vues" );
    Image grass, water, bridge;
    Sprite grassSp[300], waterSp[20], bridgeSp[20];
    View defaultView, newView;

    defaultView = window.GetDefaultView();
    window.SetView(newView);
    newView.Move(380, 380);

    grass.LoadFromFile("grass.png");
    grass.SetSmooth(false);

    water.LoadFromFile("water.png");
    water.SetSmooth(false);

    bridge.LoadFromFile("bridge.png");
    bridge.SetSmooth(false);


    while ( window.IsOpened() )
    {
        Event event;
        while ( window.GetEvent(event) )
        {
            if (event.Type == Event::Closed)
            {
                window.Close();
            }
        }

        window.Clear();

        int x = 0;
        for (int i = 0; i < 15; i++)
        {
            for (int j = 0; j < 20; j++)
            {
                grassSp[x].SetImage(grass);
                grassSp[x].SetPosition(32*j, 32*i);
                window.Draw(grassSp[x]);
                x++;
            }
        }

        waterSp[0].SetImage(water);
        waterSp[0].SetPosition(128, 128);
        window.Draw(waterSp[0]);

        waterSp[1].SetImage(water);
        waterSp[1].SetPosition(160, 128);
        window.Draw(waterSp[1]);

        waterSp[2].SetImage(water);
        waterSp[2].SetPosition(128, 160);
        window.Draw(waterSp[2]);

        waterSp[3].SetImage(water);
        waterSp[3].SetPosition(160, 160);
        window.Draw(waterSp[3]);

        bridgeSp[0].SetImage(bridge);
        bridgeSp[0].SetPosition(320, 320);
        window.Draw(bridgeSp[0]);

        bridgeSp[1].SetImage(bridge);
        bridgeSp[1].SetPosition(384, 384);
        window.Draw(bridgeSp[1]);

        window.Display();
    }

    return 0;
}
 

J'utilises encore la SFML 1.6 par contre, je songe à passer en 2.0 mais j'attend tes tutos pour ne pas être trop largué quoi ;)

Merci d'avance pour ton aide.

P.S. Par contre au passage je me permet une autre question : il est possible de jouer avec les vues afin d'avoir comme un FPS mais en 2D ? Je ne sais pas si c'est une chose possible à faire.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : View et caméra
« Réponse #3 le: Septembre 04, 2012, 07:59:45 pm »
Tu n'initialises pas ta vue, du coup elle garde sa taille par défaut qui est 1000x1000. D'où le zoom arrière (ta scène de 640x480 est toute petite dans la vue de 1000x1000). J'ai l'impression que tu te mélanges entre tes deux vues, d'ailleurs tu n'en as besoin que d'une.

Citer
Par contre au passage je me permet une autre question : il est possible de jouer avec les vues afin d'avoir comme un FPS mais en 2D ? Je ne sais pas si c'est une chose possible à faire.
Si tout ce qu'il faut c'est du scrolling, bien sûr. C'est à ça que servent les vues.
Laurent Gomila - SFML developer

christophedlr

  • Full Member
  • ***
  • Messages: 151
    • Voir le profil
    • E-mail
Re : View et caméra
« Réponse #4 le: Septembre 04, 2012, 08:08:32 pm »
Dans le cas de ma dernière question c'est assez particulier, car pour un FPS tu es dans la peau du personnage, mais je ne sais pas puisqu'il y a pas l'axe Z si on peut reproduire l'impression d'être dans la peau du personnage.

Mais te tracasse pas avec cette dernière question, elle m'est venue comme ça dans ma petite caboche trouée lol.

Par contre je viens de tester en déplacant en fait la vue de la fenêtre (celle fournie donc avec), et par contre bien que j'ai plus le soucis du zoom, je me retrouve avec le même rendu donc en haut à gauche. C'est normal je présume ? Mais comment géré le déplacement de la vue justement ? Il suffit pas de faire un move si ?

Pour gérer le scrolling puisque justement tu en parlé, il faut comme je passe par un truc particulier ? Parce que je doute que je puisse afficher une map de 1000x1000 par exemple dans 640x480, je pense que SFML va hurler non ? Parce que le but justement de la vue d'après ce que tu m'as expliqué, c'est de déplacé et donc ne pas "réafficher" la nouvelle partie de la scène ?

Ou alors j'ai toujours rien compris.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : View et caméra
« Réponse #5 le: Septembre 04, 2012, 08:15:57 pm »
Citer
Dans le cas de ma dernière question c'est assez particulier, car pour un FPS tu es dans la peau du personnage, mais je ne sais pas puisqu'il y a pas l'axe Z si on peut reproduire l'impression d'être dans la peau du personnage.
Un jeu à la première personne en 2D ? Je ne vois pas à quoi ça pourrait ressembler.

Citer
Par contre je viens de tester en déplacant en fait la vue de la fenêtre (celle fournie donc avec), et par contre bien que j'ai plus le soucis du zoom, je me retrouve avec le même rendu donc en haut à gauche. C'est normal je présume ? Mais comment géré le déplacement de la vue justement ? Il suffit pas de faire un move si ?
Le but de décaler la vue c'est justement que toute la scène bouge. Et... c'est ça ton problème ? Tu t'attendrais à voir quoi en fait ? J'ai du mal à cerner ce qui te pose problème.

Citer
Pour gérer le scrolling puisque justement tu en parlé, il faut comme je passe par un truc particulier ? Parce que je doute que je puisse afficher une map de 1000x1000 par exemple dans 640x480, je pense que SFML va hurler non ? Parce que le but justement de la vue d'après ce que tu m'as expliqué, c'est de déplacé et donc ne pas "réafficher" la nouvelle partie de la scène ?
Là encore je ne comprends pas trop ton interrogation. Les choses sont ultra simples : tu bouges la vue, toute la scène se déplace. C'est du scrolling. Point. C'est comme si ta scène était une seule grosse entité et que tu la déplaçais.
Laurent Gomila - SFML developer

christophedlr

  • Full Member
  • ***
  • Messages: 151
    • Voir le profil
    • E-mail
Re : View et caméra
« Réponse #6 le: Septembre 04, 2012, 09:12:37 pm »
Pour la déplacer avec la vue, faut bien que toute la scène en question (la map plutôt) soit chargé, hors que je sache si j'ai des tiles de 32x32 et une fenêtre de 640x480, je ne pourrais pas dépasser 20 tiles horizontaux sur 15 tiles verticaux, si j'essai d'en mettre plus je me fais envoyer boulet par SFML. Donc là mon interrogation est comment faire ? Car je sais faire en réaffichant tout, mais pas en déplacant la vue puisqu'elle ne pourra pas afficher le reste, à moins de réafficher toute la partie de la map concerné par le déplacement de la vue, dans ce cas là quel intérêt de la vue ?

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Re : View et caméra
« Réponse #7 le: Septembre 04, 2012, 10:12:54 pm »
Pour la déplacer avec la vue, faut bien que toute la scène en question (la map plutôt) soit chargé, hors que je sache si j'ai des tiles de 32x32 et une fenêtre de 640x480, je ne pourrais pas dépasser 20 tiles horizontaux sur 15 tiles verticaux, si j'essai d'en mettre plus je me fais envoyer boulet par SFML. Donc là mon interrogation est comment faire ? Car je sais faire en réaffichant tout, mais pas en déplacant la vue puisqu'elle ne pourra pas afficher le reste, à moins de réafficher toute la partie de la map concerné par le déplacement de la vue, dans ce cas là quel intérêt de la vue ?

Pourquoi tu vas de faire envoyer boulet ? Construis ta map comme tu veux :
- Ce qui sort de l'écran sera ignoré par la carte graphique (mais sera bien là)
- Si tu bouge ta vue en direction de ce qui est sensé être hors de l'écran, ben ça entrera dans le champ (et une partie de la map en sortira)

Je dirais que tu n'as pas besoin de te soucier de ce qui peut sortir de l'écran, sauf si c'et vraiment trèèès trèèèèèèèès grand (et ce sera parce que ça prend beaucoup de place en mémoire)

Charge ta map entière et essaie de déplacer la vue pour que tu voies comment ça marche (c'est très facile, tu verras)

christophedlr

  • Full Member
  • ***
  • Messages: 151
    • Voir le profil
    • E-mail
Re : View et caméra
« Réponse #8 le: Septembre 04, 2012, 10:29:09 pm »
Ben écoute je me souviens que pendant mes tests j'avais un soucis à cause du setSmooth que Laurent m'a dit de désactivé, et du coup dès que je voulais mettre plus de 20 tiles sur la ligne, ça plantait carrément. C'est pour ça que je disais ça.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : View et caméra
« Réponse #9 le: Septembre 05, 2012, 12:52:26 am »
Citer
dès que je voulais mettre plus de 20 tiles sur la ligne, ça plantait carrément
Dans ce cas c'est ton code qui merdait, pas SFML ;)
Laurent Gomila - SFML developer

christophedlr

  • Full Member
  • ***
  • Messages: 151
    • Voir le profil
    • E-mail
Re : View et caméra
« Réponse #10 le: Septembre 07, 2012, 09:58:05 am »
Ok ben dès que je récupère mon PC (il est en réparation), je teste. Si ca merde je posterais le code ici histoire que tu m'expliques comment corriger ;)

Par contre j'hésite entre rester sur la 1.6 et attendre que tu ai terminé les tutos sur la 2.0, où passer directement sur cette dernière.

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Re : View et caméra
« Réponse #11 le: Septembre 07, 2012, 11:39:14 am »
Ok ben dès que je récupère mon PC (il est en réparation), je teste. Si ca merde je posterais le code ici histoire que tu m'expliques comment corriger ;)

Par contre j'hésite entre rester sur la 1.6 et attendre que tu ai terminé les tutos sur la 2.0, où passer directement sur cette dernière.

Hésite pas, passe sur le 2.0
De plus il y a déjà assez de tutos, y'a la doc, et si vraiment t'as besoin tu peux lire les tutos de la 1.6 ave la doc de la 2.0 sous les yeux pour faire le passage de l'une à l'autre.
Et si jamais, y'a toujours le forum.


christophedlr

  • Full Member
  • ***
  • Messages: 151
    • Voir le profil
    • E-mail
Re : View et caméra
« Réponse #12 le: Septembre 09, 2012, 10:38:00 pm »
Ouais c'est ce que j'envisage ne serais-ce que pour les méthodes (minuscule pour la première lettre au lieu de  majuscule, c'est déjà bien plus pratique à mon goût ;) ).

 

anything