def __init__(self, translation, orientation=None, eulerRotation=None):
     self.translation = translation
     if eulerRotation != None:
         self.orientation = from_euler(to_radians(eulerRotation))
     elif orientation != None:
         self.orientation = orientation
     else:
         self.orientation = [0, 0, 0, 1]
def TRS_to_matrix(translation, rotation=None, scale=None, eulerRotation=None):
    t = numpy.identity(4)
    s = numpy.identity(4)
    if eulerRotation != None:
        rotation = from_euler(to_radians(eulerRotation))

    if scale == None:
        scale = [1.0, 1.0, 1.0]

    r = to_matrix(rotation)

    rr = numpy.identity(4)
    rr[0:3, 0:3] = r

    t[0, 3] = translation[0]
    t[1, 3] = translation[1]
    t[2, 3] = translation[2]

    s[0, 0] = scale[0]
    s[1, 1] = scale[1]
    s[2, 2] = scale[2]

    return numpy.matmul(numpy.matmul(t, rr), s)