Math Lib: use variable length args for mul_serie_m3,m4 (instead of trailing NULL's)

This commit is contained in:
Campbell Barton 2014-07-20 14:01:42 +10:00
parent 3ca78a40e8
commit 7c7b7302d3
22 changed files with 203 additions and 109 deletions

View File

@ -574,7 +574,7 @@ void b_bone_spline_setup(bPoseChannel *pchan, int rest, Mat4 result_array[MAX_BB
if (do_scale) {
/* correct for scaling when this matrix is used in scaled space */
mul_serie_m4(result_array[a].mat, iscalemat, result_array[a].mat, scalemat, NULL, NULL, NULL, NULL, NULL);
mul_serie_m4(result_array[a].mat, iscalemat, result_array[a].mat, scalemat);
}
}
}
@ -622,8 +622,7 @@ static void pchan_b_bone_defmats(bPoseChannel *pchan, bPoseChanDeform *pdef_info
invert_m4_m4(tmat, b_bone_rest[a].mat);
mul_serie_m4(b_bone_mats[a + 1].mat, pchan->chan_mat, bone->arm_mat, b_bone[a].mat, tmat, b_bone_mats[0].mat,
NULL, NULL, NULL);
mul_serie_m4(b_bone_mats[a + 1].mat, pchan->chan_mat, bone->arm_mat, b_bone[a].mat, tmat, b_bone_mats[0].mat);
if (use_quaternion)
mat4_to_dquat(&b_bone_dual_quats[a], bone->arm_mat, b_bone_mats[a + 1].mat);
@ -1042,7 +1041,7 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm, float
if (!use_quaternion) /* quaternion already is scale corrected */
mul_m3_fl(smat, armature_weight / contrib);
mul_serie_m3(defMats[i], tmpmat, pre, smat, post, NULL, NULL, NULL, NULL);
mul_serie_m3(defMats[i], tmpmat, pre, smat, post);
}
}

View File

@ -3909,7 +3909,7 @@ static void followtrack_evaluate(bConstraint *con, bConstraintOb *cob, ListBase
BKE_tracking_camera_get_reconstructed_interpolate(tracking, tracking_object, framenr, imat);
invert_m4(imat);
mul_serie_m4(cob->matrix, obmat, mat, imat, NULL, NULL, NULL, NULL, NULL);
mul_serie_m4(cob->matrix, obmat, mat, imat);
translate_m4(cob->matrix, track->bundle_pos[0], track->bundle_pos[1], track->bundle_pos[2]);
}
else {
@ -4187,7 +4187,7 @@ static void objectsolver_evaluate(bConstraint *con, bConstraintOb *cob, ListBase
invert_m4_m4(imat, mat);
mul_serie_m4(cob->matrix, cammat, imat, camimat, parmat, obmat, NULL, NULL, NULL);
mul_serie_m4(cob->matrix, cammat, imat, camimat, parmat, obmat);
}
}
}

View File

@ -1212,7 +1212,7 @@ void BKE_mask_point_parent_matrix_get(MaskSplinePoint *point, float ctime, float
}
invert_m3_m3(mask_to_clip_matrix, mask_from_clip_matrix);
mul_serie_m3(parent_matrix, mask_to_clip_matrix, H, mask_from_clip_matrix, NULL, NULL, NULL, NULL, NULL);
mul_serie_m3(parent_matrix, mask_to_clip_matrix, H, mask_from_clip_matrix);
}
}
}

View File

@ -145,12 +145,12 @@ void init_tex_mapping(TexMapping *texmap)
if (texmap->type == TEXMAP_TYPE_TEXTURE) {
/* to transform a texture, the inverse transform needs
* to be applied to the texture coordinate */
mul_serie_m4(texmap->mat, tmat, rmat, smat, 0, 0, 0, 0, 0);
mul_serie_m4(texmap->mat, tmat, rmat, smat);
invert_m4(texmap->mat);
}
else if (texmap->type == TEXMAP_TYPE_POINT) {
/* forward transform */
mul_serie_m4(texmap->mat, tmat, rmat, smat, 0, 0, 0, 0, 0);
mul_serie_m4(texmap->mat, tmat, rmat, smat);
}
else if (texmap->type == TEXMAP_TYPE_VECTOR) {
/* no translation for vectors */

View File

@ -440,5 +440,5 @@ void BKE_tracking_stabilization_data_to_mat4(int width, int height, float aspect
/* compose transformation matrix */
mul_serie_m4(mat, translation_mat, center_mat, aspect_mat, rotation_mat, inv_aspect_mat,
scale_mat, inv_center_mat, NULL);
scale_mat, inv_center_mat);
}

