Понимание матричных операций в Blender - PullRequest
0 голосов
/ 18 октября 2019

Мне нужно уточнить мое понимание матричных операций в Blender, в частности, verion 2.8

Этот следующий код выполняет ряд манипуляций с объектами

import bpy
import mathutils
import math


bpy.data.objects.remove(bpy.data.objects['Cube'])

bpy.ops.mesh.primitive_monkey_add(size=2, enter_editmode=False, location=(0, 0, 0))

# create a location matrix
mat_loc = mathutils.Matrix.Translation((5.0, 0.0, 0.0))

# create a rotation matrix
mat_rot = mathutils.Matrix.Rotation(math.radians(45.0), 4, 'Z')
mat_rot2 = mathutils.Matrix.Rotation(math.radians(-45.0), 4, 'X')


# initiallay Suzanne and world coordinate system are identical. 
suz.matrix_world = suz.matrix_world @ mat_loc 
# this rotates around global z-axis
suz.matrix_world = mat_rot @ suz.matrix_world
# this rotates around local x-axis
suz.matrix_world = suz.matrix_world @ mat_rot2

В последних двух операциях suzобъект вращаетсяПочему ось вращения меняется с локальной на глобальную в зависимости от того, будет ли matrix_world первым или последним в умножении матрицы?

...