Plusieurs macros de transformation utiles. Toutes ces macros donnent des transformations, vous pouvez les utiliser partout où vous utilisez la taille, la rotation, etc. Les descriptions assument que vous travaillez avec un objet, mais les macros fonctionnent bien avec les textures, etc.
Shear_Trans(A, B, C). Cette macro réoriente et déforme un objet de façon à ce que ses axes d'origine XYZ pointent vers A, B et C, donnant un effet de torsion lorsque les vecteurs ne sont pas perpendiculaires. Vous pouvez aussi utiliser des vecteurs de différentes longueurs pour affecter la taille, ou utiliser des vecteurs perpendiculaires pour réorienter l'objet.
Paramètres :
A, B, C = Les vecteurs représentant les nouveaux axes XYZ pour la transformation.Matrix_Trans(A, B, C, D). Cette macro fournit une façon de spécifier une matrice de transformation avec 4 vecteurs. L'effet est très similaire à la macro Shear_Trans(), mais le quatrième paramètre contrôle le déplacement.
Paramètres :
A, B, C, D = Les vecteurs de chaque colonne de la matrice.Axial_Scale_Trans(Axis, Amt). Une sorte de dimensionnement directionnel, cette macro déformera un objet selon un axe spécifié.
Paramètres :
Axis = Un vecteur indiquant la direction de l'étirement.Amt = La quantité d'étirement.Axis_Rotate_Trans(Axis, Angle). Cela est équivalent à la transformation faite par la fonction vaxis_rotate(), et fait pivoter autour d'un axe arbitraire.
Paramètres :
Axis = Un vecteur représentant l'axe pour la rotation.Angle = La quantité de rotation.Rotate_Around_Trans(Rotation, Point). La rotation ordinaire se fait autour de l'origine, cette macro le fait autour d'un point spécifique.
Paramètres :
Rotation = Le vecteur de rotation, le même que le paramètre pour le mot clé rotate.Point = Le point où faire la rotation.Reorient_Trans(Axis1, Axis2). Cela aligne Axis1 à Axis2 par rotation de l'objet autour d'un vecteur perpendiculaire à Axis1 et Axis2.
Paramètres :
Axis1 = Vecteur à faire pivoter.Axis2 = Vecteur à rejoindre.Point_At_Trans(YAxis). Cette macro est similaire à Reorient_Trans(), mais il pointe l'axe y le long de Axis.
Paramètres :
YAxis = La direction de pointage de l'axe y.Center_Trans(Object, Axis). Calcule une transformation qui centrera un objet le long d'un axe spécifié. Vous indiquez les axes que vous voulez centrer par ajout de "x", "y" et "z" dans le paramètre Axis.
Note : cette macro calcule la transformation pour centrer la boîte englobante de l'objet, ce qui n'est peut être pas très exact. Il n'y a pas de moyen pour définir le centre d'un objet arbitraire.
Paramètres :
Object = L'objet dont la transformation du centre est calculée.Axis = Les axes pour centrer l'objet.Utilisation :
object {MyObj Center_Trans(MyObj, x)} //centre le long de l'axe x
Vous pouvez aussi centrer selon plusieurs axes :
object {MyObj Center_Trans(MyObj, x+y)} //centre le long des axes x et y
Align_Trans(Object, Axis, Pt). Calcule une transformation qui aligne le côté de la boîte englobante d'un objet avec un point. Des valeurs négatives sur Axis aligneront les côtés faisant face aux fins négatives du système de coordonnées, des valeurs positives aligneront les côtés opposés, 0 signifie de ne faire aucun alignement sur cet axe.
Paramètres :
Object = L'objet à aligner.Axis = Une combinaison de +x, +y, +z, -x, -y et -z, ou un vecteur où chaque composant est -1, 0 ou +1, spécifiant les faces de la boîte englobante à aligner avec le point.Point = Le point sur lequel il faut aligner la boîte englobante de l'objet.Utilisation :
object { MyObj Align_Trans(MyObj, x, Pt) //aligne le côté droit de l'objet pour être coplanaire avec Pt Align_Trans(MyObj,-y, Pt) //aligne le bas de l'objet pour être coplanaire avec Pt }
vtransform(Vect, Trans) et vinv_transform(Vect, Trans).
La macro vtransform() prend une transformation (rotation, dimensionnement, déplacement, etc...) et un point, et renvoie le résultat de l'application de la transformation à ce point. La macro vinv_transform() est similaire, mais elle applique l'inverse de la transformation, en fait elle défait la transformation. Vous pouvez combiner les transformations en les englobant dans un bloc de transformation.
Paramètres :
Vect = Le vecteur où appliquer la transformation.Trans = La transformation à appliquer à Vect.Spline_Trans(Spline, Time, SkyVector, ForeSight, Banking). Cette macro aligne un objet avec une génératrice pour une certaine durée de temps. L'axe z de l'objet pointera en avant de la génératrice et l'axe y pointera vers le haut.
Paramètres :
Spline = La génératrice sur laquelle l'objet est aligné.Time = Le temps de contact avec la génératrice, par exemple clock.Sky = Le vecteur qui pointe vers le haut dans votre scène, habituellement y.Foresight = Une valeur positive qui contrôle le temps d'avance que prend l'objet pour tourner et virer. Des valeurs proches de 0 donneront des résultats plus précis, tandis que de grandes valeurs donneront des résultats adoucis. Cela n'affectera pas la vitesse d'analyse, donc prennez la valeur qui convient le mieux.Banking = La valeur de l'inclinaison de l'objet quand il tourne. Cette quantité est également mieux contrôlée par la valeur ForeSight.Utilisation :
object {MyObj Spline_Trans(MySpline, clock, y, 0.1, 0.5)}
| 3.6.19 woodmaps.inc, woods.inc |