View File

@ -34,6 +34,8 @@
extern "C" {
#endif
#include "BLI_compiler_attrs.h"
/********************************* Init **************************************/
void zero_m3(float R[3][3]);
@ -67,12 +69,33 @@ void mul_m4_m4m3(float R[4][4], float A[4][4], float B[3][3]);
void mul_m4_m4m4(float R[4][4], float A[4][4], float B[4][4]);
void mul_m3_m3m4(float R[3][3], float A[4][4], float B[3][3]);
void mul_serie_m3(float R[3][3],
float M1[3][3], float M2[3][3], float M3[3][3], float M4[3][3],
float M5[3][3], float M6[3][3], float M7[3][3], float M8[3][3]);
void mul_serie_m4(float R[4][4],
float M1[4][4], float M2[4][4], float M3[4][4], float M4[4][4],
float M5[4][4], float M6[4][4], float M7[4][4], float M8[4][4]);
/* mul_serie_m3 */
void _va_mul_serie_m3_3(float R[3][3], float M1[3][3], float M2[3][3]) ATTR_NONNULL();
void _va_mul_serie_m3_4(float R[3][3], float M1[3][3], float M2[3][3], float M3[3][3]) ATTR_NONNULL();
void _va_mul_serie_m3_5(float R[3][3], float M1[3][3], float M2[3][3], float M3[3][3], float M4[3][3]) ATTR_NONNULL();
void _va_mul_serie_m3_6(float R[3][3], float M1[3][3], float M2[3][3], float M3[3][3], float M4[3][3],
float M5[3][3]) ATTR_NONNULL();
void _va_mul_serie_m3_7(float R[3][3], float M1[3][3], float M2[3][3], float M3[3][3], float M4[3][3],
float M5[3][3], float M6[3][3]) ATTR_NONNULL();
void _va_mul_serie_m3_8(float R[3][3], float M1[3][3], float M2[3][3], float M3[3][3], float M4[3][3],
float M5[3][3], float M6[3][3], float M7[3][3]) ATTR_NONNULL();
void _va_mul_serie_m3_9(float R[3][3], float M1[3][3], float M2[3][3], float M3[3][3], float M4[3][3],
float M5[3][3], float M6[3][3], float M7[3][3], float M8[3][3]) ATTR_NONNULL();
/* mul_serie_m4 */
void _va_mul_serie_m4_3(float R[4][4], float M1[4][4], float M2[4][4]) ATTR_NONNULL();
void _va_mul_serie_m4_4(float R[4][4], float M1[4][4], float M2[4][4], float M3[4][4]) ATTR_NONNULL();
void _va_mul_serie_m4_5(float R[4][4], float M1[4][4], float M2[4][4], float M3[4][4], float M4[4][4]) ATTR_NONNULL();
void _va_mul_serie_m4_6(float R[4][4], float M1[4][4], float M2[4][4], float M3[4][4], float M4[4][4],
float M5[4][4]) ATTR_NONNULL();
void _va_mul_serie_m4_7(float R[4][4], float M1[4][4], float M2[4][4], float M3[4][4], float M4[4][4],
float M5[4][4], float M6[4][4]) ATTR_NONNULL();
void _va_mul_serie_m4_8(float R[4][4], float M1[4][4], float M2[4][4], float M3[4][4], float M4[4][4],
float M5[4][4], float M6[4][4], float M7[4][4]) ATTR_NONNULL();
void _va_mul_serie_m4_9(float R[4][4], float M1[4][4], float M2[4][4], float M3[4][4], float M4[4][4],
float M5[4][4], float M6[4][4], float M7[4][4], float M8[4][4]) ATTR_NONNULL();
#define mul_serie_m3(...) VA_NARGS_CALL_OVERLOAD(_va_mul_serie_m3_, __VA_ARGS__)
#define mul_serie_m4(...) VA_NARGS_CALL_OVERLOAD(_va_mul_serie_m4_, __VA_ARGS__)
void mul_m4_v3(float M[4][4], float r[3]);
void mul_v3_m4v3(float r[3], float M[4][4], const float v[3]);

View File

@ -274,71 +274,148 @@ void mul_m4_m3m4(float m1[4][4], float m3_[3][3], float m2_[4][4])
m1[2][2] = m2[2][0] * m3[0][2] + m2[2][1] * m3[1][2] + m2[2][2] * m3[2][2];
}
void mul_serie_m3(float answ[3][3],
float m1[3][3], float m2[3][3], float m3[3][3],
float m4[3][3], float m5[3][3], float m6[3][3],
float m7[3][3], float m8[3][3])
/** \name Macro helpers for: mul_serie_m3
* \{ */
void _va_mul_serie_m3_3(
float r[3][3],
float m1[3][3], float m2[3][3])
{
float temp[3][3];
if (m1 == NULL || m2 == NULL) return;
mul_m3_m3m3(answ, m2, m1);
if (m3) {
mul_m3_m3m3(temp, m3, answ);
if (m4) {
mul_m3_m3m3(answ, m4, temp);
if (m5) {
mul_m3_m3m3(temp, m5, answ);
if (m6) {
mul_m3_m3m3(answ, m6, temp);
if (m7) {
mul_m3_m3m3(temp, m7, answ);
if (m8) {
mul_m3_m3m3(answ, m8, temp);
}
else copy_m3_m3(answ, temp);
}
}
else copy_m3_m3(answ, temp);
}
}
else copy_m3_m3(answ, temp);
}
mul_m3_m3m3(r, m2, m1);
}
void mul_serie_m4(float answ[4][4], float m1[4][4],
float m2[4][4], float m3[4][4], float m4[4][4],
float m5[4][4], float m6[4][4], float m7[4][4],
float m8[4][4])
void _va_mul_serie_m3_4(
float r[3][3],
float m1[3][3], float m2[3][3], float m3[3][3])
{
float temp[4][4];
if (m1 == NULL || m2 == NULL) return;
mul_m4_m4m4(answ, m1, m2);
if (m3) {
mul_m4_m4m4(temp, answ, m3);
if (m4) {
mul_m4_m4m4(answ, temp, m4);
if (m5) {
mul_m4_m4m4(temp, answ, m5);
if (m6) {
mul_m4_m4m4(answ, temp, m6);
if (m7) {
mul_m4_m4m4(temp, answ, m7);
if (m8) {
mul_m4_m4m4(answ, temp, m8);
}
else copy_m4_m4(answ, temp);
}
}
else copy_m4_m4(answ, temp);
}
}
else copy_m4_m4(answ, temp);
}
mul_m3_m3m3(r, m2, m1);
mul_m3_m3m3(r, m3, r);
}
void _va_mul_serie_m3_5(
float r[3][3],
float m1[3][3], float m2[3][3], float m3[3][3], float m4[3][3])
{
mul_m3_m3m3(r, m2, m1);
mul_m3_m3m3(r, m3, r);
mul_m3_m3m3(r, m4, r);
}
void _va_mul_serie_m3_6(
float r[3][3],
float m1[3][3], float m2[3][3], float m3[3][3], float m4[3][3],
float m5[3][3])
{
mul_m3_m3m3(r, m2, m1);
mul_m3_m3m3(r, m3, r);
mul_m3_m3m3(r, m4, r);
mul_m3_m3m3(r, m5, r);
}
void _va_mul_serie_m3_7(
float r[3][3],
float m1[3][3], float m2[3][3], float m3[3][3], float m4[3][3],
float m5[3][3], float m6[3][3])
{
mul_m3_m3m3(r, m2, m1);
mul_m3_m3m3(r, m3, r);
mul_m3_m3m3(r, m4, r);
mul_m3_m3m3(r, m5, r);
mul_m3_m3m3(r, m6, r);
}
void _va_mul_serie_m3_8(
float r[3][3],
float m1[3][3], float m2[3][3], float m3[3][3], float m4[3][3],
float m5[3][3], float m6[3][3], float m7[3][3])
{
mul_m3_m3m3(r, m2, m1);
mul_m3_m3m3(r, m3, r);
mul_m3_m3m3(r, m4, r);
mul_m3_m3m3(r, m5, r);
mul_m3_m3m3(r, m6, r);
mul_m3_m3m3(r, m7, r);
}
void _va_mul_serie_m3_9(
float r[3][3],
float m1[3][3], float m2[3][3], float m3[3][3], float m4[3][3],
float m5[3][3], float m6[3][3], float m7[3][3], float m8[3][3])
{
mul_m3_m3m3(r, m2, m1);
mul_m3_m3m3(r, m3, r);
mul_m3_m3m3(r, m4, r);
mul_m3_m3m3(r, m5, r);
mul_m3_m3m3(r, m6, r);
mul_m3_m3m3(r, m7, r);
mul_m3_m3m3(r, m8, r);
}
/** \} */
/** \name Macro helpers for: mul_serie_m4
* \{ */
void _va_mul_serie_m4_3(
float r[4][4],
float m1[4][4], float m2[4][4])
{
mul_m4_m4m4(r, m2, m1);
}
void _va_mul_serie_m4_4(
float r[4][4],
float m1[4][4], float m2[4][4], float m3[4][4])
{
mul_m4_m4m4(r, m2, m1);
mul_m4_m4m4(r, m3, r);
}
void _va_mul_serie_m4_5(
float r[4][4],
float m1[4][4], float m2[4][4], float m3[4][4], float m4[4][4])
{
mul_m4_m4m4(r, m2, m1);
mul_m4_m4m4(r, m3, r);
mul_m4_m4m4(r, m4, r);
}
void _va_mul_serie_m4_6(
float r[4][4],
float m1[4][4], float m2[4][4], float m3[4][4], float m4[4][4],
float m5[4][4])
{
mul_m4_m4m4(r, m2, m1);
mul_m4_m4m4(r, m3, r);
mul_m4_m4m4(r, m4, r);
mul_m4_m4m4(r, m5, r);
}
void _va_mul_serie_m4_7(
float r[4][4],
float m1[4][4], float m2[4][4], float m3[4][4], float m4[4][4],
float m5[4][4], float m6[4][4])
{
mul_m4_m4m4(r, m2, m1);
mul_m4_m4m4(r, m3, r);
mul_m4_m4m4(r, m4, r);
mul_m4_m4m4(r, m5, r);
mul_m4_m4m4(r, m6, r);
}
void _va_mul_serie_m4_8(
float r[4][4],
float m1[4][4], float m2[4][4], float m3[4][4], float m4[4][4],
float m5[4][4], float m6[4][4], float m7[4][4])
{
mul_m4_m4m4(r, m2, m1);
mul_m4_m4m4(r, m3, r);
mul_m4_m4m4(r, m4, r);
mul_m4_m4m4(r, m5, r);
mul_m4_m4m4(r, m6, r);
mul_m4_m4m4(r, m7, r);
}
void _va_mul_serie_m4_9(
float r[4][4],
float m1[4][4], float m2[4][4], float m3[4][4], float m4[4][4],
float m5[4][4], float m6[4][4], float m7[4][4], float m8[4][4])
{
mul_m4_m4m4(r, m2, m1);
mul_m4_m4m4(r, m3, r);
mul_m4_m4m4(r, m4, r);
mul_m4_m4m4(r, m5, r);
mul_m4_m4m4(r, m6, r);
mul_m4_m4m4(r, m7, r);
mul_m4_m4m4(r, m8, r);
}
/** \} */
void mul_v2_m3v2(float r[2], float m[3][3], float v[2])
{
@ -2115,7 +2192,7 @@ void pseudoinverse_m4_m4(float Ainv[4][4], float A[4][4], float epsilon)
transpose_m4(V);
mul_serie_m4(Ainv, U, Wm, V, NULL, NULL, NULL, NULL, NULL);
mul_serie_m4(Ainv, U, Wm, V);
}
void pseudoinverse_m3_m3(float Ainv[3][3], float A[3][3], float epsilon)

