mgear.core.transform module

Functions to work with matrix and transformations

mgear.core.transform.convert2TransformMatrix(tm)

Convert a transformation Matrix

Convert a transformation Matrix or a matrix to a transformation matrix in world space.

Parameters:

tm (matrix) – The input matrix.

Returns:

The transformation matrix in worldSpace

Return type:

matrix

mgear.core.transform.getChainTransform(positions, normal, negate=False, axis='xz')

Get a tranformation list from a positions list and normal.

Parameters:
  • positions (list of vector) – List with the chain positions.

  • normal (vector) – Normal direction.

  • negate (bool) – If true invert the chain orientation.

Returns:

The list containing the transformation matrix

for the chain.

Return type:

list of matrix

>>> tra.getChainTransform(self.guide.apos, self.normal, self.negate)
mgear.core.transform.getChainTransform2(positions, normal, negate=False, axis='xz')

Get a tranformation list from a positions list and normal.

Note

getChainTransform2 is using the latest position on the chain

Parameters:
  • positions (list of vector) – List with the chain positions.

  • normal (vector) – Normal direction.

  • negate (bool) – If true invert the chain orientation.

Returns:

The list containing the transformation matrix

for the chain.

Return type:

list of matrix

>>> tra.getChainTransform2(self.guide.apos,
                           self.normal,
                           self.negate)
mgear.core.transform.getClosestPolygonFromTransform(geo, loc)

Get closest polygon from transform

Parameters:
  • geo (dagNode) – Mesh object

  • loc (matrix) – location transform

Returns:

Closest Polygon

mgear.core.transform.getDistance2(obj0, obj1)

Get the distance between 2 objects.

Parameters:
  • obj0 (dagNode) – Object A

  • obj1 (dagNode) – Object B

Returns:

Distance length

Return type:

float

mgear.core.transform.getFilteredTransform(m, translation=True, rotation=True, scaling=True)

Retrieve a transformation filtered.

Parameters:
  • m (matrix) – the reference matrix

  • translation (bool) – If true the return matrix will match the translation.

  • rotation (bool) – If true the return matrix will match the rotation.

  • scaling (bool) – If true the return matrix will match the scaling.

Returns:

The filtered matrix

Return type:

matrix

mgear.core.transform.getInterpolateTransformMatrix(t1, t2, blend=0.5)

Interpolate 2 matrix.

Parameters:
  • t1 (matrix) – Input matrix 1.

  • t2 (matrix) – Input matrix 2.

  • blend (float) – The blending value. Default 0.5

Returns:

The newly interpolated transformation matrix.

Return type:

matrix

>>> t = tra.getInterpolateTransformMatrix(self.fk_ctl[0],
                                          self.tws1A_npo,
                                          .3333)
mgear.core.transform.getOffsetPosition(node, offset=[0, 0, 0])

Get an offset position from dagNode

Parameters:
  • node (dagNode) – The dagNode with the original position.

  • offset (list of float) – Ofsset values for xyz. exp : [1.2, 4.6, 32.78]

Returns:

the new offset position.

Return type:

list of float

Example

self.root = self.addRoot()
vTemp = tra.getOffsetPosition( self.root, [0,-3,0.1])
self.knee = self.addLoc("knee", self.root, vTemp)
mgear.core.transform.getPositionFromMatrix(in_m)

Get the position values from matrix

Parameters:

in_m (matrix) – The input Matrix.

Returns:

The position values for xyz.

Return type:

list of float

mgear.core.transform.getRotationFromAxis(in_a, in_b, axis='xy', negate=False)

Get the matrix rotation from a given axis.

Parameters:
  • in_a (vector) – Axis A

  • in_b (vector) – Axis B

  • axis (str) – The axis to use for the orientation. Default: “xy”

  • negate (bool) – negates the axis orientation.

Returns:

The newly created matrix.

Return type:

matrix

Example

x = datatypes.Vector(0,-1,0)
x = x * tra.getTransform(self.eff_loc)
z = datatypes.Vector(self.normal.x,
                     self.normal.y,
                     self.normal.z)
z = z * tra.getTransform(self.eff_loc)
m = tra.getRotationFromAxis(x, z, "xz", self.negate)
mgear.core.transform.getSymmetricalTransform(t, axis='yz', fNegScale=False)

Get the symmetrical tranformation

Get the symmetrical tranformation matrix from a define 2 axis mirror plane. exp:”yz”.

Parameters:
  • t (matrix) – The transformation matrix to mirror.

  • axis (str) – The mirror plane.

  • fNegScale (bool) – This function is not yet implemented.

Returns:

The symmetrical tranformation matrix.

Return type:

matrix

mgear.core.transform.getTransform(node)

