2009-04-11 9 views
1

J'étudie actuellement ce tutorial:Transforming texte 3D en utilisant OpenGL

et je comprends complètement comment faire pivoter/échelle/traduire chacune des chaînes dans ce tutoriel. Mais est-ce que quelqu'un sait quelles étapes sont nécessaires pour cisailler/conique/tordre chacune des chaînes d'une manière configurable par l'utilisateur? Pour autant que je sache, ceux-ci ne font pas partie des appels OpenGL, alors normalement comment ces transformations sont-elles effectuées sur du texte 3D?

Répondre

7

Vous pouvez créer vos propres matrices de transformation. Ils n'ont même pas besoin de «donner un sens», vous pouvez les peupler avec toutes les distorsions étranges que vous voyez. Par exemple, shear devrait ressembler à ceci:

float shear[] = { 
    1, Ky, 0, 0, 
    Kx, 1, 0, 0, 
    0, 0, 1, 0, 
    0, 0, 0, 1 }; 
glMultMatrixf(shear); 
+0

merci! exactement ce que je cherchais! – sivabudh

3

Vous devez manipuler la matrice modelview. This page sur les matrices pourrait aider avec le cisaillement, la torsion, etc. Vous utilisez glLoadMatrix pour charger de nouvelles valeurs. Pour la rotation, la mise à l'échelle et la transformation, utilisez simplement les fonctions OpenGL normales. Editer: Si vous avez déjà des valeurs dans la matrice, vous pouvez utiliser glMultMatrix. Cependant, si possible, je commence par charger en cisaillement, etc. et ensuite appliquer les autres choses par-dessus.

+0

glMultMatrix() sera généralement un meilleur choix que glLoadMatrix(), mais les deux fonctionnent. –

Questions connexes