View File

@ -1606,7 +1606,7 @@ void mat4_to_dquat(DualQuat *dq, float basemat[4][4], float mat[4][4])
mul_m4_m4m4(S, baseRinv, baseRS);
/* set scaling part */
mul_serie_m4(dq->scale, basemat, S, baseinv, NULL, NULL, NULL, NULL, NULL);
mul_serie_m4(dq->scale, basemat, S, baseinv);
dq->scale_weight = 1.0f;
}
else {

View File

@ -63,7 +63,7 @@ void bmo_transform_exec(BMesh *UNUSED(bm), BMOperator *op)
if (!is_zero_m4(mat_space)) {
invert_m4_m4(imat_space, mat_space);
mul_serie_m4(mat, imat_space, mat, mat_space, NULL, NULL, NULL, NULL, NULL);
mul_serie_m4(mat, imat_space, mat, mat_space);
}
BMO_ITER (v, &iter, op->slots_in, "verts", BM_VERT) {

View File

@ -804,7 +804,7 @@ void AnimationImporter::apply_matrix_curves(Object *ob, std::vector<FCurve *>& a
// evaluate_joint_world_transform_at_frame(temp, NULL, node, fra);
// calc special matrix
mul_serie_m4(mat, irest, temp, irest_dae, rest, NULL, NULL, NULL, NULL);
mul_serie_m4(mat, irest, temp, irest_dae, rest);
}
else {
copy_m4_m4(mat, matfra);
@ -1210,7 +1210,7 @@ void AnimationImporter::add_bone_animation_sampled(Object *ob, std::vector<FCurv
// evaluate_joint_world_transform_at_frame(temp, NULL, node, fra);
// calc special matrix
mul_serie_m4(mat, irest, temp, irest_dae, rest, NULL, NULL, NULL, NULL);
mul_serie_m4(mat, irest, temp, irest_dae, rest);
float rot[4], loc[3], scale[3];
@ -1545,7 +1545,7 @@ Object *AnimationImporter::translate_animation_OLD(COLLADAFW::Node *node,
// evaluate_joint_world_transform_at_frame(temp, NULL, node, fra);
// calc special matrix
mul_serie_m4(mat, irest, temp, irest_dae, rest, NULL, NULL, NULL, NULL);
mul_serie_m4(mat, irest, temp, irest_dae, rest);
}
else {
copy_m4_m4(mat, matfra);

View File

@ -77,7 +77,7 @@ void TransformWriter::add_node_transform_ob(COLLADASW::Node& node, Object *ob, B
BKE_object_to_mat4(ob, C);
copy_v3_v3(ob->size, scale);
mul_serie_m4(tmat, ob->parent->obmat, ob->parentinv, C, NULL, NULL, NULL, NULL, NULL);
mul_serie_m4(tmat, ob->parent->obmat, ob->parentinv, C);
// calculate local mat

View File

@ -528,8 +528,7 @@ static int add_hook_object(Main *bmain, Scene *scene, Object *obedit, Object *ob
invert_m4_m4(ob->imat, ob->obmat);
/* apparently this call goes from right to left... */
mul_serie_m4(hmd->parentinv, pose_mat, ob->imat, obedit->obmat,
NULL, NULL, NULL, NULL, NULL);
mul_serie_m4(hmd->parentinv, pose_mat, ob->imat, obedit->obmat);
DAG_relations_tag_update(bmain);

View File

@ -1728,7 +1728,7 @@ void clip_draw_main(const bContext *C, SpaceClip *sc, ARegion *ar)
smat[1][1] = 1.0f / height;
invert_m4_m4(ismat, smat);
mul_serie_m4(sc->unistabmat, smat, sc->stabmat, ismat, NULL, NULL, NULL, NULL, NULL);
mul_serie_m4(sc->unistabmat, smat, sc->stabmat, ismat);
}
}
else if ((sc->flag & SC_MUTE_FOOTAGE) == 0) {

View File

@ -2277,7 +2277,7 @@ static void set_axis(Scene *scene, Object *ob, MovieClip *clip, MovieTrackingOb
copy_v3_v3(lmat[3], obmat[3]);
invert_m4_m4(ilmat, lmat);
mul_serie_m4(mat, lmat, mat, ilmat, obmat, NULL, NULL, NULL, NULL);
mul_serie_m4(mat, lmat, mat, ilmat, obmat);
}
else {
mul_m4_m4m4(mat, obmat, mat);

View File

@ -3627,7 +3627,7 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
if (td->flag & TD_USEQUAT) {
mul_serie_m3(fmat, td->mtx, mat, td->smtx, NULL, NULL, NULL, NULL, NULL);
mul_serie_m3(fmat, td->mtx, mat, td->smtx);
mat3_to_quat(quat, fmat); // Actual transform
if (td->ext->quat) {
@ -3697,7 +3697,7 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
if ((t->flag & T_V3D_ALIGN) == 0) { /* align mode doesn't rotate objects itself */
/* euler or quaternion/axis-angle? */
if (td->ext->rotOrder == ROT_MODE_QUAT) {
mul_serie_m3(fmat, td->ext->r_mtx, mat, td->ext->r_smtx, NULL, NULL, NULL, NULL, NULL);
mul_serie_m3(fmat, td->ext->r_mtx, mat, td->ext->r_smtx);
mat3_to_quat(quat, fmat); /* Actual transform */
@ -3712,7 +3712,7 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
axis_angle_to_quat(iquat, td->ext->irotAxis, td->ext->irotAngle);
mul_serie_m3(fmat, td->ext->r_mtx, mat, td->ext->r_smtx, NULL, NULL, NULL, NULL, NULL);
mul_serie_m3(fmat, td->ext->r_mtx, mat, td->ext->r_smtx);
mat3_to_quat(quat, fmat); /* Actual transform */
mul_qt_qtqt(tquat, quat, iquat);
@ -3769,7 +3769,7 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
if ((td->ext->rotOrder == ROT_MODE_QUAT) || (td->flag & TD_USEQUAT)) {
/* can be called for texture space translate for example, then opt out */
if (td->ext->quat) {
mul_serie_m3(fmat, td->mtx, mat, td->smtx, NULL, NULL, NULL, NULL, NULL);
mul_serie_m3(fmat, td->mtx, mat, td->smtx);
mat3_to_quat(quat, fmat); // Actual transform
mul_qt_qtqt(td->ext->quat, quat, td->ext->iquat);
@ -3783,7 +3783,7 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
axis_angle_to_quat(iquat, td->ext->irotAxis, td->ext->irotAngle);
mul_serie_m3(fmat, td->mtx, mat, td->smtx, NULL, NULL, NULL, NULL, NULL);
mul_serie_m3(fmat, td->mtx, mat, td->smtx);
mat3_to_quat(quat, fmat); // Actual transform
mul_qt_qtqt(tquat, quat, iquat);

View File

@ -584,12 +584,12 @@ static void add_pose_transdata(TransInfo *t, bPoseChannel *pchan, Object *ob, Tr
if (constraints_list_needinv(t, &pchan->constraints)) {
copy_m3_m4(tmat, pchan->constinv);
invert_m3_m3(cmat, tmat);
mul_serie_m3(td->mtx, pmat, omat, cmat, NULL, NULL, NULL, NULL, NULL);
mul_serie_m3(td->ext->r_mtx, rpmat, omat, cmat, NULL, NULL, NULL, NULL, NULL);
mul_serie_m3(td->mtx, pmat, omat, cmat);
mul_serie_m3(td->ext->r_mtx, rpmat, omat, cmat);
}
else {
mul_serie_m3(td->mtx, pmat, omat, NULL, NULL, NULL, NULL, NULL, NULL);
mul_serie_m3(td->ext->r_mtx, rpmat, omat, NULL, NULL, NULL, NULL, NULL, NULL);
mul_serie_m3(td->mtx, pmat, omat);
mul_serie_m3(td->ext->r_mtx, rpmat, omat);
}
invert_m3_m3(td->ext->r_smtx, td->ext->r_mtx);
}
@ -2368,8 +2368,7 @@ static void createTransEditVerts(TransInfo *t)
quat_to_mat3(qmat, quats[BM_elem_index_get(eve)]);
if (defmats)
mul_serie_m3(mat, mtx, qmat, defmats[a],
NULL, NULL, NULL, NULL, NULL);
mul_serie_m3(mat, mtx, qmat, defmats[a]);
else
mul_m3_m3m3(mat, mtx, qmat);
}

View File

@ -938,7 +938,7 @@ static void uv_map_rotation_matrix(float result[4][4], RegionView3D *rv3d, Objec
rotup[0][0] = 1.0f / radius;
/* calculate transforms*/
mul_serie_m4(result, rotup, rotside, viewmatrix, rotobj, NULL, NULL, NULL, NULL);
mul_serie_m4(result, rotup, rotside, viewmatrix, rotobj);
}
static void uv_map_transform(bContext *C, wmOperator *op, float center[3], float rotmat[4][4])

View File

@ -215,7 +215,7 @@ static void where_is_ik_bone(bPoseChannel *pchan, float ik_mat[3][3]) // nr =
copy_m4_m3(ikmat, ik_mat);
if (pchan->parent)
mul_serie_m4(pchan->pose_mat, pchan->parent->pose_mat, pchan->chan_mat, ikmat, NULL, NULL, NULL, NULL, NULL);
mul_serie_m4(pchan->pose_mat, pchan->parent->pose_mat, pchan->chan_mat, ikmat);
else
mul_m4_m4m4(pchan->pose_mat, pchan->chan_mat, ikmat);
@ -420,7 +420,7 @@ static void execute_posetree(struct Scene *scene, Object *ob, PoseTree *tree)
/* end effector in world space */
copy_m4_m4(end_pose, pchan->pose_mat);
copy_v3_v3(end_pose[3], pchan->pose_tail);
mul_serie_m4(world_pose, goalinv, ob->obmat, end_pose, NULL, NULL, NULL, NULL, NULL);
mul_serie_m4(world_pose, goalinv, ob->obmat, end_pose);
/* blend position */
goalpos[0] = fac * goalpos[0] + mfac * world_pose[3][0];

View File

@ -566,7 +566,7 @@ static bool target_callback(const iTaSC::Timestamp& timestamp, const iTaSC::Fram
float chanmat[4][4];
copy_m4_m4(chanmat, pchan->pose_mat);
copy_v3_v3(chanmat[3], pchan->pose_tail);
mul_serie_m4(restmat, target->owner->obmat, chanmat, target->eeRest, NULL, NULL, NULL, NULL, NULL);
mul_serie_m4(restmat, target->owner->obmat, chanmat, target->eeRest);
}
else {
mul_m4_m4m4(restmat, target->owner->obmat, target->eeRest);

View File

@ -371,8 +371,7 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd,
unit_m4(obinv);
mul_serie_m4(result_mat, offset,
obinv, amd->offset_ob->obmat,
NULL, NULL, NULL, NULL, NULL);
obinv, amd->offset_ob->obmat);
copy_m4_m4(offset, result_mat);
}

View File

@ -156,8 +156,7 @@ static void deformVerts_do(HookModifierData *hmd, Object *ob, DerivedMesh *dm,
copy_m4_m4(dmat, hmd->object->obmat);
}
invert_m4_m4(ob->imat, ob->obmat);
mul_serie_m4(mat, ob->imat, dmat, hmd->parentinv,
NULL, NULL, NULL, NULL, NULL);
mul_serie_m4(mat, ob->imat, dmat, hmd->parentinv);
modifier_get_vgroup(ob, dm, hmd->name, &dvert, &defgrp_index);
max_dvert = (dvert) ? numVerts : 0;

View File

@ -4546,8 +4546,7 @@ static void set_dupli_tex_mat(Render *re, ObjectInstanceRen *obi, DupliObject *d
obi->duplitexmat= BLI_memarena_alloc(re->memArena, sizeof(float)*4*4);
invert_m4_m4(imat, dob->mat);
mul_serie_m4(obi->duplitexmat, re->viewmat, omat, imat, re->viewinv,
NULL, NULL, NULL, NULL);
mul_serie_m4(obi->duplitexmat, re->viewmat, omat, imat, re->viewinv);
}
copy_v3_v3(obi->dupliorco, dob->orco);