Return the transformation matrix of the dagNode in worldSpace.

Parameters:

node (dagNode) – The dagNode to get the translation

Returns:

The transformation matrix

Return type:

matrix

mgear.core.transform.getTransformFromPos(pos)

Create a transformation Matrix from a given position.

Parameters:

pos (vector) – Position for the transformation matrix

Returns:

The newly created transformation matrix

Return type:

matrix

>>>  t = tra.getTransformFromPos(self.guide.pos["root"])
mgear.core.transform.getTransformLookingAt(pos, lookat, normal, axis='xy', negate=False)

Return a transformation mstrix using vector positions.

Return the transformation matrix of the dagNode oriented looking to an specific point.

Parameters:
  • pos (vector) – The position for the transformation

  • lookat (vector) – The aiming position to stablish the orientation

  • normal (vector) – The normal control the transformation roll.

  • axis (str) – The 2 axis used for lookat and normal. Default “xy”

  • negate (bool) – If true, invert the aiming direction.

Returns:

The transformation matrix

Return type:

matrix

>>>  t = tra.getTransformLookingAt(self.guide.pos["heel"],
                                   self.guide.apos[-4],
                                   self.normal,
                                   "xz",
                                   self.negate)
mgear.core.transform.getTranslation(node)

Return the position of the dagNode in worldSpace.

Parameters:

node (dagNode) – The dagNode to get the translation

Returns:

The transformation matrix

Return type:

matrix

mgear.core.transform.get_closes_transform(target_transform, source_transforms)

Summary

Parameters:
  • target_transform (dagNode) – target transform

  • source_transforms ([dagNode]) – objects to check distance

Returns:

ordered transform list

Return type:

list

mgear.core.transform.get_orientation_from_polygon(face)

Summary

Parameters:
  • face (TYPE) – Description

  • loc (TYPE) – Description

Returns:

Description

Return type:

TYPE

mgear.core.transform.get_raycast_translation_from_mouse_click(mesh, mpx, mpy)

get the raycasted translation of the mouse position

Parameters:
  • mesh (str) – mesh name

  • mpx (int) – mouse position x

  • mpy (int) – mouse position x

Returns:

XYZ position

Return type:

list

mgear.core.transform.interpolate_rotation(obj, targets, blends)
mgear.core.transform.interpolate_scale(obj, targets, blends)
mgear.core.transform.matchWorldTransform(source, target)

Match 2 dagNode transformations in world space.

Parameters:
  • source (dagNode) – The source dagNode

  • target (dagNode) – The target dagNode

Returns:

None

mgear.core.transform.quaternionDotProd(q1, q2)

Get the dot product of 2 quaternion.

Parameters:
  • q1 (quaternion) – Input quaternion 1.

  • q2 (quaternion) – Input quaternion 2.

Returns:

The dot proct quaternion.

Return type:

quaternion

mgear.core.transform.quaternionSlerp(q1, q2, blend)

Get an interpolate quaternion based in slerp function.

Parameters:
  • q1 (quaternion) – Input quaternion 1.

  • q2 (quaternion) – Input quaternion 2.

  • blend (float) – Blending value.

Returns:

The interpolated quaternion.

Return type:

quaternion

Example

q = quaternionSlerp(datatypes.Quaternion(
                    t1.getRotationQuaternion()),
                    datatypes.Quaternion(
                        t2.getRotationQuaternion()), blend)
mgear.core.transform.resetTransform(node, t=True, r=True, s=True)

Reset the scale, rotation and translation for a given dagNode.

Parameters:
  • node (dagNode) – The object to reset the transforms.

  • t (bool) – If true translation will be reseted.

  • r (bool) – If true rotation will be reseted.

  • s (bool) – If true scale will be reseted.

Returns:

None

mgear.core.transform.setMatrixPosition(in_m, pos)

Set the position for a given matrix

Parameters:
  • in_m (matrix) – The input Matrix.

  • pos (list of float) – The position values for xyz

Returns:

The matrix with the new position

Return type:

matrix

>>> tnpo = tra.setMatrixPosition(tOld, tra.getPositionFromMatrix(t))
>>> t = tra.setMatrixPosition(t, self.guide.apos[-1])
mgear.core.transform.setMatrixRotation(m, rot)

Set the rotation for a given matrix

Parameters:
  • in_m (matrix) – The input Matrix.

  • rot (list of float) – The rotation values for xyz

Returns:

The matrix with the new rotation

Return type:

matrix

mgear.core.transform.setMatrixScale(m, scl=[1, 1, 1])

Set the scale for a given matrix

Parameters:
  • in_m (matrix) – The input Matrix.

  • scl (list of float) – The scale values for xyz

Returns:

The matrix with the new scale

Return type:

matrix