Comment dessiner une sphère 3D?
Je veux tirer une balle 3D ou de la sphère dans le HTML 5.0 toiles. Je veux comprendre l'Algorithme sur la façon de dessiner une sphère en 3D. Qui peut le partager avec moi?
source d'informationauteur user165273
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin pour modèle une sphère, et ont des couleurs différentes de sorte que, comme il tourne, vous pouvez voir que ce n'est pas seulement une sphère, mais en cours de rendu.
Sinon, une sphère dans l'espace, avec pas de point de référence autour d'elle ressemble à un cercle, si c'est une couleur solide.
Pour commencer, vous voulez essayer de dessiner un cercle avec des rectangles, qui est le principal primitif que vous avez.
Une fois que vous comprenez comment le faire, ou de créer une nouvelle primitive, comme un triangle en utilisant la méthode du Chemin, et de créer un cercle, alors vous êtes prêt à passer à la 3D.
3D est juste un truc, comme vous pourrez prendre votre modèle, probablement causée par une équation, puis les aplatir, comme vous pouvez le déterminer quelles parties sera vu, et puis l'afficher.
Mais, vous voulez changer la couleur des triangles basé sur quelle mesure ils sont à partir d'une source de lumière, ainsi qu'en fonction de l'angle de la partie de la source de lumière.
C'est là que vous pouvez commencer à faire des optimisations, que, si vous faites cela, pixel par pixel, alors vous êtes le raytracing. Si vous avez de gros blocs, et d'une source ponctuelle de lumière, et l'objet est en rotation, mais ne bouge pas autour de vous pouvez alors recalculer comment les changements de couleur pour chaque triangle, alors il est juste une question de changement de couleurs pour simuler la rotation.
L'algorithme dépendra de ce que les simplifications que vous voulez faire, de sorte que vous acquérir de l'expérience de revenir et de demander, en montrant ce que vous avez fait jusqu'à présent.
Voici un exemple de faire, et ci-dessous, j'ai copié la sphère en 3D de la partie, mais veuillez jeter un oeil à l'ensemble de la l'article.
Mise à jour: Ce code est assez ancien et limité. Il existe des bibliothèques pour faire des sphères 3D maintenant: http://techslides.com/d3-globe-with-canvas-webgl-and-three-js/
Plus de dix ans, j'ai écrit un applet Java pour rendre une texture de la sphère en fait de faire le calcul à la surface de la sphère a été dans la scène (pas à l'aide de triangles).
J'ai réécrit en JavaScript pour la toile et j'ai un démo rendu la terre comme une sphère:
le texte d'alt http://sam.haslers.info/render-sphere/JavaScript+Toile.png
- Je obtenir autour de 22 fps sur ma machine. Ce qui est à peu près aussi rapide que la version Java il était fondé sur la restitue, si pas un peu plus vite!
Maintenant c'est un long temps depuis que j'ai écrit le code Java - et c'était assez obtus - donc, je ne me souviens pas exactement comment cela fonctionne, j'ai juste porté JavaScript. Cependant c'est à partir d'une version lente de la code et je ne sais pas si la version plus rapide est due à des optimisations dans les méthodes de Java que j'ai utilisé pour manipuler des pixels ou de la vitesse dans les mathématiques, il n'a de pixel pour le rendu de la texture. J'ai également été correspondant au temps avec quelqu'un qui a un applet qui a été beaucoup plus rapide que la mienne, mais de nouveau je ne sais pas si l'amélioration de la vitesse qu'ils avaient serait possible en JavaScript, car elle peut avoir invoqué les bibliothèques Java. (Je n'ai jamais vu leur code donc je ne sais pas comment ils ont fait.)
De sorte qu'il peut être possible d'améliorer la vitesse. Mais cela fonctionne bien comme une preuve de concept.
Si vous êtes intéressé par la comparaison de la vitesse, les versions de Java sont ici:
Ce sont des liens morts jusqu'à ce que je la prochaine mise à jour de mon site
Je vais avoir un aller à la conversion de ma version plus rapide un certain temps pour voir si je peux obtenir toutes les améliorations de la vitesse dans la version JavaScript.
u peux essayer avec three.js la bibliothèque , qui ne tient pas beaucoup de code du noyau de webgl de programmation. Inclure three.js bibliothèque dans votre code html à partir de three.js lib.
u peut utiliser de la toile de moteur de rendu pour le navigateur safari , webgl travaille pour google chrome
vous trouverez les JS FIDDLE POUR LA SPHÈRE
var caméra, la scène, de matières, de la maille, de la géométrie, convertisseur
Bien, une image d'une sphère aura toujours une forme circulaire sur votre écran, de sorte que la seule chose qui compte, c'est la trame de fond. Cela sera déterminé par l'endroit où vous placez votre source de lumière.
Comme pour les algorithmes, le lancer de rayons est la plus simple mais aussi la plus lente de loin — de sorte que vous ne souhaitez probablement pas à l'utiliser pour faire quelque chose de très compliqué dans un
<CANVAS>
(surtout étant donné le manque de l'accélération graphique disponible dans cet environnement), mais il pourrait être assez rapide si vous voulais faire d'une seule sphère.