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

Auteur Sujet: [Résolu]Les Vues??  (Lu 4390 fois)

0 Membres et 1 Invité sur ce sujet

Gorf

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
    • E-mail
[Résolu]Les Vues??
« le: Mai 05, 2013, 09:58:32 pm »
Bonjour à tous,
aujourd'hui (ou plutôt cette nuit),  j'ai une question très simple à vous poser.
En fait, je ne comprends pas le concept de Vue.  :-\
Ça serait sympa si je pouvais avoir un exemple :>

Est-ce que ça pourrait être, par exemple, centré sur un personnage, se déplaçant sur un terrain (avec des tiles), terrain ayant sa propre vue ?

Merci de vos réponses!
« Modifié: Mai 10, 2013, 03:16:19 pm par Gorf »
Bouffer du code c'est sain et plein de protéines !

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Les Vues??
« Réponse #1 le: Mai 05, 2013, 10:16:00 pm »
As-tu lu le tutoriel ?
Laurent Gomila - SFML developer

Gorf

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
    • E-mail
Re : Les Vues??
« Réponse #2 le: Mai 05, 2013, 10:18:22 pm »
Oui, évidemment, cependant je ne comprends pas bien les exemples proposés.
Bouffer du code c'est sain et plein de protéines !

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Les Vues??
« Réponse #3 le: Mai 05, 2013, 10:27:17 pm »
Dans ce cas je passe mon tour, je ne peux pas faire mieux que le tutoriel que j'ai écrit :P
Laurent Gomila - SFML developer

Gorf

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
    • E-mail
Re : Les Vues??
« Réponse #4 le: Mai 05, 2013, 10:47:00 pm »
Pas de problème, de toute façon c'est pas ta faute  ;D
Bouffer du code c'est sain et plein de protéines !

christophedlr

  • Full Member
  • ***
  • Messages: 153
    • Voir le profil
    • E-mail
Re : Les Vues??
« Réponse #5 le: Mai 06, 2013, 12:02:06 pm »
Bonjour Gorf,

De ce que j'en ai compris (reprend moi Laurent si je me plante), les vues te permettent le déplacement de ta scène, la rotation ainsi que le zoom.

En effet, sur une map mettons de 1600x1200 avec une fenêtre 800x600, tu as une map deux fois plus grande. Certains et c'été le cas en SDL 1.2 (la nouvelle  je ne sais honnêtement pas comment elle gère), il fallait alors afficher les 800x600 pixels de ta map et au bon moment affiché les 800x600 autres pixels (en gros hein ;) ).

Là, sur la SFML2 (et 1.6 fait pareil je crois), tu affiches 1600x1200 mais ta fenêtre faisant que 800x600, tu n'auras que cette première partie. Au bon moment, tu te contente de simplement déplacer la vue sur les 800x600 pixels restant.

La fenêtre est en deux parties :
- Rendu théorique
- Rendu pratique

Le rendu théorique correspond à ta map : 1600x1200. Ta fenêtre SFML a cette information de rendu et toi tu y gères ce qui s'y passe quoi qu'il arrive, donc toute ta map est chargée (au contraire de SDL1.2 où tu ne charges que le visuel).

Le rendu pratique, correspond à ce que ta fenêtre affiche : 800x600. C'est donc ce que Laurent nous a appelé la vue. La vue est la partie de la fenêtre qui affiche.


Comme c'est ce qui affiche à l'écran, tu peux aussi faire une rotation ou un zoom de ce qui est affiché, mais derrière tu ne produit aucun calcul pour cela, c'est la vue qui s'en charge toute seule à l'affichage.

Pour exemple, tu as un personnage allant du point A à gauche à B à droite. Tu lui dit donc de se déplacer vers la droite, mais tu demandes à la vue de faire une rotation à 180°.

Visuellement tu auras donc le point B à gauche et A à droite. On se dit alors qu'on doit faire déplacer à gauche donc dans ce cas là et c'est vrai mais UNIQUEMENT avec la SDL1.2.
La tu as utilisé la vue, donc le rendu pratique. Le rendu théorique dit toujours : B est à droite de A, ton code fait donc déplacer à droite.

Le rendu pratique fait alors quoi ? Au moment du déplacement, il dit : "oui mais on m'a fait faire une rotation 180°, donc droite devient gauche", il va donc afficher un déplacement gauche et rejoindre le fameux point B comme prévu.



La comparaison est celle-ci : tu fais un code pour une chose standard, ici déplacement à droite. La vue est ce qui est affiché et ne dépend pas de ton code, les changements visuels à faire ne seront donc pas dépendant de ce que tu as codé derrière mais dépendant des instructions que tu as donné à la vue en question.

J'espère t'avoir un peu plus éclairé.

