J'essaie d'obtenir l'effet de distorsion que vous voyez dans des jeux comme Geometry Wars .
Quelqu'un peut-il aider à expliquer ce qui se passe ici? J'ai l'impression que l'axe z de la grille est manipulé d'une manière ou d'une autre par le programmeur, mais y a-t-il peut-être une équation mathématique connue pour vraiment obtenir l'effet de déformation correct?
Edit: Pour être plus précis, je veux dire la déformation de la grille. Comment tout semble tiré vers l'axe z négatif, puis rebondit.
graphics
graphic-effects
Joey Green
la source
la source
Réponses:
Une mise en place de 10 minutes d'un système de ressort simple (ou du moins dit-il sur son blog ;)). Le système peut gérer plusieurs chaînes et autres déformations de la grille.
Mis à jour pour ajouter quelques détails supplémentaires:
Quelques autres détails. À partir d'une interview qui était auparavant hébergée sur le site Web de Bizarre Creations (ce site a maintenant disparu en raison de la fermeture de l'entreprise), il y avait une question:
Q: L'une des nouvelles fonctionnalités graphiques les plus frappantes du jeu est la zone de jeu «grille de gravité». Comment avez-vous rendu cela si cool? chaque objet du jeu a-t-il vraiment sa propre gravité? La grille elle-même est composée de 60 000 points, chacun exerçant une petite force sur son voisin. La simulation elle-même est à la limite de la stabilité, ce qui la fait tellement osciller lorsque l'un des objets du jeu lui donne un petit coup de pouce! Seuls quelques types d'objets affectent la grille. Comme le système de grille est assez cher à calculer, il fonctionne en fait sur le deuxième noyau avec le système audio (le premier noyau étant dédié au gameplay et aux particules, le troisième est utilisé pour rendre l'audio).
la source
Je ne sais pas s'il y a une façon "correcte" de le faire, mais c'est probablement juste une transformation linéaire esthétiquement agréable appliquée avec une diminution calculée de la distance à un point.
Donc, pour tout élément avec lequel vous travaillez, vous devez:
Iirc, les guerres de géométrie l'ont appliqué comme une distorsion déformante à certains éléments, tandis que d'autres éléments comme les particules étaient juste affectés par la "force", sans être déformés. Vous pouvez appliquer la distorsion dans un vertex shader, en supposant que vous disposiez de suffisamment de sommets pour échantillonner l’effet en douceur. Alternativement, vous pouvez tout d'abord rendre tout ce qui doit être affecté dans un tampon hors écran, puis rendre les résultats sur un quadrillage bien tessellé auquel vous appliquez la distorsion, avant d'ajouter tous les éléments non déformés sur le dessus.
Quant à la transformation, la mise à l'échelle vous donnera le look d'aspiration. Si je me souviens bien, il y avait aussi des torsions en cours, ce qui ne serait qu'une petite rotation.
Vous pouvez devenir plus fantaisiste avec vos calculs du facteur d'intensité pour obtenir des effets plus farfelus. Vous pouvez, par exemple, calculer l'angle (a) qu'un élément est par rapport au centre et en tenir compte. Prenez cos (a) et vous pouvez créer des ondes radiales dans l'effet. Ce que vous voulez faire, c'est vous mettre en place avec le code d'échafaudage nécessaire, puis aller en ville expérimenter différentes combinaisons de facteurs.
la source