[Bf-committers] Patches Submitted

Campbell Barton ideasman42 at gmail.com
Wed Jul 20 09:15:43 CEST 2011


On Wed, Jul 20, 2011 at 3:37 PM, Scott Giese <scott.giese at comcast.net> wrote:
> Hi Gang,
>
>
>
> FYI. I submitted 3 patches for your review.  I'm new to the list and I
> wanted to give back to the Blender community.
>
>
>
> 28030  SCONS Build: Build Date reflects
> <http://projects.blender.org/tracker/index.php?func=detail&aid=28030&group_i
> d=9&atid=127> "1" instead of actual date of build
>
> 28031  Minor typo in Blenlib
> <http://projects.blender.org/tracker/index.php?func=detail&aid=28031&group_i
> d=9&atid=127>
>
> 28032  Python Mathutils: Matrix Multiplication Error
> <http://projects.blender.org/tracker/index.php?func=detail&aid=28032&group_i
> d=9&atid=127>
>
>
>
> Great work guys!  Appreciate the great product.
>
>
>
> Scott

Thanks for the fixes, committed all patches however you're changes to
mathutils effectively only change the order of multiplication,

http://projects.blender.org/tracker/index.php?func=detail&aid=28032&group_id=9&atid=127

In you're example
>>> print (m1 * m2)

Change to...
>>> print (m2 * m1)

This is a bit confusing because in C we have
mul_m4_m4m4(m1, m2);
 which is the equivalent to "m2 * m1" in python.

A while back Benoit Bolsee was concerned our matrix multiplication
order was wrong so we switched it (between 2.4x and 2.5x)

What makes you think the order in blender is wrong? what's you're reference?

Just checked and we're currently doing matrix multiplication
differently to numpy which doesn't bode well :S - test:

# --- snip
m1 = ((0.0, 0.0, 1.0, 0.0), (-1.0, 0.0, 0.0, 0.0), (0.0, -1.0, 0.0,
0.0), (0.6, 0.0, -0.05, 1.0))
m2 = ((1.0, 0.0, 0.0, 0.0), (0.0, 1.0, 0.0, 0.0), (0.0, 0.0, 1.0,
0.0), (0.0, -0.02, -0.1, 1.0))

from numpy import matrix
n_m1 = matrix(m1)
n_m2 = matrix(m2)
print("\nnumpy\n%r" % (n_m1 * n_m2))

from mathutils import Matrix
b_m1 = Matrix(m1)
b_m2 = Matrix(m2)
print("\nmathutils\n%r" % (b_m1 * b_m2))

# --- output

numpy
matrix([[ 0.  ,  0.  ,  1.  ,  0.  ],
        [-1.  ,  0.  ,  0.  ,  0.  ],
        [ 0.  , -1.  ,  0.  ,  0.  ],
        [ 0.6 , -0.02, -0.15,  1.  ]])

mathutils
Matrix((0.0, 0.0, 1.0, 0.0),
       (-1.0, 0.0, 0.0, 0.0),
       (0.0, -1.0, 0.0, 0.0),
       (0.62, 0.1, -0.05, 1.0))


# --- switch m1/m2 order for both mathutils and numpy. re-run

numpy
matrix([[ 0.  ,  0.  ,  1.  ,  0.  ],
        [-1.  ,  0.  ,  0.  ,  0.  ],
        [ 0.  , -1.  ,  0.  ,  0.  ],
        [ 0.62,  0.1 , -0.05,  1.  ]])

mathutils
Matrix((0.0, 0.0, 1.0, 0.0),
       (-1.0, 0.0, 0.0, 0.0),
       (0.0, -1.0, 0.0, 0.0),
       (0.6, -0.0, -0.15, 1.0))


More information about the Bf-committers mailing list