P.S. : Ma comparaison avec la SDL1.2 est  pour mieux expliquer le fait que tu n'as pas à changer ton code comme on pourrait le croire (et serait obligé de faire en SDL1.2 qui ne gère pas les vues), il suffit d'utiliser les vues qui s'occupent de traduire l'ordre donné afin d'afficher visuellement ce que tu as demandé indépendamment de ton code.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Les Vues??
« Réponse #6 le: Mai 06, 2013, 12:13:08 pm »
Mouais... y a quelques approximations mais on va dire que dans l'ensemble ça va :P

Ca m'étonne toujours quand les gens ne comprennent pas, car c'est un système ultra-commun : la vue n'est rien d'autre qu'une caméra. Tu as d'un côté ton "monde" 2D, dont on peut dire qu'il existe en dehors de toute fenêtre l'affichant, et de l'autre côté tu as une fenêtre qui veut montrer un bout de ce monde. Du coup on peut choisir quel morceau afficher, et ça c'est la vue.

C'est pareil que le concept de caméra dans un moteur 3D, le monde 3D existe de manière absolue mais il faut bien l'afficher selon un point de vue particulier, donné par la caméra (qui peut être par exemple en première personne, ou vue de dessus). Pareil quand tu filmes avec ta caméra, ou quand tu prends une photo (là je parle de la vraie vie). Ca prend une image du décor selon un point de vue particulier.
Laurent Gomila - SFML developer

Eroy

  • Jr. Member
  • **
  • Messages: 60
    • Voir le profil
    • E-mail
Re : Les Vues??
« Réponse #7 le: Mai 06, 2013, 01:50:50 pm »
Une démo ?

Ici je vais utiliser deux vues différentes sur un même contenu (un contenu de test tout pourri x3)

voilà les modifications que je vais appliquer aux vues (et uniquement elles) :

attention, je parle en pixels pour les viewports mais ils ont des valeurs en pourcentage par rapport à la dimension du contenu de la fenetre (facteur de 0 à 1)

// taille visible de la zone, tout ce qui dépasse n'est pas visible, c'est le cadre (viewport)
- vue1 dimension de la vue à 600x800 (à faire avec viewport.width et viewport.height)
- vue2 dimension de la vue à 600x600

// position du cadre
- vue2 position à 600x0 (viewport.left)

// taille du contenu, ça agrandi ou rétrécie le contenu en gros, c'est la zone visible à l'intérieur du cadre
- vue1 taille du contenu à 1100x1100 (setSize)
- vue2 taille du contenu à 900x2000

// on peut déplacer la caméra dans le contenu en lui-même
- vue2 position du contenu à 0x500 (setCenter)

- on attend 5 secondes
- vue1 déplacement du contenu à y = 500 (setCenter)
- vue2 déplacement du contenu à y = 0
(j'ai mis des transitions pour que se soit plus évident)


Gorf

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
    • E-mail
Re : Les Vues??
« Réponse #8 le: Mai 06, 2013, 05:43:13 pm »
Je vois.
Autre question, en 1.6, RenderWindow.Capture() ne capture que la Vue courante, ou la Fenêtre entière ?
Au passage, Merci :)
Bouffer du code c'est sain et plein de protéines !

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Les Vues??
« Réponse #9 le: Mai 06, 2013, 05:46:38 pm »
Avec SFML 1.6, la vue courante occupe toujours la fenêtre entière, donc la question ne se pose pas. Peut-être voulais-tu dire "la vue courante ou bien la scène entière" ? Dans ce cas, la réponse est : la fenêtre.
Laurent Gomila - SFML developer

Gorf

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
    • E-mail
Re : Les Vues??
« Réponse #10 le: Mai 06, 2013, 05:58:27 pm »
Par Vue courante, je veux dire celle mise en place par SetView().
Serait-ce pareil ?
Qui plus est, qu'entends-tu par scène?
*se sent noob*
Bouffer du code c'est sain et plein de protéines !

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Les Vues??
« Réponse #11 le: Mai 06, 2013, 06:54:28 pm »
Citer
Par Vue courante, je veux dire celle mise en place par SetView().
Serait-ce pareil ?
Oui.
La fonction de capture prend vraiment ce que tu vois à un instant T sur la fenêtre. Ne cherche pas plus compliqué ;)

Citer
Qui plus est, qu'entends-tu par scène?
L'ensemble des entités qui composent ton monde 2D.
Laurent Gomila - SFML developer

Gorf

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
    • E-mail
Re : Les Vues??
« Réponse #12 le: Mai 10, 2013, 03:15:34 pm »
D'accord, je comprend maintenant, merci !  :)
Bouffer du code c'est sain et plein de protéines !