(réponses de Résumé d'algorithme et Kevin Reid sont bons, et une seule chose manque:. Un code Three.js réel)
Vous devez essentiellement calculer où chaque point de la sphère d'origine sera mis en correspondance après il s'aplatit dans un avion. Cette donnée est un attribut du shader: une donnée attachée à chaque sommet qui diffère du sommet au sommet de la géométrie. Ensuite, pour animer la transition de la position d'origine à la position finale, dans votre boucle d'animation, vous devrez mettre à jour la durée écoulée. Cette donnée est un uniforme du shader: une donnée qui reste constante pour tous les sommets au cours de chaque trame de l'animation, mais qui peut changer d'une image à l'autre. Enfin, il existe une fonction pratique appelée "mix" qui interpolera linéairement entre la position d'origine et la position de fin/but de chaque sommet.
J'ai écrit deux exemples pour vous: le premier "aplatit" une sphère, envoyant le point (x, y, z) au point (x, 0, z).
http://stemkoski.github.io/Three.js/Shader-Attributes.html
Le deuxième exemple suit la suggestion de Résumé algorithme dans les commentaires: « déballant retour des sommets de la sphère sur la surface plane, comme la cartographie UV sphère inverse. » Dans cet exemple, nous pouvons facilement calculer la position finale à partir des coordonnées UV, et nous n'avons donc pas besoin d'attributs dans ce cas.
http://stemkoski.github.io/Three.js/Sphere-Unwrapping.html
Hope this helps!
Je suis totalement nouveau à utiliser et je n'ai aucune idée de la façon dont je suis supposé animer les sommets avec des valeurs interpolées. Si j'ai une forme de sphère et une forme plane, ils ont des nombres différents de sommets? Je n'utilise que trois.js depuis quelques jours, tout cela est complètement nouveau pour moi. Si je dois commencer à écrire du code shader, cela ne sera pas compatible avec tous les navigateurs et ce n'est pas ce dont j'ai besoin. – ise
Vous pouvez simplement calculer la position des sommets. Les sommets de Sphère sont quelque peu groupés dans les parallèles. Ainsi, pour chaque sommet, vous pouvez calculer un angle à partir du méridien «de départ», puis convertir en position sur la surface plane. C'est pour l'axe X, alors que Y reste le même. C'est comme si vous déplaciez les sommets de la sphère sur la surface plane, comme la cartographie UV de la sphère inverse. –
Cela pourrait aider: http://learningwebgl.com/blog/?p=1253. Dans ce tutoriel, vous apprendrez comment créer des sommets de sphère et assigner une assignation à une coordonnée UV [0..1], alors que vous avez besoin du processus inverse, convertissant ainsi la position du vertex en [0..1] et que vous pourriez redimensionner jusqu'à [-width/2..width/2] de l'avion. –