OK, je pense avoir le représentant maintenant. Contenu du post précédent avec des images intégrées. Est-ce l'effet de planète en rotation que vous recherchez? C'est simplement une image 2D défilante vue à travers un "trou" semi-transparent dans le champ d'étoile.
J'ai rassemblé un petit gif animé rapide de ce à quoi l'effet ressemblerait. De toute évidence, il pourrait être animé beaucoup plus fluide - j'ai décalé la surface de la planète de 4 pixels par image. Il n'est pas non plus configuré pour envelopper l'image, il y a donc un problème à la fin de la boucle.
planète http://www.perludus.com/orbit.gif
J'ai fait tout cela dans Photoshop, mais le concept devrait fonctionner dans un environnement de rendu 2D qui vous permet de faire des transparents alpha, etc. Voici une série de captures d'écran montrant le processus ...
- Créez un fond d'étoile vierge et découpez-y un trou rond.
- Trouvez une sphère ombrée en niveaux de gris pour votre planète, comme celle-ci
- Voici nos étoiles avec trou et la sphère ombrée sur le dessus, semi transparente
- Faites un cercle bleu de la taille du trou et donnez-lui une lueur bleue extérieure. Définissez-le également comme semi-transparent. Voici à quoi cela ressemble avec la sphère ombrée
- Trouvez maintenant une texture de surface de planète. J'ai trouvé celui-ci en train de googler "texture de la surface de la planète"
- Placez la texture de la planète SOUS l'image de l'étoile avec le trou semi-transparent pour obtenir ce look
Pour animer la surface de votre planète, déplacez simplement la texture de surface de la planète sous-jacente. Vous devrez être intelligent pour déplacer la texture lorsqu'elle atteint le bord pour obtenir une rotation transparente et sans fin.
J'espère que cela aide et est l'effet que vous recherchiez!
PS J'ai vu cet article sur les artistes avec une façon plutôt originale de créer des textures de planète - m'a fait penser à cette réponse :) http://www.behance.net/gallery/Pan-Planets/9557465
Je vais deviner ce que tu veux dire, et juste jeter une idée là-bas, mais ce ne sera certainement pas la manière «célèbre» de le faire.
tout en 2D
prendre 2 textures. l'un votre masse terrestre, l'autre vos nuages. les nuages doivent avoir une couche alpha qui correspond afin que vous puissiez les «voir à travers eux».
rendre les textures carrelables, c'est-à-dire qu'elles s'enveloppent sans couture il existe des programmes qui vous aident à faire ces tutoriels ou dans Photoshop que vous pouvez suivre.
enfin, vous créez un masque au pochoir qui n'est qu'un cercle, vous regardez donc à travers un trou rond sur vos textures carrées, masquant ainsi les coins.
maintenant vous animez les matrices de texture des textures de terre et de nuage pour les faire bouger. faites-les bouger dans différentes directions et vitesses et il semblera tourner. tout dépend de la façon dont vous avez réalisé vos textures.
la source
Je pense que cet article décrit la technique. (C'est en russe, donc je poste le lien traduit.)
https://translate.googleusercontent.com/translate_c?depth=1&hl=en&rurl=translate.google.com&sl=auto&sp=nmt4&tl=en&u=https://habrahabr.ru/post/248381/&usg=ALkJrhgVVQQY
Je l'ai implémenté ici. http://github.com/meric/renderplanet
Fondamentalement, vous prenez une image qui code pour la projection orthographique ( http://mathworld.wolfram.com/OrthographicProjection.html ) et enveloppez votre planète et la texture des nuages autour d'elle à l'aide d'un shader. Décalez la texture de la planète selon dt pour la faire tourner. Utilisez une image translucide préparée pour l'anneau et l'ombre de l'atmosphère, ou générez-la en dessinant des arcs translucides et en expérimentant avec le shader pour l'ombre.
Voici l'image:
Pour chaque pixel du cercle, la
Red + Green/255
coordonnée X normalisée de la texture planète / nuage à rechercher et laBlue + Alpha/255
coordonnée Y normalisée.Voici le résultat:
Les textures de la planète et des nuages doivent être en projection équirectangulaire.
la source
Votre question n'est pas claire quant aux restrictions de contexte dans lesquelles vous travaillez. La grande majorité des textures dans le rendu 3D sont 2D. Donc, si vous montrez simplement une sphère 3D avec une texture de surface 2D mappée autour d'elle, ce n'est pas vraiment un problème. Si vous ne pouvez pas utiliser le rendu 3D, vous devez dire exactement ce que vous pouvez utiliser.
Le problème de base est que vous devez rendre une texture plate sur la surface d'une sphère, que vous obtenez gratuitement avec le rendu 3D. À mesure que la planète tourne, les parties visibles de la surface de la planète s'animent de manière non linéaire (les parties équatoriales de la texture se déplacent plus rapidement que les pôles). Je pense donc que soit vous devez déformer l'image vous-même lorsque vous la mappez sur le disque, soit vous faites comme VirtualVoid l'a suggéré, et vous avez simplement plusieurs images que vous changez entre les temps.
Ce serait horrible à mettre en œuvre, mais si vous êtes en mesure de rendre la texture, pixel par pixel, alors vous pourriez faire les calculs de pixellisation pour chaque ligne de la sphère séparément. Supposons que la texture de votre carte de surface soit aplatie, de sorte qu'à l'équateur, il y ait 512 pixels d'image. Supposons également que votre disque visible mesure 256 px de large. Considérez maintenant chaque ligne du disque rendu comme une fenêtre coulissante sur la texture de la surface. Sur l'équateur, la fenêtre correspond à 50% de la largeur de la texture et vous copiez simplement chacun des 256 pixels sur le pixel équivalent du disque. La ligne suivante sur le disque sera légèrement inférieure à 256 px, mais en raison de la carte de surface déformée, il reste 256 pixels de données de carte de surface en entrée. Vous sous-échantillonnez donc les données de la carte de surface en entrée et rendez le pixel résultant. Pour des maths faciles, laissez ' s supposons que 1/3 du chemin entre l'équateur et le pôle a une largeur de 128 pixels dans le disque de sortie. Donc, chacun de ces 128 pixels sera la moyenne de 2 pixels voisins. Lorsque vous descendez au pôle, vous seriez en moyenne tous les 256 px en seulement quelques pixels de sortie.
Vous pouvez également le faire dans l'autre sens et faire en sorte que les lignes de la texture source soient de longueurs différentes. Ainsi, alors que la ligne contenant les données source contient 512 pixels, la ligne 1/3 de la descente n'a que 256 pixels et la ligne du bas n'a que quelques pixels. Mais chaque ligne est le double de la largeur du disque à la coordonnée y équivalente. Ce genre de texture serait absolument horrible à créer. Et souffrirait probablement d'horribles problèmes d'alias.
Dans ces deux cas, votre animation consiste simplement à incrémenter le pixel de départ x dans la texture d'entrée et à revenir au début de la ligne de texture d'entrée.
Plus j'écris à ce sujet maintenant, plus je suis convaincu que c'est une horrible idée, que vous ne mettriez en œuvre que si vous n'aviez vraiment aucun autre choix. Et il faudrait être dans une situation très inhabituelle pour ne pas avoir d'autre choix.
Je ne pense pas avoir entendu parler de solutions à ce problème (plutôt vague) en tant que technique nommée spécifique.
la source
Sprites. Il semble que ce que vous décrivez soit un sprite 2D dans un moteur de jeu 3D à rendre à moindre coût (la Nintendo64 l'a fait partout, comme l'ont fait de nombreux premiers moteurs 3D).
Si vous vouliez rendre une planète en rotation, il vous suffirait d'afficher un sprite 2D animé sur la base d'une feuille de sprite qui était une rotation de planète pré-rendue. Tout comme un .GIF animé par exemple. Le problème est qu'il serait pré-rendu, donc comme vous l'avez dit, cela ne fonctionne que si l'utilisateur n'est pas autorisé à manipuler l'angle de vue.
http://en.wikipedia.org/wiki/Sprite_(computer_graphics )
la source
Il peut s'agir d'une simple animation, utilisant une texture avec plusieurs images.
la source