Comment utiliser la projection en perspective dans cette bibliothèque
-
21-09-2019 - |
Question
je l'ai trouvé une bibliothèque appelée pyeuclid et matrice création est simple, il suffit de passer le long des arguments et la matrice est créée .
>>> m = Matrix4()
>>> m.translate(50,50,50)
Matrix4([ 1.00 0.00 0.00 50.00
0.00 1.00 0.00 50.00
0.00 0.00 1.00 50.00
0.00 0.00 0.00 1.00])
lbrary est livré avec une classe de vecteur 3D, si je voulais traduire un point 3D avec cette matrice je aurais besoin d'abord créer le classe vecteur , comme celui-ci.
>>> v = Vector3(100,200,300)
>>> v
Vector3(100.00, 200.00, 300.00)
>>> v.x
100
>>> v.y
200
>>> v.z
300
Maintenant, la classe Matrix4 () est une méthode pour transformer les coordonnées, et son utilisation comme ainsi.
>>> m.transform(v)
Point3(150.00, 250.00, 350.00)
ce qui est excellent, cependant, il n'y a pas de projection en perspective appliquée, la bibliothèque est livré avec une méthode appelée Matrix4.new_perspective (fov_y, aspect, près, loin). C'est où le problème réside, je ne sais pas comment utiliser correctement cette fonction, (m.transform (vector3) doesent produire quelque chose utilisable) documentation montrent doesent comment son utilisation avec des vecteurs ou d'autres matrices, il dit quelque chose au sujet d'être « équivalent à l'appel OpenGL gluPerspective.fov_y », mais je ne ai jamais utilisé opengl pour que l'habitude aide.
cela est le module (de Vector3 import Euclide, Matrix4)
ce que je ne veux pas, est recomendtions pour une bibliothèque moteur de jeu / visulization, ou quelque chose thats ce plié sur le dessin quelque chose à l'écran, je veux juste savoir si je peux utiliser cette bibliothèque pour transformer vecteur 3D coordnates en coordonnées d'écran 2D et sinon quelle bibliothèque puis-je utiliser ???
donc obtenir là-bas et aider Noob en détresse! :-) merci pour votre aide.
La solution
Ce tutoriel explique les arguments
Autres conseils
Je ne sais pas si cela est pertinent que vous savez peut-être cela, mais vous aurez besoin d'une matrice de vue aussi. La matrice de vue représente l'inverse de la transformation de votre appareil dans le monde. Vous trouverez peut-être la classe de matrice a également des méthodes d'aide pour créer des matrices de vue, parfois appelé LookAt os similaire. Vous pouvez simplement créer une matrice manuellement que les positions et ORIENTE votre appareil photo (imaginaire), puis l'inverser.
Si vous appliquez la matrice de projection au monde co-ords que vous faites l'hypothèse implicite que votre matrice de vue est l'identité et donc votre appareil photo est à l'origine du monde et pointant vers le bas d'un axe. Cet axe qui est dépendra de la matrice de projection, mais si elle est comme la plupart des autres systèmes, ce sera l'axe z depuis la convention a une profondeur de caméra mesurée le long z. Il pourrait être dans le sens positif ou négatif de vérifier à nouveau la documentation pour plus de détails.
Donc, pour résumer, vous devez multiplier votre matrice de modèle avec la matrice de vue et puis par la matrice de projection. La matrice de projection est conçu pour fonctionner en coordonnées caméra plutôt que coordonnées du monde.