define the size of matrix args for both rows/cols.
This commit is contained in:
parent
e2f0a1e4db
commit
7c699a217a
@ -97,28 +97,28 @@ void BKE_pose_where_is_bone(struct Scene *scene, struct Object *ob, struct bPose
|
||||
void BKE_pose_where_is_bone_tail(struct bPoseChannel *pchan);
|
||||
|
||||
/* get_objectspace_bone_matrix has to be removed still */
|
||||
void get_objectspace_bone_matrix(struct Bone *bone, float M_accumulatedMatrix[][4], int root, int posed);
|
||||
void vec_roll_to_mat3(const float vec[3], const float roll, float mat[][3]);
|
||||
void mat3_to_vec_roll(float mat[][3], float r_vec[3], float *r_roll);
|
||||
void get_objectspace_bone_matrix(struct Bone *bone, float M_accumulatedMatrix[4][4], int root, int posed);
|
||||
void vec_roll_to_mat3(const float vec[3], const float roll, float mat[3][3]);
|
||||
void mat3_to_vec_roll(float mat[3][3], float r_vec[3], float *r_roll);
|
||||
|
||||
/* Common Conversions Between Co-ordinate Spaces */
|
||||
void BKE_armature_mat_world_to_pose(struct Object *ob, float inmat[][4], float outmat[][4]);
|
||||
void BKE_armature_mat_world_to_pose(struct Object *ob, float inmat[4][4], float outmat[4][4]);
|
||||
void BKE_armature_loc_world_to_pose(struct Object *ob, const float inloc[3], float outloc[3]);
|
||||
void BKE_armature_mat_pose_to_bone(struct bPoseChannel *pchan, float inmat[][4], float outmat[][4]);
|
||||
void BKE_armature_mat_pose_to_bone(struct bPoseChannel *pchan, float inmat[4][4], float outmat[4][4]);
|
||||
void BKE_armature_loc_pose_to_bone(struct bPoseChannel *pchan, const float inloc[3], float outloc[3]);
|
||||
void BKE_armature_mat_bone_to_pose(struct bPoseChannel *pchan, float inmat[][4], float outmat[][4]);
|
||||
void BKE_armature_mat_pose_to_delta(float delta_mat[][4], float pose_mat[][4], float arm_mat[][4]);
|
||||
void BKE_armature_mat_bone_to_pose(struct bPoseChannel *pchan, float inmat[4][4], float outmat[4][4]);
|
||||
void BKE_armature_mat_pose_to_delta(float delta_mat[4][4], float pose_mat[4][4], float arm_mat[4][4]);
|
||||
|
||||
void BKE_armature_mat_pose_to_bone_ex(struct Object *ob, struct bPoseChannel *pchan, float inmat[][4], float outmat[][4]);
|
||||
void BKE_armature_mat_pose_to_bone_ex(struct Object *ob, struct bPoseChannel *pchan, float inmat[4][4], float outmat[4][4]);
|
||||
|
||||
void BKE_pchan_mat3_to_rot(struct bPoseChannel *pchan, float mat[][3], short use_compat);
|
||||
void BKE_pchan_apply_mat4(struct bPoseChannel *pchan, float mat[][4], short use_comat);
|
||||
void BKE_pchan_mat3_to_rot(struct bPoseChannel *pchan, float mat[3][3], short use_compat);
|
||||
void BKE_pchan_apply_mat4(struct bPoseChannel *pchan, float mat[4][4], short use_comat);
|
||||
void BKE_pchan_to_mat4(struct bPoseChannel *pchan, float chan_mat[4][4]);
|
||||
void BKE_pchan_calc_mat(struct bPoseChannel *pchan);
|
||||
|
||||
/* Get the "pchan to pose" transform matrix. These matrices apply the effects of
|
||||
* HINGE/NO_SCALE/NO_LOCAL_LOCATION options over the pchan loc/rot/scale transformations. */
|
||||
void BKE_pchan_to_pose_mat(struct bPoseChannel *pchan, float rotscale_mat[][4], float loc_mat[][4]);
|
||||
void BKE_pchan_to_pose_mat(struct bPoseChannel *pchan, float rotscale_mat[4][4], float loc_mat[4][4]);
|
||||
|
||||
/* Rotation Mode Conversions - Used for PoseChannels + Objects... */
|
||||
void BKE_rotMode_change_values(float quat[4], float eul[3], float axis[3], float *angle, short oldMode, short newMode);
|
||||
|
@ -147,9 +147,9 @@ short proxylocked_constraints_owner(struct Object *ob, struct bPoseChannel *pcha
|
||||
struct bConstraintOb *constraints_make_evalob(struct Scene *scene, struct Object *ob, void *subdata, short datatype);
|
||||
void constraints_clear_evalob(struct bConstraintOb *cob);
|
||||
|
||||
void constraint_mat_convertspace(struct Object *ob, struct bPoseChannel *pchan, float mat[][4], short from, short to);
|
||||
void constraint_mat_convertspace(struct Object *ob, struct bPoseChannel *pchan, float mat[4][4], short from, short to);
|
||||
|
||||
void get_constraint_target_matrix(struct Scene *scene, struct bConstraint *con, int n, short ownertype, void *ownerdata, float mat[][4], float ctime);
|
||||
void get_constraint_target_matrix(struct Scene *scene, struct bConstraint *con, int n, short ownertype, void *ownerdata, float mat[4][4], float ctime);
|
||||
void get_constraint_targets_for_solving(struct bConstraint *con, struct bConstraintOb *ob, struct ListBase *targets, float ctime);
|
||||
void solve_constraints(struct ListBase *conlist, struct bConstraintOb *cob, float ctime);
|
||||
|
||||
|
@ -47,7 +47,7 @@ void initElbeemMesh(struct Scene *scene, struct Object *ob,
|
||||
int useGlobalCoords, int modifierIndex);
|
||||
|
||||
/* bounding box & memory estimate */
|
||||
void fluid_get_bb(struct MVert *mvert, int totvert, float obmat[][4],
|
||||
void fluid_get_bb(struct MVert *mvert, int totvert, float obmat[4][4],
|
||||
float start[3], float size[3]);
|
||||
|
||||
void fluid_estimate_memory(struct Object *ob, struct FluidsimSettings *fss, char *value);
|
||||
|
@ -59,7 +59,7 @@ void curve_deform_verts(struct Scene *scene, struct Object *cuOb, struct Object
|
||||
struct DerivedMesh *dm, float (*vertexCos)[3],
|
||||
int numVerts, const char *vgroup, short defaxis);
|
||||
void curve_deform_vector(struct Scene *scene, struct Object *cuOb, struct Object *target,
|
||||
float orco[3], float vec[3], float mat[][3], int no_rot_axis);
|
||||
float orco[3], float vec[3], float mat[3][3], int no_rot_axis);
|
||||
|
||||
void lattice_deform_verts(struct Object *laOb, struct Object *target,
|
||||
struct DerivedMesh *dm, float (*vertexCos)[3],
|
||||
|
@ -87,12 +87,12 @@ void BKE_object_make_local(struct Object *ob);
|
||||
int BKE_object_is_libdata(struct Object *ob);
|
||||
int BKE_object_obdata_is_libdata(struct Object *ob);
|
||||
|
||||
void BKE_object_scale_to_mat3(struct Object *ob, float mat[][3]);
|
||||
void BKE_object_rot_to_mat3(struct Object *ob, float mat[][3]);
|
||||
void BKE_object_mat3_to_rot(struct Object *ob, float mat[][3], short use_compat);
|
||||
void BKE_object_to_mat3(struct Object *ob, float mat[][3]);
|
||||
void BKE_object_to_mat4(struct Object *ob, float mat[][4]);
|
||||
void BKE_object_apply_mat4(struct Object *ob, float mat[][4], const short use_compat, const short use_parent);
|
||||
void BKE_object_scale_to_mat3(struct Object *ob, float mat[3][3]);
|
||||
void BKE_object_rot_to_mat3(struct Object *ob, float mat[3][3]);
|
||||
void BKE_object_mat3_to_rot(struct Object *ob, float mat[3][3], short use_compat);
|
||||
void BKE_object_to_mat3(struct Object *ob, float mat[3][3]);
|
||||
void BKE_object_to_mat4(struct Object *ob, float mat[4][4]);
|
||||
void BKE_object_apply_mat4(struct Object *ob, float mat[4][4], const short use_compat, const short use_parent);
|
||||
|
||||
int BKE_object_pose_context_check(struct Object *ob);
|
||||
struct Object *BKE_object_pose_armature_get(struct Object *ob);
|
||||
|
@ -247,7 +247,7 @@ void BKE_particlesettings_free(struct ParticleSettings *part);
|
||||
void psys_free_path_cache(struct ParticleSystem *psys, struct PTCacheEdit *edit);
|
||||
void psys_free(struct Object *ob, struct ParticleSystem *psys);
|
||||
|
||||
void psys_render_set(struct Object *ob, struct ParticleSystem *psys, float viewmat[][4], float winmat[][4], int winx, int winy, int timeoffset);
|
||||
void psys_render_set(struct Object *ob, struct ParticleSystem *psys, float viewmat[4][4], float winmat[4][4], int winx, int winy, int timeoffset);
|
||||
void psys_render_restore(struct Object *ob, struct ParticleSystem *psys);
|
||||
int psys_render_simplify_distribution(struct ParticleThreadContext *ctx, int tot);
|
||||
int psys_render_simplify_params(struct ParticleSystem *psys, struct ChildParticle *cpa, float *params);
|
||||
@ -288,7 +288,7 @@ void psys_get_dupli_texture(struct ParticleSystem *psys, struct ParticleSettings
|
||||
struct ParticleSystemModifierData *psmd, struct ParticleData *pa, struct ChildParticle *cpa,
|
||||
float uv[2], float orco[3]);
|
||||
void psys_get_dupli_path_transform(struct ParticleSimulationData *sim, struct ParticleData *pa, struct ChildParticle *cpa,
|
||||
struct ParticleCacheKey *cache, float mat[][4], float *scale);
|
||||
struct ParticleCacheKey *cache, float mat[4][4], float *scale);
|
||||
|
||||
ParticleThread *psys_threads_create(struct ParticleSimulationData *sim);
|
||||
void psys_threads_free(ParticleThread *threads);
|
||||
@ -322,9 +322,9 @@ void psys_free_children(struct ParticleSystem *psys);
|
||||
|
||||
void psys_interpolate_particle(short type, struct ParticleKey keys[4], float dt, struct ParticleKey *result, int velocity);
|
||||
void psys_vec_rot_to_face(struct DerivedMesh *dm, struct ParticleData *pa, float vec[3]);
|
||||
void psys_mat_hair_to_object(struct Object *ob, struct DerivedMesh *dm, short from, struct ParticleData *pa, float hairmat[][4]);
|
||||
void psys_mat_hair_to_global(struct Object *ob, struct DerivedMesh *dm, short from, struct ParticleData *pa, float hairmat[][4]);
|
||||
void psys_mat_hair_to_orco(struct Object *ob, struct DerivedMesh *dm, short from, struct ParticleData *pa, float hairmat[][4]);
|
||||
void psys_mat_hair_to_object(struct Object *ob, struct DerivedMesh *dm, short from, struct ParticleData *pa, float hairmat[4][4]);
|
||||
void psys_mat_hair_to_global(struct Object *ob, struct DerivedMesh *dm, short from, struct ParticleData *pa, float hairmat[4][4]);
|
||||
void psys_mat_hair_to_orco(struct Object *ob, struct DerivedMesh *dm, short from, struct ParticleData *pa, float hairmat[4][4]);
|
||||
|
||||
float psys_get_dietime_from_cache(struct PointCache *cache, int index);
|
||||
|
||||
|
@ -76,7 +76,7 @@
|
||||
/* --------------------- */
|
||||
/* forward declarations */
|
||||
|
||||
static void object_duplilist_recursive(ID *id, Scene *scene, Object *ob, ListBase *duplilist, float par_space_mat[][4],
|
||||
static void object_duplilist_recursive(ID *id, Scene *scene, Object *ob, ListBase *duplilist, float par_space_mat[4][4],
|
||||
int persistent_id[MAX_DUPLI_RECUR], int level, int index, short flag);
|
||||
|
||||
/* ******************************************************************** */
|
||||
@ -706,7 +706,7 @@ int where_on_path(Object *ob, float ctime, float vec[4], float dir[3], float qua
|
||||
#define DUPLILIST_FOR_RENDER 2
|
||||
#define DUPLILIST_ANIMATED 4
|
||||
|
||||
static DupliObject *new_dupli_object(ListBase *lb, Object *ob, float mat[][4], int lay,
|
||||
static DupliObject *new_dupli_object(ListBase *lb, Object *ob, float mat[4][4], int lay,
|
||||
int persistent_id[MAX_DUPLI_RECUR], int level, int index, int type, short flag)
|
||||
{
|
||||
DupliObject *dob = MEM_callocN(sizeof(DupliObject), "dupliobject");
|
||||
@ -930,7 +930,7 @@ static void vertex_dupli__mapFunc(void *userData, int index, const float co[3],
|
||||
}
|
||||
}
|
||||
|
||||
static void vertex_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, float par_space_mat[][4], int persistent_id[MAX_DUPLI_RECUR],
|
||||
static void vertex_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, float par_space_mat[4][4], int persistent_id[MAX_DUPLI_RECUR],
|
||||
int level, short flag)
|
||||
{
|
||||
Object *ob, *ob_iter;
|
||||
@ -1054,7 +1054,7 @@ static void vertex_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, fl
|
||||
dm->release(dm);
|
||||
}
|
||||
|
||||
static void face_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, float par_space_mat[][4], int persistent_id[MAX_DUPLI_RECUR],
|
||||
static void face_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, float par_space_mat[4][4], int persistent_id[MAX_DUPLI_RECUR],
|
||||
int level, short flag)
|
||||
{
|
||||
Object *ob, *ob_iter;
|
||||
@ -1240,7 +1240,8 @@ static void face_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, floa
|
||||
dm->release(dm);
|
||||
}
|
||||
|
||||
static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, float par_space_mat[][4], int persistent_id[MAX_DUPLI_RECUR], ParticleSystem *psys,
|
||||
static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, float par_space_mat[4][4],
|
||||
int persistent_id[MAX_DUPLI_RECUR], ParticleSystem *psys,
|
||||
int level, short flag)
|
||||
{
|
||||
GroupObject *go;
|
||||
@ -1635,7 +1636,7 @@ static void font_duplilist(ListBase *lb, Scene *scene, Object *par, int persiste
|
||||
|
||||
/* ------------- */
|
||||
|
||||
static void object_duplilist_recursive(ID *id, Scene *scene, Object *ob, ListBase *duplilist, float par_space_mat[][4],
|
||||
static void object_duplilist_recursive(ID *id, Scene *scene, Object *ob, ListBase *duplilist, float par_space_mat[4][4],
|
||||
int persistent_id[MAX_DUPLI_RECUR], int level, int index, short flag)
|
||||
{
|
||||
if ((ob->transflag & OB_DUPLI) == 0)
|
||||
|
@ -640,7 +640,7 @@ static void pchan_b_bone_defmats(bPoseChannel *pchan, bPoseChanDeform *pdef_info
|
||||
}
|
||||
}
|
||||
|
||||
static void b_bone_deform(bPoseChanDeform *pdef_info, Bone *bone, float co[3], DualQuat *dq, float defmat[][3])
|
||||
static void b_bone_deform(bPoseChanDeform *pdef_info, Bone *bone, float co[3], DualQuat *dq, float defmat[3][3])
|
||||
{
|
||||
Mat4 *b_bone = pdef_info->b_bone_mats;
|
||||
float (*mat)[4] = b_bone[0].mat;
|
||||
@ -722,7 +722,7 @@ float distfactor_to_bone(const float vec[3], const float b1[3], const float b2[3
|
||||
}
|
||||
}
|
||||
|
||||
static void pchan_deform_mat_add(bPoseChannel *pchan, float weight, float bbonemat[][3], float mat[][3])
|
||||
static void pchan_deform_mat_add(bPoseChannel *pchan, float weight, float bbonemat[3][3], float mat[3][3])
|
||||
{
|
||||
float wmat[3][3];
|
||||
|
||||
@ -736,7 +736,7 @@ static void pchan_deform_mat_add(bPoseChannel *pchan, float weight, float bbonem
|
||||
}
|
||||
|
||||
static float dist_bone_deform(bPoseChannel *pchan, bPoseChanDeform *pdef_info, float vec[3], DualQuat *dq,
|
||||
float mat[][3], const float co[3])
|
||||
float mat[3][3], const float co[3])
|
||||
{
|
||||
Bone *bone = pchan->bone;
|
||||
float fac, contrib = 0.0;
|
||||
@ -783,7 +783,7 @@ static float dist_bone_deform(bPoseChannel *pchan, bPoseChanDeform *pdef_info, f
|
||||
}
|
||||
|
||||
static void pchan_bone_deform(bPoseChannel *pchan, bPoseChanDeform *pdef_info, float weight, float vec[3], DualQuat *dq,
|
||||
float mat[][3], const float co[3], float *contrib)
|
||||
float mat[3][3], const float co[3], float *contrib)
|
||||
{
|
||||
float cop[3], bbonemat[3][3];
|
||||
DualQuat bbonedq;
|
||||
@ -1089,7 +1089,7 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm, float
|
||||
|
||||
/* ************ END Armature Deform ******************* */
|
||||
|
||||
void get_objectspace_bone_matrix(struct Bone *bone, float M_accumulatedMatrix[][4], int UNUSED(root),
|
||||
void get_objectspace_bone_matrix(struct Bone *bone, float M_accumulatedMatrix[4][4], int UNUSED(root),
|
||||
int UNUSED(posed))
|
||||
{
|
||||
copy_m4_m4(M_accumulatedMatrix, bone->arm_mat);
|
||||
@ -1098,7 +1098,7 @@ void get_objectspace_bone_matrix(struct Bone *bone, float M_accumulatedMatrix[][
|
||||
/* **************** Space to Space API ****************** */
|
||||
|
||||
/* Convert World-Space Matrix to Pose-Space Matrix */
|
||||
void BKE_armature_mat_world_to_pose(Object *ob, float inmat[][4], float outmat[][4])
|
||||
void BKE_armature_mat_world_to_pose(Object *ob, float inmat[4][4], float outmat[4][4])
|
||||
{
|
||||
float obmat[4][4];
|
||||
|
||||
@ -1132,7 +1132,7 @@ void BKE_armature_loc_world_to_pose(Object *ob, const float inloc[3], float outl
|
||||
/* Simple helper, computes the offset bone matrix.
|
||||
* offs_bone = yoffs(b-1) + root(b) + bonemat(b).
|
||||
* Not exported, as it is only used in this file currently... */
|
||||
static void get_offset_bone_mat(Bone *bone, float offs_bone[][4])
|
||||
static void get_offset_bone_mat(Bone *bone, float offs_bone[4][4])
|
||||
{
|
||||
if (!bone->parent)
|
||||
return;
|
||||
@ -1164,7 +1164,7 @@ static void get_offset_bone_mat(Bone *bone, float offs_bone[][4])
|
||||
* pose-channel into its local space (i.e. 'visual'-keyframing).
|
||||
* (note: I don't understand that, so I keep it :p --mont29).
|
||||
*/
|
||||
void BKE_pchan_to_pose_mat(bPoseChannel *pchan, float rotscale_mat[][4], float loc_mat[][4])
|
||||
void BKE_pchan_to_pose_mat(bPoseChannel *pchan, float rotscale_mat[4][4], float loc_mat[4][4])
|
||||
{
|
||||
Bone *bone, *parbone;
|
||||
bPoseChannel *parchan;
|
||||
@ -1253,7 +1253,7 @@ void BKE_pchan_to_pose_mat(bPoseChannel *pchan, float rotscale_mat[][4], float l
|
||||
/* Convert Pose-Space Matrix to Bone-Space Matrix.
|
||||
* NOTE: this cannot be used to convert to pose-space transforms of the supplied
|
||||
* pose-channel into its local space (i.e. 'visual'-keyframing) */
|
||||
void BKE_armature_mat_pose_to_bone(bPoseChannel *pchan, float inmat[][4], float outmat[][4])
|
||||
void BKE_armature_mat_pose_to_bone(bPoseChannel *pchan, float inmat[4][4], float outmat[4][4])
|
||||
{
|
||||
float rotscale_mat[4][4], loc_mat[4][4], inmat_[4][4];
|
||||
|
||||
@ -1269,7 +1269,7 @@ void BKE_armature_mat_pose_to_bone(bPoseChannel *pchan, float inmat[][4], float
|
||||
}
|
||||
|
||||
/* Convert Bone-Space Matrix to Pose-Space Matrix. */
|
||||
void BKE_armature_mat_bone_to_pose(bPoseChannel *pchan, float inmat[][4], float outmat[][4])
|
||||
void BKE_armature_mat_bone_to_pose(bPoseChannel *pchan, float inmat[4][4], float outmat[4][4])
|
||||
{
|
||||
float rotscale_mat[4][4], loc_mat[4][4], inmat_[4][4];
|
||||
|
||||
@ -1298,7 +1298,7 @@ void BKE_armature_loc_pose_to_bone(bPoseChannel *pchan, const float inloc[3], fl
|
||||
copy_v3_v3(outloc, nLocMat[3]);
|
||||
}
|
||||
|
||||
void BKE_armature_mat_pose_to_bone_ex(Object *ob, bPoseChannel *pchan, float inmat[][4], float outmat[][4])
|
||||
void BKE_armature_mat_pose_to_bone_ex(Object *ob, bPoseChannel *pchan, float inmat[4][4], float outmat[4][4])
|
||||
{
|
||||
bPoseChannel work_pchan = *pchan;
|
||||
|
||||
@ -1316,7 +1316,7 @@ void BKE_armature_mat_pose_to_bone_ex(Object *ob, bPoseChannel *pchan, float inm
|
||||
}
|
||||
|
||||
/* same as BKE_object_mat3_to_rot() */
|
||||
void BKE_pchan_mat3_to_rot(bPoseChannel *pchan, float mat[][3], short use_compat)
|
||||
void BKE_pchan_mat3_to_rot(bPoseChannel *pchan, float mat[3][3], short use_compat)
|
||||
{
|
||||
switch (pchan->rotmode) {
|
||||
case ROT_MODE_QUAT:
|
||||
@ -1335,7 +1335,7 @@ void BKE_pchan_mat3_to_rot(bPoseChannel *pchan, float mat[][3], short use_compat
|
||||
|
||||
/* Apply a 4x4 matrix to the pose bone,
|
||||
* similar to BKE_object_apply_mat4() */
|
||||
void BKE_pchan_apply_mat4(bPoseChannel *pchan, float mat[][4], short use_compat)
|
||||
void BKE_pchan_apply_mat4(bPoseChannel *pchan, float mat[4][4], short use_compat)
|
||||
{
|
||||
float rot[3][3];
|
||||
mat4_to_loc_rot_size(pchan->loc, rot, pchan->size, mat);
|
||||
@ -1345,7 +1345,7 @@ void BKE_pchan_apply_mat4(bPoseChannel *pchan, float mat[][4], short use_compat)
|
||||
/* Remove rest-position effects from pose-transform for obtaining
|
||||
* 'visual' transformation of pose-channel.
|
||||
* (used by the Visual-Keyframing stuff) */
|
||||
void BKE_armature_mat_pose_to_delta(float delta_mat[][4], float pose_mat[][4], float arm_mat[][4])
|
||||
void BKE_armature_mat_pose_to_delta(float delta_mat[4][4], float pose_mat[4][4], float arm_mat[4][4])
|
||||
{
|
||||
float imat[4][4];
|
||||
|
||||
@ -1425,7 +1425,7 @@ void BKE_rotMode_change_values(float quat[4], float eul[3], float axis[3], float
|
||||
* *************************************************************************** */
|
||||
/* Computes vector and roll based on a rotation.
|
||||
* "mat" must contain only a rotation, and no scaling. */
|
||||
void mat3_to_vec_roll(float mat[][3], float r_vec[3], float *r_roll)
|
||||
void mat3_to_vec_roll(float mat[3][3], float r_vec[3], float *r_roll)
|
||||
{
|
||||
if (r_vec) {
|
||||
copy_v3_v3(r_vec, mat[1]);
|
||||
@ -1444,7 +1444,7 @@ void mat3_to_vec_roll(float mat[][3], float r_vec[3], float *r_roll)
|
||||
|
||||
/* Calculates the rest matrix of a bone based
|
||||
* On its vector and a roll around that vector */
|
||||
void vec_roll_to_mat3(const float vec[3], const float roll, float mat[][3])
|
||||
void vec_roll_to_mat3(const float vec[3], const float roll, float mat[3][3])
|
||||
{
|
||||
float nor[3], axis[3], target[3] = {0, 1, 0};
|
||||
float theta;
|
||||
|
@ -219,7 +219,7 @@ void constraints_clear_evalob(bConstraintOb *cob)
|
||||
* of a matrix from one space to another for constraint evaluation.
|
||||
* For now, this is only implemented for Objects and PoseChannels.
|
||||
*/
|
||||
void constraint_mat_convertspace(Object *ob, bPoseChannel *pchan, float mat[][4], short from, short to)
|
||||
void constraint_mat_convertspace(Object *ob, bPoseChannel *pchan, float mat[4][4], short from, short to)
|
||||
{
|
||||
float diff_mat[4][4];
|
||||
float imat[4][4];
|
||||
@ -345,7 +345,7 @@ void constraint_mat_convertspace(Object *ob, bPoseChannel *pchan, float mat[][4]
|
||||
/* ------------ General Target Matrix Tools ---------- */
|
||||
|
||||
/* function that sets the given matrix based on given vertex group in mesh */
|
||||
static void contarget_get_mesh_mat(Object *ob, const char *substring, float mat[][4])
|
||||
static void contarget_get_mesh_mat(Object *ob, const char *substring, float mat[4][4])
|
||||
{
|
||||
DerivedMesh *dm = NULL;
|
||||
BMEditMesh *em = BMEdit_FromObject(ob);
|
||||
@ -441,7 +441,7 @@ static void contarget_get_mesh_mat(Object *ob, const char *substring, float mat[
|
||||
}
|
||||
|
||||
/* function that sets the given matrix based on given vertex group in lattice */
|
||||
static void contarget_get_lattice_mat(Object *ob, const char *substring, float mat[][4])
|
||||
static void contarget_get_lattice_mat(Object *ob, const char *substring, float mat[4][4])
|
||||
{
|
||||
Lattice *lt = (Lattice *)ob->data;
|
||||
|
||||
@ -494,7 +494,7 @@ static void contarget_get_lattice_mat(Object *ob, const char *substring, float m
|
||||
|
||||
/* generic function to get the appropriate matrix for most target cases */
|
||||
/* The cases where the target can be object data have not been implemented */
|
||||
static void constraint_target_to_mat4(Object *ob, const char *substring, float mat[][4], short from, short to, float headtail)
|
||||
static void constraint_target_to_mat4(Object *ob, const char *substring, float mat[4][4], short from, short to, float headtail)
|
||||
{
|
||||
/* Case OBJECT */
|
||||
if (!strlen(substring)) {
|
||||
@ -890,7 +890,7 @@ static int basis_cross(int n, int m)
|
||||
}
|
||||
}
|
||||
|
||||
static void vectomat(const float vec[3], const float target_up[3], short axis, short upflag, short flags, float m[][3])
|
||||
static void vectomat(const float vec[3], const float target_up[3], short axis, short upflag, short flags, float m[3][3])
|
||||
{
|
||||
float n[3];
|
||||
float u[3]; /* vector specifying the up axis */
|
||||
@ -4610,7 +4610,7 @@ short proxylocked_constraints_owner(Object *ob, bPoseChannel *pchan)
|
||||
* None of the actual calculations of the matrices should be done here! Also, this function is
|
||||
* not to be used by any new constraints, particularly any that have multiple targets.
|
||||
*/
|
||||
void get_constraint_target_matrix(struct Scene *scene, bConstraint *con, int n, short ownertype, void *ownerdata, float mat[][4], float ctime)
|
||||
void get_constraint_target_matrix(struct Scene *scene, bConstraint *con, int n, short ownertype, void *ownerdata, float mat[4][4], float ctime)
|
||||
{
|
||||
bConstraintTypeInfo *cti = constraint_get_typeinfo(con);
|
||||
ListBase targets = {NULL, NULL};
|
||||
|
@ -753,7 +753,7 @@ void curve_deform_verts(Scene *scene, Object *cuOb, Object *target,
|
||||
/* orco is original not-animated or deformed reference point */
|
||||
/* result written in vec and mat */
|
||||
void curve_deform_vector(Scene *scene, Object *cuOb, Object *target,
|
||||
float orco[3], float vec[3], float mat[][3], int no_rot_axis)
|
||||
float orco[3], float vec[3], float mat[3][3], int no_rot_axis)
|
||||
{
|
||||
CurveDeform cd;
|
||||
float quat[4];
|
||||
|
@ -1488,14 +1488,14 @@ void BKE_object_make_proxy(Object *ob, Object *target, Object *gob)
|
||||
|
||||
/* *************** CALC ****************** */
|
||||
|
||||
void BKE_object_scale_to_mat3(Object *ob, float mat[][3])
|
||||
void BKE_object_scale_to_mat3(Object *ob, float mat[3][3])
|
||||
{
|
||||
float vec[3];
|
||||
mul_v3_v3v3(vec, ob->size, ob->dscale);
|
||||
size_to_mat3(mat, vec);
|
||||
}
|
||||
|
||||
void BKE_object_rot_to_mat3(Object *ob, float mat[][3])
|
||||
void BKE_object_rot_to_mat3(Object *ob, float mat[3][3])
|
||||
{
|
||||
float rmat[3][3], dmat[3][3];
|
||||
|
||||
@ -1529,7 +1529,7 @@ void BKE_object_rot_to_mat3(Object *ob, float mat[][3])
|
||||
mul_m3_m3m3(mat, dmat, rmat);
|
||||
}
|
||||
|
||||
void BKE_object_mat3_to_rot(Object *ob, float mat[][3], short use_compat)
|
||||
void BKE_object_mat3_to_rot(Object *ob, float mat[3][3], short use_compat)
|
||||
{
|
||||
switch (ob->rotmode) {
|
||||
case ROT_MODE_QUAT:
|
||||
@ -1632,7 +1632,7 @@ void BKE_object_tfm_protected_restore(Object *ob,
|
||||
}
|
||||
|
||||
/* see BKE_pchan_apply_mat4() for the equivalent 'pchan' function */
|
||||
void BKE_object_apply_mat4(Object *ob, float mat[][4], const short use_compat, const short use_parent)
|
||||
void BKE_object_apply_mat4(Object *ob, float mat[4][4], const short use_compat, const short use_parent)
|
||||
{
|
||||
float rot[3][3];
|
||||
|
||||
@ -1661,7 +1661,7 @@ void BKE_object_apply_mat4(Object *ob, float mat[][4], const short use_compat, c
|
||||
/* BKE_object_mat3_to_rot handles delta rotations */
|
||||
}
|
||||
|
||||
void BKE_object_to_mat3(Object *ob, float mat[][3]) /* no parent */
|
||||
void BKE_object_to_mat3(Object *ob, float mat[3][3]) /* no parent */
|
||||
{
|
||||
float smat[3][3];
|
||||
float rmat[3][3];
|
||||
@ -1675,7 +1675,7 @@ void BKE_object_to_mat3(Object *ob, float mat[][3]) /* no parent */
|
||||
mul_m3_m3m3(mat, rmat, smat);
|
||||
}
|
||||
|
||||
void BKE_object_to_mat4(Object *ob, float mat[][4])
|
||||
void BKE_object_to_mat4(Object *ob, float mat[4][4])
|
||||
{
|
||||
float tmat[3][3];
|
||||
|
||||
@ -1689,7 +1689,7 @@ void BKE_object_to_mat4(Object *ob, float mat[][4])
|
||||
/* extern */
|
||||
int enable_cu_speed = 1;
|
||||
|
||||
static void ob_parcurve(Scene *scene, Object *ob, Object *par, float mat[][4])
|
||||
static void ob_parcurve(Scene *scene, Object *ob, Object *par, float mat[4][4])
|
||||
{
|
||||
Curve *cu;
|
||||
float vec[4], dir[3], quat[4], radius, ctime;
|
||||
@ -1773,7 +1773,7 @@ static void ob_parcurve(Scene *scene, Object *ob, Object *par, float mat[][4])
|
||||
}
|
||||
}
|
||||
|
||||
static void ob_parbone(Object *ob, Object *par, float mat[][4])
|
||||
static void ob_parbone(Object *ob, Object *par, float mat[4][4])
|
||||
{
|
||||
bPoseChannel *pchan;
|
||||
float vec[3];
|
||||
@ -1903,7 +1903,7 @@ static void give_parvert(Object *par, int nr, float vec[3])
|
||||
}
|
||||
}
|
||||
|
||||
static void ob_parvert3(Object *ob, Object *par, float mat[][4])
|
||||
static void ob_parvert3(Object *ob, Object *par, float mat[4][4])
|
||||
{
|
||||
float cmat[3][3], v1[3], v2[3], v3[3], q[4];
|
||||
|
||||
@ -1931,7 +1931,7 @@ static void ob_parvert3(Object *ob, Object *par, float mat[][4])
|
||||
}
|
||||
}
|
||||
|
||||
static void solve_parenting(Scene *scene, Object *ob, Object *par, float obmat[][4], float slowmat[][4], int simul)
|
||||
static void solve_parenting(Scene *scene, Object *ob, Object *par, float obmat[4][4], float slowmat[4][4], int simul)
|
||||
{
|
||||
float totmat[4][4];
|
||||
float tmat[4][4];
|
||||
|
@ -680,7 +680,7 @@ static float psys_render_projected_area(ParticleSystem *psys, const float center
|
||||
return area;
|
||||
}
|
||||
|
||||
void psys_render_set(Object *ob, ParticleSystem *psys, float viewmat[][4], float winmat[][4], int winx, int winy, int timeoffset)
|
||||
void psys_render_set(Object *ob, ParticleSystem *psys, float viewmat[4][4], float winmat[4][4], int winx, int winy, int timeoffset)
|
||||
{
|
||||
ParticleRenderData *data;
|
||||
ParticleSystemModifierData *psmd = psys_get_modifier(ob, psys);
|
||||
@ -1919,7 +1919,7 @@ void psys_particle_on_emitter(ParticleSystemModifierData *psmd, int from, int in
|
||||
/* Path Cache */
|
||||
/************************************************/
|
||||
|
||||
static void do_kink(ParticleKey *state, ParticleKey *par, float *par_rot, float time, float freq, float shape, float amplitude, float flat, short type, short axis, float obmat[][4], int smooth_start)
|
||||
static void do_kink(ParticleKey *state, ParticleKey *par, float *par_rot, float time, float freq, float shape, float amplitude, float flat, short type, short axis, float obmat[4][4], int smooth_start)
|
||||
{
|
||||
float kink[3] = {1.f, 0.f, 0.f}, par_vec[3], q1[4] = {1.f, 0.f, 0.f, 0.f};
|
||||
float t, dt = 1.f, result[3];
|
||||
@ -3351,7 +3351,7 @@ static void key_from_object(Object *ob, ParticleKey *key)
|
||||
}
|
||||
#endif
|
||||
|
||||
static void triatomat(float *v1, float *v2, float *v3, float (*uv)[2], float mat[][4])
|
||||
static void triatomat(float *v1, float *v2, float *v3, float (*uv)[2], float mat[4][4])
|
||||
{
|
||||
float det, w1, w2, d1[2], d2[2];
|
||||
|
||||
@ -3392,7 +3392,7 @@ static void triatomat(float *v1, float *v2, float *v3, float (*uv)[2], float mat
|
||||
cross_v3_v3v3(mat[0], mat[1], mat[2]);
|
||||
}
|
||||
|
||||
static void psys_face_mat(Object *ob, DerivedMesh *dm, ParticleData *pa, float mat[][4], int orco)
|
||||
static void psys_face_mat(Object *ob, DerivedMesh *dm, ParticleData *pa, float mat[4][4], int orco)
|
||||
{
|
||||
float v[3][3];
|
||||
MFace *mface;
|
||||
@ -3425,7 +3425,7 @@ static void psys_face_mat(Object *ob, DerivedMesh *dm, ParticleData *pa, float m
|
||||
triatomat(v[0], v[1], v[2], (osface) ? osface->uv : NULL, mat);
|
||||
}
|
||||
|
||||
void psys_mat_hair_to_object(Object *UNUSED(ob), DerivedMesh *dm, short from, ParticleData *pa, float hairmat[][4])
|
||||
void psys_mat_hair_to_object(Object *UNUSED(ob), DerivedMesh *dm, short from, ParticleData *pa, float hairmat[4][4])
|
||||
{
|
||||
float vec[3];
|
||||
|
||||
@ -3440,7 +3440,7 @@ void psys_mat_hair_to_object(Object *UNUSED(ob), DerivedMesh *dm, short from, Pa
|
||||
copy_v3_v3(hairmat[3], vec);
|
||||
}
|
||||
|
||||
void psys_mat_hair_to_orco(Object *ob, DerivedMesh *dm, short from, ParticleData *pa, float hairmat[][4])
|
||||
void psys_mat_hair_to_orco(Object *ob, DerivedMesh *dm, short from, ParticleData *pa, float hairmat[4][4])
|
||||
{
|
||||
float vec[3], orco[3];
|
||||
|
||||
@ -3462,7 +3462,7 @@ void psys_vec_rot_to_face(DerivedMesh *dm, ParticleData *pa, float vec[3])
|
||||
mul_mat3_m4_v3(mat, vec);
|
||||
}
|
||||
|
||||
void psys_mat_hair_to_global(Object *ob, DerivedMesh *dm, short from, ParticleData *pa, float hairmat[][4])
|
||||
void psys_mat_hair_to_global(Object *ob, DerivedMesh *dm, short from, ParticleData *pa, float hairmat[4][4])
|
||||
{
|
||||
float facemat[4][4];
|
||||
|
||||
@ -4502,7 +4502,7 @@ void psys_get_dupli_texture(ParticleSystem *psys, ParticleSettings *part,
|
||||
psys_particle_on_emitter(psmd, part->from, pa->num, pa->num_dmcache, pa->fuv, pa->foffset, loc, 0, 0, 0, orco, 0);
|
||||
}
|
||||
|
||||
void psys_get_dupli_path_transform(ParticleSimulationData *sim, ParticleData *pa, ChildParticle *cpa, ParticleCacheKey *cache, float mat[][4], float *scale)
|
||||
void psys_get_dupli_path_transform(ParticleSimulationData *sim, ParticleData *pa, ChildParticle *cpa, ParticleCacheKey *cache, float mat[4][4], float *scale)
|
||||
{
|
||||
Object *ob = sim->ob;
|
||||
ParticleSystem *psys = sim->psys;
|
||||
|
@ -202,7 +202,7 @@ void perspective_m4(float mat[4][4], const float left, const float right,
|
||||
const float bottom, const float top, const float nearClip, const float farClip);
|
||||
void orthographic_m4(float mat[4][4], const float left, const float right,
|
||||
const float bottom, const float top, const float nearClip, const float farClip);
|
||||
void window_translate_m4(float winmat[][4], float perspmat[][4],
|
||||
void window_translate_m4(float winmat[4][4], float perspmat[4][4],
|
||||
const float x, const float y);
|
||||
|
||||
int box_clip_bounds_m4(float boundbox[2][3],
|
||||
|
@ -167,8 +167,8 @@ void translate_m4(float mat[4][4], float tx, float ty, float tz);
|
||||
void rotate_m4(float mat[4][4], const char axis, const float angle);
|
||||
|
||||
|
||||
void mat3_to_rot_size(float rot[3][3], float size[3], float mat3[][3]);
|
||||
void mat4_to_loc_rot_size(float loc[3], float rot[3][3], float size[3], float wmat[][4]);
|
||||
void mat3_to_rot_size(float rot[3][3], float size[3], float mat3[3][3]);
|
||||
void mat4_to_loc_rot_size(float loc[3], float rot[3][3], float size[3], float wmat[4][4]);
|
||||
|
||||
void loc_eul_size_to_mat4(float R[4][4],
|
||||
const float loc[3], const float eul[3], const float size[3]);
|
||||
|
@ -2435,7 +2435,7 @@ void interp_barycentric_tri_v3(float data[3][3], float u, float v, float res[3])
|
||||
|
||||
/***************************** View & Projection *****************************/
|
||||
|
||||
void orthographic_m4(float matrix[][4], const float left, const float right, const float bottom, const float top,
|
||||
void orthographic_m4(float matrix[4][4], const float left, const float right, const float bottom, const float top,
|
||||
const float nearClip, const float farClip)
|
||||
{
|
||||
float Xdelta, Ydelta, Zdelta;
|
||||
@ -2481,7 +2481,7 @@ void perspective_m4(float mat[4][4], const float left, const float right, const
|
||||
}
|
||||
|
||||
/* translate a matrix created by orthographic_m4 or perspective_m4 in XY coords (used to jitter the view) */
|
||||
void window_translate_m4(float winmat[][4], float perspmat[][4], const float x, const float y)
|
||||
void window_translate_m4(float winmat[4][4], float perspmat[4][4], const float x, const float y)
|
||||
{
|
||||
if (winmat[2][3] == -1.0f) {
|
||||
/* in the case of a win-matrix, this means perspective always */
|
||||
@ -2509,7 +2509,7 @@ void window_translate_m4(float winmat[][4], float perspmat[][4], const float x,
|
||||
}
|
||||
}
|
||||
|
||||
static void i_multmatrix(float icand[][4], float Vm[][4])
|
||||
static void i_multmatrix(float icand[4][4], float Vm[4][4])
|
||||
{
|
||||
int row, col;
|
||||
float temp[4][4];
|
||||
@ -2523,7 +2523,7 @@ static void i_multmatrix(float icand[][4], float Vm[][4])
|
||||
copy_m4_m4(Vm, temp);
|
||||
}
|
||||
|
||||
void polarview_m4(float Vm[][4], float dist, float azimuth, float incidence, float twist)
|
||||
void polarview_m4(float Vm[4][4], float dist, float azimuth, float incidence, float twist)
|
||||
{
|
||||
|
||||
unit_m4(Vm);
|
||||
@ -2534,7 +2534,7 @@ void polarview_m4(float Vm[][4], float dist, float azimuth, float incidence, flo
|
||||
rotate_m4(Vm, 'Z', -azimuth);
|
||||
}
|
||||
|
||||
void lookat_m4(float mat[][4], float vx, float vy, float vz, float px, float py, float pz, float twist)
|
||||
void lookat_m4(float mat[4][4], float vx, float vy, float vz, float px, float py, float pz, float twist)
|
||||
{
|
||||
float sine, cosine, hyp, hyp1, dx, dy, dz;
|
||||
float mat1[4][4] = MAT4_UNITY;
|
||||
|
@ -43,7 +43,7 @@ void zero_m4(float m[4][4])
|
||||
memset(m, 0, 4 * 4 * sizeof(float));
|
||||
}
|
||||
|
||||
void unit_m3(float m[][3])
|
||||
void unit_m3(float m[3][3])
|
||||
{
|
||||
m[0][0] = m[1][1] = m[2][2] = 1.0;
|
||||
m[0][1] = m[0][2] = 0.0;
|
||||
@ -51,7 +51,7 @@ void unit_m3(float m[][3])
|
||||
m[2][0] = m[2][1] = 0.0;
|
||||
}
|
||||
|
||||
void unit_m4(float m[][4])
|
||||
void unit_m4(float m[4][4])
|
||||
{
|
||||
m[0][0] = m[1][1] = m[2][2] = m[3][3] = 1.0;
|
||||
m[0][1] = m[0][2] = m[0][3] = 0.0;
|
||||
@ -60,18 +60,18 @@ void unit_m4(float m[][4])
|
||||
m[3][0] = m[3][1] = m[3][2] = 0.0;
|
||||
}
|
||||
|
||||
void copy_m3_m3(float m1[][3], float m2[][3])
|
||||
void copy_m3_m3(float m1[3][3], float m2[3][3])
|
||||
{
|
||||
/* destination comes first: */
|
||||
memcpy(&m1[0], &m2[0], 9 * sizeof(float));
|
||||
}
|
||||
|
||||
void copy_m4_m4(float m1[][4], float m2[][4])
|
||||
void copy_m4_m4(float m1[4][4], float m2[4][4])
|
||||
{
|
||||
memcpy(m1, m2, 4 * 4 * sizeof(float));
|
||||
}
|
||||
|
||||
void copy_m3_m4(float m1[][3], float m2[][4])
|
||||
void copy_m3_m4(float m1[3][3], float m2[4][4])
|
||||
{
|
||||
m1[0][0] = m2[0][0];
|
||||
m1[0][1] = m2[0][1];
|
||||
@ -86,7 +86,7 @@ void copy_m3_m4(float m1[][3], float m2[][4])
|
||||
m1[2][2] = m2[2][2];
|
||||
}
|
||||
|
||||
void copy_m4_m3(float m1[][4], float m2[][3]) /* no clear */
|
||||
void copy_m4_m3(float m1[4][4], float m2[3][3]) /* no clear */
|
||||
{
|
||||
m1[0][0] = m2[0][0];
|
||||
m1[0][1] = m2[0][1];
|
||||
@ -112,7 +112,7 @@ void copy_m4_m3(float m1[][4], float m2[][3]) /* no clear */
|
||||
|
||||
}
|
||||
|
||||
void swap_m3m3(float m1[][3], float m2[][3])
|
||||
void swap_m3m3(float m1[3][3], float m2[3][3])
|
||||
{
|
||||
float t;
|
||||
int i, j;
|
||||
@ -126,7 +126,7 @@ void swap_m3m3(float m1[][3], float m2[][3])
|
||||
}
|
||||
}
|
||||
|
||||
void swap_m4m4(float m1[][4], float m2[][4])
|
||||
void swap_m4m4(float m1[4][4], float m2[4][4])
|
||||
{
|
||||
float t;
|
||||
int i, j;
|
||||
@ -142,7 +142,7 @@ void swap_m4m4(float m1[][4], float m2[][4])
|
||||
|
||||
/******************************** Arithmetic *********************************/
|
||||
|
||||
void mult_m4_m4m4(float m1[][4], float m3_[][4], float m2_[][4])
|
||||
void mult_m4_m4m4(float m1[4][4], float m3_[4][4], float m2_[4][4])
|
||||
{
|
||||
float m2[4][4], m3[4][4];
|
||||
|
||||
@ -173,7 +173,7 @@ void mult_m4_m4m4(float m1[][4], float m3_[][4], float m2_[][4])
|
||||
|
||||
}
|
||||
|
||||
void mul_m3_m3m3(float m1[][3], float m3_[][3], float m2_[][3])
|
||||
void mul_m3_m3m3(float m1[3][3], float m3_[3][3], float m2_[3][3])
|
||||
{
|
||||
float m2[3][3], m3[3][3];
|
||||
|
||||
@ -195,7 +195,7 @@ void mul_m3_m3m3(float m1[][3], float m3_[][3], float m2_[][3])
|
||||
m1[2][2] = m2[2][0] * m3[0][2] + m2[2][1] * m3[1][2] + m2[2][2] * m3[2][2];
|
||||
}
|
||||
|
||||
void mul_m4_m4m3(float m1[][4], float m3_[][4], float m2_[][3])
|
||||
void mul_m4_m4m3(float m1[4][4], float m3_[4][4], float m2_[3][3])
|
||||
{
|
||||
float m2[3][3], m3[4][4];
|
||||
|
||||
@ -215,7 +215,7 @@ void mul_m4_m4m3(float m1[][4], float m3_[][4], float m2_[][3])
|
||||
}
|
||||
|
||||
/* m1 = m2 * m3, ignore the elements on the 4th row/column of m3 */
|
||||
void mult_m3_m3m4(float m1[][3], float m3_[][4], float m2_[][3])
|
||||
void mult_m3_m3m4(float m1[3][3], float m3_[4][4], float m2_[3][3])
|
||||
{
|
||||
float m2[3][3], m3[4][4];
|
||||
|
||||
@ -237,7 +237,7 @@ void mult_m3_m3m4(float m1[][3], float m3_[][4], float m2_[][3])
|
||||
m1[2][2] = m2[2][0] * m3[0][2] + m2[2][1] * m3[1][2] + m2[2][2] * m3[2][2];
|
||||
}
|
||||
|
||||
void mul_m4_m3m4(float m1[][4], float m3_[][3], float m2_[][4])
|
||||
void mul_m4_m3m4(float m1[4][4], float m3_[3][3], float m2_[4][4])
|
||||
{
|
||||
float m2[4][4], m3[3][3];
|
||||
|
||||
@ -256,10 +256,10 @@ void mul_m4_m3m4(float m1[][4], float m3_[][3], float m2_[][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],
|
||||
float m1[][3], float m2[][3], float m3[][3],
|
||||
float m4[][3], float m5[][3], float m6[][3],
|
||||
float m7[][3], float m8[][3])
|
||||
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])
|
||||
{
|
||||
float temp[3][3];
|
||||
|
||||
@ -289,10 +289,10 @@ void mul_serie_m3(float answ[][3],
|
||||
}
|
||||
}
|
||||
|
||||
void mul_serie_m4(float answ[][4], float m1[][4],
|
||||
float m2[][4], float m3[][4], float m4[][4],
|
||||
float m5[][4], float m6[][4], float m7[][4],
|
||||
float m8[][4])
|
||||
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])
|
||||
{
|
||||
float temp[4][4];
|
||||
|
||||
@ -322,7 +322,7 @@ void mul_serie_m4(float answ[][4], float m1[][4],
|
||||
}
|
||||
}
|
||||
|
||||
void mul_m4_v3(float mat[][4], float vec[3])
|
||||
void mul_m4_v3(float mat[4][4], float vec[3])
|
||||
{
|
||||
float x, y;
|
||||
|
||||
@ -333,7 +333,7 @@ void mul_m4_v3(float mat[][4], float vec[3])
|
||||
vec[2] = x * mat[0][2] + y * mat[1][2] + mat[2][2] * vec[2] + mat[3][2];
|
||||
}
|
||||
|
||||
void mul_v3_m4v3(float in[3], float mat[][4], const float vec[3])
|
||||
void mul_v3_m4v3(float in[3], float mat[4][4], const float vec[3])
|
||||
{
|
||||
float x, y;
|
||||
|
||||
@ -345,7 +345,7 @@ void mul_v3_m4v3(float in[3], float mat[][4], const float vec[3])
|
||||
}
|
||||
|
||||
/* same as mul_m4_v3() but doesnt apply translation component */
|
||||
void mul_mat3_m4_v3(float mat[][4], float vec[3])
|
||||
void mul_mat3_m4_v3(float mat[4][4], float vec[3])
|
||||
{
|
||||
float x, y;
|
||||
|
||||
@ -356,7 +356,7 @@ void mul_mat3_m4_v3(float mat[][4], float vec[3])
|
||||
vec[2] = x * mat[0][2] + y * mat[1][2] + mat[2][2] * vec[2];
|
||||
}
|
||||
|
||||
void mul_project_m4_v3(float mat[][4], float vec[3])
|
||||
void mul_project_m4_v3(float mat[4][4], float vec[3])
|
||||
{
|
||||
const float w = vec[0] * mat[0][3] + vec[1] * mat[1][3] + vec[2] * mat[2][3] + mat[3][3];
|
||||
mul_m4_v3(mat, vec);
|
||||
@ -419,7 +419,7 @@ void mul_m3_v3(float M[3][3], float r[3])
|
||||
copy_v3_v3(r, tmp);
|
||||
}
|
||||
|
||||
void mul_transposed_m3_v3(float mat[][3], float vec[3])
|
||||
void mul_transposed_m3_v3(float mat[3][3], float vec[3])
|
||||
{
|
||||
float x, y;
|
||||
|
||||
@ -457,7 +457,7 @@ void mul_mat3_m4_fl(float m[4][4], float f)
|
||||
m[i][j] *= f;
|
||||
}
|
||||
|
||||
void mul_m3_v3_double(float mat[][3], double vec[3])
|
||||
void mul_m3_v3_double(float mat[3][3], double vec[3])
|
||||
{
|
||||
double x, y;
|
||||
|
||||
@ -468,7 +468,7 @@ void mul_m3_v3_double(float mat[][3], double vec[3])
|
||||
vec[2] = x * (double)mat[0][2] + y * (double)mat[1][2] + (double)mat[2][2] * vec[2];
|
||||
}
|
||||
|
||||
void add_m3_m3m3(float m1[][3], float m2[][3], float m3[][3])
|
||||
void add_m3_m3m3(float m1[3][3], float m2[3][3], float m3[3][3])
|
||||
{
|
||||
int i, j;
|
||||
|
||||
@ -477,7 +477,7 @@ void add_m3_m3m3(float m1[][3], float m2[][3], float m3[][3])
|
||||
m1[i][j] = m2[i][j] + m3[i][j];
|
||||
}
|
||||
|
||||
void add_m4_m4m4(float m1[][4], float m2[][4], float m3[][4])
|
||||
void add_m4_m4m4(float m1[4][4], float m2[4][4], float m3[4][4])
|
||||
{
|
||||
int i, j;
|
||||
|
||||
@ -486,7 +486,7 @@ void add_m4_m4m4(float m1[][4], float m2[][4], float m3[][4])
|
||||
m1[i][j] = m2[i][j] + m3[i][j];
|
||||
}
|
||||
|
||||
void sub_m3_m3m3(float m1[][3], float m2[][3], float m3[][3])
|
||||
void sub_m3_m3m3(float m1[3][3], float m2[3][3], float m3[3][3])
|
||||
{
|
||||
int i, j;
|
||||
|
||||
@ -495,7 +495,7 @@ void sub_m3_m3m3(float m1[][3], float m2[][3], float m3[][3])
|
||||
m1[i][j] = m2[i][j] - m3[i][j];
|
||||
}
|
||||
|
||||
void sub_m4_m4m4(float m1[][4], float m2[][4], float m3[][4])
|
||||
void sub_m4_m4m4(float m1[4][4], float m2[4][4], float m3[4][4])
|
||||
{
|
||||
int i, j;
|
||||
|
||||
@ -665,7 +665,7 @@ int invert_m4_m4(float inverse[4][4], float mat[4][4])
|
||||
|
||||
/****************************** Linear Algebra *******************************/
|
||||
|
||||
void transpose_m3(float mat[][3])
|
||||
void transpose_m3(float mat[3][3])
|
||||
{
|
||||
float t;
|
||||
|
||||
@ -680,7 +680,7 @@ void transpose_m3(float mat[][3])
|
||||
mat[2][1] = t;
|
||||
}
|
||||
|
||||
void transpose_m4(float mat[][4])
|
||||
void transpose_m4(float mat[4][4])
|
||||
{
|
||||
float t;
|
||||
|
||||
@ -706,7 +706,7 @@ void transpose_m4(float mat[][4])
|
||||
mat[3][2] = t;
|
||||
}
|
||||
|
||||
void orthogonalize_m3(float mat[][3], int axis)
|
||||
void orthogonalize_m3(float mat[3][3], int axis)
|
||||
{
|
||||
float size[3];
|
||||
mat3_to_size(size, mat);
|
||||
@ -784,7 +784,7 @@ void orthogonalize_m3(float mat[][3], int axis)
|
||||
mul_v3_fl(mat[2], size[2]);
|
||||
}
|
||||
|
||||
void orthogonalize_m4(float mat[][4], int axis)
|
||||
void orthogonalize_m4(float mat[4][4], int axis)
|
||||
{
|
||||
float size[3];
|
||||
mat4_to_size(size, mat);
|
||||
@ -863,7 +863,7 @@ void orthogonalize_m4(float mat[][4], int axis)
|
||||
mul_v3_fl(mat[2], size[2]);
|
||||
}
|
||||
|
||||
int is_orthogonal_m3(float m[][3])
|
||||
int is_orthogonal_m3(float m[3][3])
|
||||
{
|
||||
int i, j;
|
||||
|
||||
@ -877,7 +877,7 @@ int is_orthogonal_m3(float m[][3])
|
||||
return 1;
|
||||
}
|
||||
|
||||
int is_orthogonal_m4(float m[][4])
|
||||
int is_orthogonal_m4(float m[4][4])
|
||||
{
|
||||
int i, j;
|
||||
|
||||
@ -892,7 +892,7 @@ int is_orthogonal_m4(float m[][4])
|
||||
return 1;
|
||||
}
|
||||
|
||||
int is_orthonormal_m3(float m[][3])
|
||||
int is_orthonormal_m3(float m[3][3])
|
||||
{
|
||||
if (is_orthogonal_m3(m)) {
|
||||
int i;
|
||||
@ -907,7 +907,7 @@ int is_orthonormal_m3(float m[][3])
|
||||
return 0;
|
||||
}
|
||||
|
||||
int is_orthonormal_m4(float m[][4])
|
||||
int is_orthonormal_m4(float m[4][4])
|
||||
{
|
||||
if (is_orthogonal_m4(m)) {
|
||||
int i;
|
||||
@ -922,7 +922,7 @@ int is_orthonormal_m4(float m[][4])
|
||||
return 0;
|
||||
}
|
||||
|
||||
int is_uniform_scaled_m3(float m[][3])
|
||||
int is_uniform_scaled_m3(float m[3][3])
|
||||
{
|
||||
const float eps = 1e-7;
|
||||
float t[3][3];
|
||||
@ -951,21 +951,21 @@ int is_uniform_scaled_m3(float m[][3])
|
||||
return 0;
|
||||
}
|
||||
|
||||
void normalize_m3(float mat[][3])
|
||||
void normalize_m3(float mat[3][3])
|
||||
{
|
||||
normalize_v3(mat[0]);
|
||||
normalize_v3(mat[1]);
|
||||
normalize_v3(mat[2]);
|
||||
}
|
||||
|
||||
void normalize_m3_m3(float rmat[][3], float mat[][3])
|
||||
void normalize_m3_m3(float rmat[3][3], float mat[3][3])
|
||||
{
|
||||
normalize_v3_v3(rmat[0], mat[0]);
|
||||
normalize_v3_v3(rmat[1], mat[1]);
|
||||
normalize_v3_v3(rmat[2], mat[2]);
|
||||
}
|
||||
|
||||
void normalize_m4(float mat[][4])
|
||||
void normalize_m4(float mat[4][4])
|
||||
{
|
||||
float len;
|
||||
|
||||
@ -977,7 +977,7 @@ void normalize_m4(float mat[][4])
|
||||
if (len != 0.0f) mat[2][3] /= len;
|
||||
}
|
||||
|
||||
void normalize_m4_m4(float rmat[][4], float mat[][4])
|
||||
void normalize_m4_m4(float rmat[4][4], float mat[4][4])
|
||||
{
|
||||
float len;
|
||||
|
||||
@ -998,7 +998,7 @@ void adjoint_m2_m2(float m1[][2], float m[][2])
|
||||
m1[1][1] = m[0][0];
|
||||
}
|
||||
|
||||
void adjoint_m3_m3(float m1[][3], float m[][3])
|
||||
void adjoint_m3_m3(float m1[3][3], float m[3][3])
|
||||
{
|
||||
BLI_assert(m1 != m);
|
||||
m1[0][0] = m[1][1] * m[2][2] - m[1][2] * m[2][1];
|
||||
@ -1014,7 +1014,7 @@ void adjoint_m3_m3(float m1[][3], float m[][3])
|
||||
m1[2][2] = m[0][0] * m[1][1] - m[0][1] * m[1][0];
|
||||
}
|
||||
|
||||
void adjoint_m4_m4(float out[][4], float in[][4]) /* out = ADJ(in) */
|
||||
void adjoint_m4_m4(float out[4][4], float in[4][4]) /* out = ADJ(in) */
|
||||
{
|
||||
float a1, a2, a3, a4, b1, b2, b3, b4;
|
||||
float c1, c2, c3, c4, d1, d2, d3, d4;
|
||||
@ -1080,7 +1080,7 @@ float determinant_m3(float a1, float a2, float a3,
|
||||
return ans;
|
||||
}
|
||||
|
||||
float determinant_m4(float m[][4])
|
||||
float determinant_m4(float m[4][4])
|
||||
{
|
||||
float ans;
|
||||
float a1, a2, a3, a4, b1, b2, b3, b4, c1, c2, c3, c4, d1, d2, d3, d4;
|
||||
@ -1115,7 +1115,7 @@ float determinant_m4(float m[][4])
|
||||
|
||||
/****************************** Transformations ******************************/
|
||||
|
||||
void size_to_mat3(float mat[][3], const float size[3])
|
||||
void size_to_mat3(float mat[3][3], const float size[3])
|
||||
{
|
||||
mat[0][0] = size[0];
|
||||
mat[0][1] = 0.0f;
|
||||
@ -1128,7 +1128,7 @@ void size_to_mat3(float mat[][3], const float size[3])
|
||||
mat[2][0] = 0.0f;
|
||||
}
|
||||
|
||||
void size_to_mat4(float mat[][4], const float size[3])
|
||||
void size_to_mat4(float mat[4][4], const float size[3])
|
||||
{
|
||||
float tmat[3][3];
|
||||
|
||||
@ -1137,14 +1137,14 @@ void size_to_mat4(float mat[][4], const float size[3])
|
||||
copy_m4_m3(mat, tmat);
|
||||
}
|
||||
|
||||
void mat3_to_size(float size[3], float mat[][3])
|
||||
void mat3_to_size(float size[3], float mat[3][3])
|
||||
{
|
||||
size[0] = len_v3(mat[0]);
|
||||
size[1] = len_v3(mat[1]);
|
||||
size[2] = len_v3(mat[2]);
|
||||
}
|
||||
|
||||
void mat4_to_size(float size[3], float mat[][4])
|
||||
void mat4_to_size(float size[3], float mat[4][4])
|
||||
{
|
||||
size[0] = len_v3(mat[0]);
|
||||
size[1] = len_v3(mat[1]);
|
||||
@ -1154,7 +1154,7 @@ void mat4_to_size(float size[3], float mat[][4])
|
||||
/* this gets the average scale of a matrix, only use when your scaling
|
||||
* data that has no idea of scale axis, examples are bone-envelope-radius
|
||||
* and curve radius */
|
||||
float mat3_to_scale(float mat[][3])
|
||||
float mat3_to_scale(float mat[3][3])
|
||||
{
|
||||
/* unit length vector */
|
||||
float unit_vec[3] = {0.577350269189626f, 0.577350269189626f, 0.577350269189626f};
|
||||
@ -1162,7 +1162,7 @@ float mat3_to_scale(float mat[][3])
|
||||
return len_v3(unit_vec);
|
||||
}
|
||||
|
||||
float mat4_to_scale(float mat[][4])
|
||||
float mat4_to_scale(float mat[4][4])
|
||||
{
|
||||
float tmat[3][3];
|
||||
copy_m3_m4(tmat, mat);
|
||||
@ -1200,7 +1200,7 @@ void mat3_to_rot_size(float rot[3][3], float size[3], float mat3[3][3])
|
||||
size[2] = mat3[2][2];
|
||||
}
|
||||
|
||||
void mat4_to_loc_rot_size(float loc[3], float rot[3][3], float size[3], float wmat[][4])
|
||||
void mat4_to_loc_rot_size(float loc[3], float rot[3][3], float size[3], float wmat[4][4])
|
||||
{
|
||||
float mat3[3][3]; /* wmat -> 3x3 */
|
||||
|
||||
@ -1211,7 +1211,7 @@ void mat4_to_loc_rot_size(float loc[3], float rot[3][3], float size[3], float wm
|
||||
copy_v3_v3(loc, wmat[3]);
|
||||
}
|
||||
|
||||
void scale_m3_fl(float m[][3], float scale)
|
||||
void scale_m3_fl(float m[3][3], float scale)
|
||||
{
|
||||
m[0][0] = m[1][1] = m[2][2] = scale;
|
||||
m[0][1] = m[0][2] = 0.0;
|
||||
@ -1219,7 +1219,7 @@ void scale_m3_fl(float m[][3], float scale)
|
||||
m[2][0] = m[2][1] = 0.0;
|
||||
}
|
||||
|
||||
void scale_m4_fl(float m[][4], float scale)
|
||||
void scale_m4_fl(float m[4][4], float scale)
|
||||
{
|
||||
m[0][0] = m[1][1] = m[2][2] = scale;
|
||||
m[3][3] = 1.0;
|
||||
@ -1229,14 +1229,14 @@ void scale_m4_fl(float m[][4], float scale)
|
||||
m[3][0] = m[3][1] = m[3][2] = 0.0;
|
||||
}
|
||||
|
||||
void translate_m4(float mat[][4], float Tx, float Ty, float Tz)
|
||||
void translate_m4(float mat[4][4], float Tx, float Ty, float Tz)
|
||||
{
|
||||
mat[3][0] += (Tx * mat[0][0] + Ty * mat[1][0] + Tz * mat[2][0]);
|
||||
mat[3][1] += (Tx * mat[0][1] + Ty * mat[1][1] + Tz * mat[2][1]);
|
||||
mat[3][2] += (Tx * mat[0][2] + Ty * mat[1][2] + Tz * mat[2][2]);
|
||||
}
|
||||
|
||||
void rotate_m4(float mat[][4], const char axis, const float angle)
|
||||
void rotate_m4(float mat[4][4], const char axis, const float angle)
|
||||
{
|
||||
int col;
|
||||
float temp[4] = {0.0f, 0.0f, 0.0f, 0.0f};
|
||||
@ -1276,7 +1276,7 @@ void rotate_m4(float mat[][4], const char axis, const float angle)
|
||||
}
|
||||
}
|
||||
|
||||
void blend_m3_m3m3(float out[][3], float dst[][3], float src[][3], const float srcweight)
|
||||
void blend_m3_m3m3(float out[3][3], float dst[3][3], float src[3][3], const float srcweight)
|
||||
{
|
||||
float srot[3][3], drot[3][3];
|
||||
float squat[4], dquat[4], fquat[4];
|
||||
@ -1299,7 +1299,7 @@ void blend_m3_m3m3(float out[][3], float dst[][3], float src[][3], const float s
|
||||
mul_m3_m3m3(out, rmat, smat);
|
||||
}
|
||||
|
||||
void blend_m4_m4m4(float out[][4], float dst[][4], float src[][4], const float srcweight)
|
||||
void blend_m4_m4m4(float out[4][4], float dst[4][4], float src[4][4], const float srcweight)
|
||||
{
|
||||
float sloc[3], dloc[3], floc[3];
|
||||
float srot[3][3], drot[3][3];
|
||||
@ -1321,14 +1321,14 @@ void blend_m4_m4m4(float out[][4], float dst[][4], float src[][4], const float s
|
||||
loc_quat_size_to_mat4(out, floc, fquat, fsize);
|
||||
}
|
||||
|
||||
int is_negative_m3(float mat[][3])
|
||||
int is_negative_m3(float mat[3][3])
|
||||
{
|
||||
float vec[3];
|
||||
cross_v3_v3v3(vec, mat[0], mat[1]);
|
||||
return (dot_v3v3(vec, mat[2]) < 0.0f);
|
||||
}
|
||||
|
||||
int is_negative_m4(float mat[][4])
|
||||
int is_negative_m4(float mat[4][4])
|
||||
{
|
||||
float vec[3];
|
||||
cross_v3_v3v3(vec, mat[0], mat[1]);
|
||||
@ -1418,7 +1418,7 @@ void loc_axisangle_size_to_mat4(float mat[4][4], const float loc[3], const float
|
||||
|
||||
/*********************************** Other ***********************************/
|
||||
|
||||
void print_m3(const char *str, float m[][3])
|
||||
void print_m3(const char *str, float m[3][3])
|
||||
{
|
||||
printf("%s\n", str);
|
||||
printf("%f %f %f\n", m[0][0], m[1][0], m[2][0]);
|
||||
@ -1427,7 +1427,7 @@ void print_m3(const char *str, float m[][3])
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void print_m4(const char *str, float m[][4])
|
||||
void print_m4(const char *str, float m[4][4])
|
||||
{
|
||||
printf("%s\n", str);
|
||||
printf("%f %f %f %f\n", m[0][0], m[1][0], m[2][0], m[3][0]);
|
||||
|
@ -185,7 +185,7 @@ void mul_fac_qt_fl(float q[4], const float fac)
|
||||
}
|
||||
|
||||
/* skip error check, currently only needed by mat3_to_quat_is_ok */
|
||||
static void quat_to_mat3_no_error(float m[][3], const float q[4])
|
||||
static void quat_to_mat3_no_error(float m[3][3], const float q[4])
|
||||
{
|
||||
double q0, q1, q2, q3, qda, qdb, qdc, qaa, qab, qac, qbb, qbc, qcc;
|
||||
|
||||
@ -217,7 +217,7 @@ static void quat_to_mat3_no_error(float m[][3], const float q[4])
|
||||
m[2][2] = (float)(1.0 - qaa - qbb);
|
||||
}
|
||||
|
||||
void quat_to_mat3(float m[][3], const float q[4])
|
||||
void quat_to_mat3(float m[3][3], const float q[4])
|
||||
{
|
||||
#ifdef DEBUG
|
||||
float f;
|
||||
@ -229,7 +229,7 @@ void quat_to_mat3(float m[][3], const float q[4])
|
||||
quat_to_mat3_no_error(m, q);
|
||||
}
|
||||
|
||||
void quat_to_mat4(float m[][4], const float q[4])
|
||||
void quat_to_mat4(float m[4][4], const float q[4])
|
||||
{
|
||||
double q0, q1, q2, q3, qda, qdb, qdc, qaa, qab, qac, qbb, qbc, qcc;
|
||||
|
||||
@ -273,7 +273,7 @@ void quat_to_mat4(float m[][4], const float q[4])
|
||||
m[3][3] = 1.0f;
|
||||
}
|
||||
|
||||
void mat3_to_quat(float q[4], float wmat[][3])
|
||||
void mat3_to_quat(float q[4], float wmat[3][3])
|
||||
{
|
||||
double tr, s;
|
||||
float mat[3][3];
|
||||
@ -325,7 +325,7 @@ void mat3_to_quat(float q[4], float wmat[][3])
|
||||
normalize_qt(q);
|
||||
}
|
||||
|
||||
void mat4_to_quat(float q[4], float m[][4])
|
||||
void mat4_to_quat(float q[4], float m[4][4])
|
||||
{
|
||||
float mat[3][3];
|
||||
|
||||
@ -861,7 +861,7 @@ void single_axis_angle_to_mat3(float mat[3][3], const char axis, const float ang
|
||||
/* TODO: the following calls should probably be deprecated sometime */
|
||||
|
||||
/* TODO, replace use of this function with axis_angle_to_mat3() */
|
||||
void vec_rot_to_mat3(float mat[][3], const float vec[3], const float phi)
|
||||
void vec_rot_to_mat3(float mat[3][3], const float vec[3], const float phi)
|
||||
{
|
||||
/* rotation of phi radials around vec */
|
||||
float vx, vx2, vy, vy2, vz, vz2, co, si;
|
||||
@ -889,7 +889,7 @@ void vec_rot_to_mat3(float mat[][3], const float vec[3], const float phi)
|
||||
/******************************** XYZ Eulers *********************************/
|
||||
|
||||
/* XYZ order */
|
||||
void eul_to_mat3(float mat[][3], const float eul[3])
|
||||
void eul_to_mat3(float mat[3][3], const float eul[3])
|
||||
{
|
||||
double ci, cj, ch, si, sj, sh, cc, cs, sc, ss;
|
||||
|
||||
@ -917,7 +917,7 @@ void eul_to_mat3(float mat[][3], const float eul[3])
|
||||
}
|
||||
|
||||
/* XYZ order */
|
||||
void eul_to_mat4(float mat[][4], const float eul[3])
|
||||
void eul_to_mat4(float mat[4][4], const float eul[3])
|
||||
{
|
||||
double ci, cj, ch, si, sj, sh, cc, cs, sc, ss;
|
||||
|
||||
@ -950,7 +950,7 @@ void eul_to_mat4(float mat[][4], const float eul[3])
|
||||
/* returns two euler calculation methods, so we can pick the best */
|
||||
|
||||
/* XYZ order */
|
||||
static void mat3_to_eul2(float tmat[][3], float eul1[3], float eul2[3])
|
||||
static void mat3_to_eul2(float tmat[3][3], float eul1[3], float eul2[3])
|
||||
{
|
||||
float cy, quat[4], mat[3][3];
|
||||
|
||||
@ -982,7 +982,7 @@ static void mat3_to_eul2(float tmat[][3], float eul1[3], float eul2[3])
|
||||
}
|
||||
|
||||
/* XYZ order */
|
||||
void mat3_to_eul(float *eul, float tmat[][3])
|
||||
void mat3_to_eul(float *eul, float tmat[3][3])
|
||||
{
|
||||
float eul1[3], eul2[3];
|
||||
|
||||
@ -998,7 +998,7 @@ void mat3_to_eul(float *eul, float tmat[][3])
|
||||
}
|
||||
|
||||
/* XYZ order */
|
||||
void mat4_to_eul(float *eul, float tmat[][4])
|
||||
void mat4_to_eul(float *eul, float tmat[4][4])
|
||||
{
|
||||
float tempMat[3][3];
|
||||
|
||||
@ -1107,7 +1107,7 @@ void compatible_eul(float eul[3], const float oldrot[3])
|
||||
/* uses 2 methods to retrieve eulers, and picks the closest */
|
||||
|
||||
/* XYZ order */
|
||||
void mat3_to_compatible_eul(float eul[3], const float oldrot[3], float mat[][3])
|
||||
void mat3_to_compatible_eul(float eul[3], const float oldrot[3], float mat[3][3])
|
||||
{
|
||||
float eul1[3], eul2[3];
|
||||
float d1, d2;
|
||||
@ -1388,7 +1388,7 @@ void rotate_eulO(float beul[3], const short order, char axis, float ang)
|
||||
}
|
||||
|
||||
/* the matrix is written to as 3 axis vectors */
|
||||
void eulO_to_gimbal_axis(float gmat[][3], const float eul[3], const short order)
|
||||
void eulO_to_gimbal_axis(float gmat[3][3], const float eul[3], const short order)
|
||||
{
|
||||
const RotOrderInfo *R = GET_ROTATIONORDER_INFO(order);
|
||||
|
||||
@ -1447,7 +1447,7 @@ void eulO_to_gimbal_axis(float gmat[][3], const float eul[3], const short order)
|
||||
* - added support for scaling
|
||||
*/
|
||||
|
||||
void mat4_to_dquat(DualQuat *dq, float basemat[][4], float mat[][4])
|
||||
void mat4_to_dquat(DualQuat *dq, float basemat[4][4], float mat[4][4])
|
||||
{
|
||||
float *t, *q, dscale[3], scale[3], basequat[4];
|
||||
float baseRS[4][4], baseinv[4][4], baseR[4][4], baseRinv[4][4];
|
||||
@ -1502,7 +1502,7 @@ void mat4_to_dquat(DualQuat *dq, float basemat[][4], float mat[][4])
|
||||
dq->trans[3] = 0.5f * ( t[0] * q[2] - t[1] * q[1] + t[2] * q[0]);
|
||||
}
|
||||
|
||||
void dquat_to_mat4(float mat[][4], DualQuat *dq)
|
||||
void dquat_to_mat4(float mat[4][4], DualQuat *dq)
|
||||
{
|
||||
float len, *t, q0[4];
|
||||
|
||||
@ -1583,7 +1583,7 @@ void normalize_dq(DualQuat *dq, float totweight)
|
||||
}
|
||||
}
|
||||
|
||||
void mul_v3m3_dq(float co[3], float mat[][3], DualQuat *dq)
|
||||
void mul_v3m3_dq(float co[3], float mat[3][3], DualQuat *dq)
|
||||
{
|
||||
float M[3][3], t[3], scalemat[3][3], len2;
|
||||
float w = dq->quat[0], x = dq->quat[1], y = dq->quat[2], z = dq->quat[3];
|
||||
|
@ -544,7 +544,7 @@ MINLINE void add_newell_cross_v3_v3v3(float n[3], const float v_prev[3], const f
|
||||
n[2] += (v_prev[0] - v_curr[0]) * (v_prev[1] + v_curr[1]);
|
||||
}
|
||||
|
||||
MINLINE void star_m3_v3(float rmat[][3], float a[3])
|
||||
MINLINE void star_m3_v3(float rmat[3][3], float a[3])
|
||||
{
|
||||
rmat[0][0] = rmat[1][1] = rmat[2][2] = 0.0;
|
||||
rmat[0][1] = -a[2];
|
||||
|
@ -79,7 +79,7 @@ JointData *ArmatureImporter::get_joint_data(COLLADAFW::Node *node);
|
||||
}
|
||||
#endif
|
||||
void ArmatureImporter::create_unskinned_bone(COLLADAFW::Node *node, EditBone *parent, int totchild,
|
||||
float parent_mat[][4], Object *ob_arm)
|
||||
float parent_mat[4][4], Object *ob_arm)
|
||||
{
|
||||
std::vector<COLLADAFW::Node *>::iterator it;
|
||||
it = std::find(finished_joints.begin(), finished_joints.end(), node);
|
||||
@ -156,7 +156,7 @@ void ArmatureImporter::create_unskinned_bone(COLLADAFW::Node *node, EditBone *pa
|
||||
}
|
||||
|
||||
void ArmatureImporter::create_bone(SkinInfo& skin, COLLADAFW::Node *node, EditBone *parent, int totchild,
|
||||
float parent_mat[][4], bArmature *arm)
|
||||
float parent_mat[4][4], bArmature *arm)
|
||||
{
|
||||
//Checking if bone is already made.
|
||||
std::vector<COLLADAFW::Node *>::iterator it;
|
||||
@ -268,7 +268,7 @@ void ArmatureImporter::create_bone(SkinInfo& skin, COLLADAFW::Node *node, EditBo
|
||||
finished_joints.push_back(node);
|
||||
}
|
||||
|
||||
void ArmatureImporter::add_leaf_bone(float mat[][4], EditBone *bone, COLLADAFW::Node *node)
|
||||
void ArmatureImporter::add_leaf_bone(float mat[4][4], EditBone *bone, COLLADAFW::Node *node)
|
||||
{
|
||||
LeafBone leaf;
|
||||
|
||||
@ -572,7 +572,7 @@ void ArmatureImporter::create_armature_bones(SkinInfo& skin)
|
||||
// is a child of a node (not joint), root should be true since
|
||||
// this is where we build armature bones from
|
||||
|
||||
void ArmatureImporter::set_pose(Object *ob_arm, COLLADAFW::Node *root_node, const char *parentname, float parent_mat[][4])
|
||||
void ArmatureImporter::set_pose(Object *ob_arm, COLLADAFW::Node *root_node, const char *parentname, float parent_mat[4][4])
|
||||
{
|
||||
char *bone_name = (char *) bc_get_joint_name(root_node);
|
||||
float mat[4][4];
|
||||
@ -792,7 +792,7 @@ void ArmatureImporter::get_rna_path_for_joint(COLLADAFW::Node *node, char *joint
|
||||
}
|
||||
|
||||
// gives a world-space mat
|
||||
bool ArmatureImporter::get_joint_bind_mat(float m[][4], COLLADAFW::Node *joint)
|
||||
bool ArmatureImporter::get_joint_bind_mat(float m[4][4], COLLADAFW::Node *joint)
|
||||
{
|
||||
std::map<COLLADAFW::UniqueId, SkinInfo>::iterator it;
|
||||
bool found = false;
|
||||
|
@ -104,16 +104,16 @@ private:
|
||||
#endif
|
||||
|
||||
void create_bone(SkinInfo& skin, COLLADAFW::Node *node, EditBone *parent, int totchild,
|
||||
float parent_mat[][4], bArmature *arm);
|
||||
float parent_mat[4][4], bArmature *arm);
|
||||
|
||||
void create_unskinned_bone(COLLADAFW::Node *node, EditBone *parent, int totchild,
|
||||
float parent_mat[][4], Object * ob_arm);
|
||||
float parent_mat[4][4], Object * ob_arm);
|
||||
|
||||
void add_leaf_bone(float mat[][4], EditBone *bone, COLLADAFW::Node * node);
|
||||
void add_leaf_bone(float mat[4][4], EditBone *bone, COLLADAFW::Node * node);
|
||||
|
||||
void fix_leaf_bones();
|
||||
|
||||
void set_pose ( Object * ob_arm, COLLADAFW::Node * root_node, const char *parentname, float parent_mat[][4]);
|
||||
void set_pose ( Object * ob_arm, COLLADAFW::Node * root_node, const char *parentname, float parent_mat[4][4]);
|
||||
|
||||
|
||||
#if 0
|
||||
@ -168,7 +168,7 @@ public:
|
||||
void get_rna_path_for_joint(COLLADAFW::Node *node, char *joint_path, size_t count);
|
||||
|
||||
// gives a world-space mat
|
||||
bool get_joint_bind_mat(float m[][4], COLLADAFW::Node *joint);
|
||||
bool get_joint_bind_mat(float m[4][4], COLLADAFW::Node *joint);
|
||||
|
||||
void set_tags_map( TagsMap& tags_map);
|
||||
|
||||
|
@ -168,7 +168,7 @@ Object *SkinInfo::set_armature(Object *ob_arm)
|
||||
return ob_arm;
|
||||
}
|
||||
|
||||
bool SkinInfo::get_joint_inv_bind_matrix(float inv_bind_mat[][4], COLLADAFW::Node *node)
|
||||
bool SkinInfo::get_joint_inv_bind_matrix(float inv_bind_mat[4][4], COLLADAFW::Node *node)
|
||||
{
|
||||
const COLLADAFW::UniqueId& uid = node->getUniqueId();
|
||||
std::vector<JointData>::iterator it;
|
||||
|
@ -103,7 +103,7 @@ public:
|
||||
|
||||
Object* set_armature(Object *ob_arm);
|
||||
|
||||
bool get_joint_inv_bind_matrix(float inv_bind_mat[][4], COLLADAFW::Node *node);
|
||||
bool get_joint_inv_bind_matrix(float inv_bind_mat[4][4], COLLADAFW::Node *node);
|
||||
|
||||
Object *BKE_armature_from_object();
|
||||
|
||||
|
@ -34,7 +34,7 @@ TransformReader::TransformReader(UnitConverter *conv) : unit_converter(conv)
|
||||
/* pass */
|
||||
}
|
||||
|
||||
void TransformReader::get_node_mat(float mat[][4], COLLADAFW::Node *node, std::map<COLLADAFW::UniqueId, Animation> *animation_map, Object *ob)
|
||||
void TransformReader::get_node_mat(float mat[4][4], COLLADAFW::Node *node, std::map<COLLADAFW::UniqueId, Animation> *animation_map, Object *ob)
|
||||
{
|
||||
float cur[4][4];
|
||||
float copy[4][4];
|
||||
@ -79,7 +79,7 @@ void TransformReader::get_node_mat(float mat[][4], COLLADAFW::Node *node, std::m
|
||||
}
|
||||
}
|
||||
|
||||
void TransformReader::dae_rotate_to_mat4(COLLADAFW::Transformation *tm, float m[][4])
|
||||
void TransformReader::dae_rotate_to_mat4(COLLADAFW::Transformation *tm, float m[4][4])
|
||||
{
|
||||
COLLADAFW::Rotate *ro = (COLLADAFW::Rotate *)tm;
|
||||
COLLADABU::Math::Vector3& axis = ro->getRotationAxis();
|
||||
@ -91,7 +91,7 @@ void TransformReader::dae_rotate_to_mat4(COLLADAFW::Transformation *tm, float m[
|
||||
axis_angle_to_mat4(m, ax, angle);
|
||||
}
|
||||
|
||||
void TransformReader::dae_translate_to_mat4(COLLADAFW::Transformation *tm, float m[][4])
|
||||
void TransformReader::dae_translate_to_mat4(COLLADAFW::Transformation *tm, float m[4][4])
|
||||
{
|
||||
COLLADAFW::Translate *tra = (COLLADAFW::Translate *)tm;
|
||||
COLLADABU::Math::Vector3& t = tra->getTranslation();
|
||||
@ -103,14 +103,14 @@ void TransformReader::dae_translate_to_mat4(COLLADAFW::Transformation *tm, float
|
||||
m[3][2] = (float)t[2];
|
||||
}
|
||||
|
||||
void TransformReader::dae_scale_to_mat4(COLLADAFW::Transformation *tm, float m[][4])
|
||||
void TransformReader::dae_scale_to_mat4(COLLADAFW::Transformation *tm, float m[4][4])
|
||||
{
|
||||
COLLADABU::Math::Vector3& s = ((COLLADAFW::Scale *)tm)->getScale();
|
||||
float size[3] = {(float)s[0], (float)s[1], (float)s[2]};
|
||||
size_to_mat4(m, size);
|
||||
}
|
||||
|
||||
void TransformReader::dae_matrix_to_mat4(COLLADAFW::Transformation *tm, float m[][4])
|
||||
void TransformReader::dae_matrix_to_mat4(COLLADAFW::Transformation *tm, float m[4][4])
|
||||
{
|
||||
unit_converter->dae_matrix_to_mat4_(m, ((COLLADAFW::Matrix *)tm)->getMatrix());
|
||||
}
|
||||
|
@ -58,12 +58,12 @@ public:
|
||||
|
||||
TransformReader(UnitConverter *conv);
|
||||
|
||||
void get_node_mat(float mat[][4], COLLADAFW::Node *node, std::map<COLLADAFW::UniqueId, Animation> *animation_map, Object *ob);
|
||||
void get_node_mat(float mat[4][4], COLLADAFW::Node *node, std::map<COLLADAFW::UniqueId, Animation> *animation_map, Object *ob);
|
||||
|
||||
void dae_rotate_to_mat4(COLLADAFW::Transformation *tm, float m[][4]);
|
||||
void dae_translate_to_mat4(COLLADAFW::Transformation *tm, float m[][4]);
|
||||
void dae_scale_to_mat4(COLLADAFW::Transformation *tm, float m[][4]);
|
||||
void dae_matrix_to_mat4(COLLADAFW::Transformation *tm, float m[][4]);
|
||||
void dae_rotate_to_mat4(COLLADAFW::Transformation *tm, float m[4][4]);
|
||||
void dae_translate_to_mat4(COLLADAFW::Transformation *tm, float m[4][4]);
|
||||
void dae_scale_to_mat4(COLLADAFW::Transformation *tm, float m[4][4]);
|
||||
void dae_matrix_to_mat4(COLLADAFW::Transformation *tm, float m[4][4]);
|
||||
void dae_translate_to_v3(COLLADAFW::Transformation *tm, float v[3]);
|
||||
void dae_scale_to_v3(COLLADAFW::Transformation *tm, float v[3]);
|
||||
void dae_vector3_to_v3(const COLLADABU::Math::Vector3 &v3, float v[3]);
|
||||
|
@ -32,7 +32,7 @@
|
||||
|
||||
#include "BLI_math.h"
|
||||
|
||||
void TransformWriter::add_node_transform(COLLADASW::Node& node, float mat[][4], float parent_mat[][4])
|
||||
void TransformWriter::add_node_transform(COLLADASW::Node& node, float mat[4][4], float parent_mat[4][4])
|
||||
{
|
||||
float loc[3], rot[3], scale[3];
|
||||
float local[4][4];
|
||||
|
@ -37,7 +37,7 @@
|
||||
class TransformWriter : protected TransformBase
|
||||
{
|
||||
protected:
|
||||
void add_node_transform(COLLADASW::Node& node, float mat[][4], float parent_mat[][4]);
|
||||
void add_node_transform(COLLADASW::Node& node, float mat[4][4], float parent_mat[4][4]);
|
||||
|
||||
void add_node_transform_ob(COLLADASW::Node& node, Object *ob);
|
||||
|
||||
|
@ -74,7 +74,7 @@ void UnitConverter::convertVector3(COLLADABU::Math::Vector3 &vec, float *v)
|
||||
|
||||
// TODO need also for angle conversion, time conversion...
|
||||
|
||||
void UnitConverter::dae_matrix_to_mat4_(float out[][4], const COLLADABU::Math::Matrix4& in)
|
||||
void UnitConverter::dae_matrix_to_mat4_(float out[4][4], const COLLADABU::Math::Matrix4& in)
|
||||
{
|
||||
// in DAE, matrices use columns vectors, (see comments in COLLADABUMathMatrix4.h)
|
||||
// so here, to make a blender matrix, we swap columns and rows
|
||||
@ -85,13 +85,13 @@ void UnitConverter::dae_matrix_to_mat4_(float out[][4], const COLLADABU::Math::M
|
||||
}
|
||||
}
|
||||
|
||||
void UnitConverter::mat4_to_dae(float out[][4], float in[][4])
|
||||
void UnitConverter::mat4_to_dae(float out[4][4], float const in[4][4])
|
||||
{
|
||||
copy_m4_m4(out, in);
|
||||
transpose_m4(out);
|
||||
}
|
||||
|
||||
void UnitConverter::mat4_to_dae_double(double out[][4], float in[][4])
|
||||
void UnitConverter::mat4_to_dae_double(double out[4][4], float in[4][4])
|
||||
{
|
||||
float mat[4][4];
|
||||
|
||||
@ -102,7 +102,7 @@ void UnitConverter::mat4_to_dae_double(double out[][4], float in[][4])
|
||||
out[i][j] = mat[i][j];
|
||||
}
|
||||
|
||||
void TransformBase::decompose(float mat[][4], float *loc, float eul[3], float quat[4], float *size)
|
||||
void TransformBase::decompose(float mat[4][4], float *loc, float eul[3], float quat[4], float *size)
|
||||
{
|
||||
mat4_to_size(size, mat);
|
||||
if (eul) {
|
||||
|
@ -69,17 +69,17 @@ public:
|
||||
|
||||
// TODO need also for angle conversion, time conversion...
|
||||
|
||||
void dae_matrix_to_mat4_(float out[][4], const COLLADABU::Math::Matrix4& in);
|
||||
void dae_matrix_to_mat4_(float out[4][4], const COLLADABU::Math::Matrix4& in);
|
||||
|
||||
void mat4_to_dae(float out[][4], float in[][4]);
|
||||
void mat4_to_dae(float out[4][4], float in[4][4]);
|
||||
|
||||
void mat4_to_dae_double(double out[][4], float in[][4]);
|
||||
void mat4_to_dae_double(double out[4][4], float in[4][4]);
|
||||
};
|
||||
|
||||
class TransformBase
|
||||
{
|
||||
public:
|
||||
void decompose(float mat[][4], float *loc, float eul[3], float quat[4], float *size);
|
||||
void decompose(float mat[4][4], float *loc, float eul[3], float quat[4], float *size);
|
||||
};
|
||||
|
||||
extern void clear_global_id_map();
|
||||
|
@ -40,9 +40,10 @@ int nextFixedSubdivision(struct ToolSettings *toolsettings, struct BArcIterator
|
||||
int nextLengthSubdivision(struct ToolSettings *toolsettings, struct BArcIterator *iter, int start, int end, float head[3], float p[3]);
|
||||
int nextAdaptativeSubdivision(struct ToolSettings *toolsettings, struct BArcIterator *iter, int start, int end, float head[3], float p[3]);
|
||||
|
||||
struct EditBone *subdivideArcBy(struct ToolSettings *toolsettings, struct bArmature *arm, ListBase *editbones, struct BArcIterator *iter, float invmat[][4], float tmat[][3], NextSubdivisionFunc next_subdividion);
|
||||
struct EditBone *subdivideArcBy(struct ToolSettings *toolsettings, struct bArmature *arm, ListBase *editbones, struct BArcIterator *iter,
|
||||
float invmat[4][4], float tmat[3][3], NextSubdivisionFunc next_subdividion);
|
||||
|
||||
void setBoneRollFromNormal(struct EditBone *bone, const float no[3], float invmat[][4], float tmat[][3]);
|
||||
void setBoneRollFromNormal(struct EditBone *bone, const float no[3], float invmat[4][4], float tmat[3][3]);
|
||||
|
||||
|
||||
#endif /* __BIF_GENERATE_H__ */
|
||||
|
@ -50,7 +50,7 @@
|
||||
#include "armature_intern.h"
|
||||
#include "BIF_generate.h"
|
||||
|
||||
void setBoneRollFromNormal(EditBone *bone, const float no[3], float UNUSED(invmat[][4]), float tmat[][3])
|
||||
void setBoneRollFromNormal(EditBone *bone, const float no[3], float UNUSED(invmat[4][4]), float tmat[3][3])
|
||||
{
|
||||
if (no != NULL && !is_zero_v3(no)) {
|
||||
float normal[3];
|
||||
@ -257,7 +257,8 @@ int nextLengthSubdivision(ToolSettings *toolsettings, BArcIterator *iter, int st
|
||||
return -1;
|
||||
}
|
||||
|
||||
EditBone *subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase *UNUSED(editbones), BArcIterator *iter, float invmat[][4], float tmat[][3], NextSubdivisionFunc next_subdividion)
|
||||
EditBone *subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase *UNUSED(editbones), BArcIterator *iter,
|
||||
float invmat[4][4], float tmat[3][3], NextSubdivisionFunc next_subdividion)
|
||||
{
|
||||
EditBone *lastBone = NULL;
|
||||
EditBone *child = NULL;
|
||||
|
@ -361,7 +361,7 @@ static void sk_autoname(bContext *C, ReebArc *arc)
|
||||
}
|
||||
}
|
||||
|
||||
static ReebNode *sk_pointToNode(SK_Point *pt, float imat[][4], float tmat[][3])
|
||||
static ReebNode *sk_pointToNode(SK_Point *pt, float imat[4][4], float tmat[3][3])
|
||||
{
|
||||
ReebNode *node;
|
||||
|
||||
@ -375,7 +375,7 @@ static ReebNode *sk_pointToNode(SK_Point *pt, float imat[][4], float tmat[][3])
|
||||
return node;
|
||||
}
|
||||
|
||||
static ReebArc *sk_strokeToArc(SK_Stroke *stk, float imat[][4], float tmat[][3])
|
||||
static ReebArc *sk_strokeToArc(SK_Stroke *stk, float imat[4][4], float tmat[3][3])
|
||||
{
|
||||
ReebArc *arc;
|
||||
int i;
|
||||
|
@ -862,7 +862,7 @@ static void rigid_add_edge_to_R(LaplacianSystem *sys, EditVert *v1, EditVert *v2
|
||||
rigid_add_half_edge_to_R(sys, v2, v1, w);
|
||||
}
|
||||
|
||||
static void rigid_orthogonalize_R(float R[][3])
|
||||
static void rigid_orthogonalize_R(float R[3][3])
|
||||
{
|
||||
HMatrix M, Q, S;
|
||||
|
||||
@ -1956,7 +1956,7 @@ static void heat_weighting_bind(Scene *scene, DerivedMesh *dm, MeshDeformModifie
|
||||
}
|
||||
#endif
|
||||
|
||||
void mesh_deform_bind(Scene *scene, MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4])
|
||||
void mesh_deform_bind(Scene *scene, MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[4][4])
|
||||
{
|
||||
MeshDeformBind mdb;
|
||||
MVert *mvert;
|
||||
|
@ -1493,7 +1493,7 @@ static void setflagsNurb(ListBase *editnurb, short flag)
|
||||
}
|
||||
}
|
||||
|
||||
static void rotateflagNurb(ListBase *editnurb, short flag, float *cent, float rotmat[][3])
|
||||
static void rotateflagNurb(ListBase *editnurb, short flag, float *cent, float rotmat[3][3])
|
||||
{
|
||||
/* all verts with (flag & 'flag') rotate */
|
||||
Nurb *nu;
|
||||
@ -4278,7 +4278,7 @@ int mouse_nurb(bContext *C, const int mval[2], int extend, int deselect, int tog
|
||||
|
||||
/* 'cent' is in object space and 'dvec' in worldspace.
|
||||
*/
|
||||
static int spin_nurb(float viewmat[][4], Object *obedit, float *axis, float *cent)
|
||||
static int spin_nurb(float viewmat[4][4], Object *obedit, float *axis, float *cent)
|
||||
{
|
||||
Curve *cu = (Curve *)obedit->data;
|
||||
ListBase *editnurb = object_editcurve_get(obedit);
|
||||
|
@ -184,7 +184,7 @@ int BDR_drawSketchNames(struct ViewContext *vc);
|
||||
/* meshlaplacian.c */
|
||||
void mesh_deform_bind(struct Scene *scene,
|
||||
struct MeshDeformModifierData *mmd,
|
||||
float *vertexcos, int totvert, float cagemat[][4]);
|
||||
float *vertexcos, int totvert, float cagemat[4][4]);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -134,7 +134,7 @@ void ED_object_location_from_view(struct bContext *C, float loc[3]);
|
||||
void ED_object_rotation_from_view(struct bContext *C, float rot[3]);
|
||||
void ED_object_base_init_transform(struct bContext *C, struct Base *base, const float loc[3], const float rot[3]);
|
||||
float ED_object_new_primitive_matrix(struct bContext *C, struct Object *editob,
|
||||
const float loc[3], const float rot[3], float primmat[][4],
|
||||
const float loc[3], const float rot[3], float primmat[4][4],
|
||||
int apply_diameter);
|
||||
|
||||
void ED_object_add_generic_props(struct wmOperatorType *ot, int do_editmode);
|
||||
|
@ -124,7 +124,7 @@ void BIF_createTransformOrientation(struct bContext *C, struct ReportList *repor
|
||||
void BIF_selectTransformOrientation(struct bContext *C, struct TransformOrientation *ts);
|
||||
void BIF_selectTransformOrientationValue(struct bContext *C, int orientation);
|
||||
|
||||
void ED_getTransformOrientationMatrix(const struct bContext *C, float orientation_mat[][3], int activeOnly);
|
||||
void ED_getTransformOrientationMatrix(const struct bContext *C, float orientation_mat[3][3], int activeOnly);
|
||||
|
||||
struct EnumPropertyItem *BIF_enumTransformOrientation(struct bContext *C);
|
||||
const char *BIF_menustringTransformOrientation(const struct bContext *C, const char *title); /* the returned value was allocated and needs to be freed after use */
|
||||
|
@ -86,8 +86,8 @@ typedef struct ViewDepths {
|
||||
|
||||
float *give_cursor(struct Scene *scene, struct View3D *v3d);
|
||||
|
||||
void ED_view3d_to_m4(float mat[][4], const float ofs[3], const float quat[4], const float dist);
|
||||
void ED_view3d_from_m4(float mat[][4], float ofs[3], float quat[4], float *dist);
|
||||
void ED_view3d_to_m4(float mat[4][4], const float ofs[3], const float quat[4], const float dist);
|
||||
void ED_view3d_from_m4(float mat[4][4], float ofs[3], float quat[4], float *dist);
|
||||
|
||||
void ED_view3d_from_object(struct Object *ob, float ofs[3], float quat[4], float *dist, float *lens);
|
||||
void ED_view3d_to_object(struct Object *ob, const float ofs[3], const float quat[4], const float dist);
|
||||
@ -208,7 +208,7 @@ void ED_view3d_calc_camera_border(struct Scene *scene, struct ARegion *ar, struc
|
||||
void ED_view3d_calc_camera_border_size(struct Scene *scene, struct ARegion *ar, struct View3D *v3d, struct RegionView3D *rv3d, float size_r[2]);
|
||||
|
||||
void ED_view3d_clipping_calc(struct BoundBox *bb, float planes[4][4], struct bglMats *mats, const struct rcti *rect);
|
||||
void ED_view3d_clipping_local(struct RegionView3D *rv3d, float mat[][4]);
|
||||
void ED_view3d_clipping_local(struct RegionView3D *rv3d, float mat[4][4]);
|
||||
int ED_view3d_clipping_test(struct RegionView3D *rv3d, const float vec[3], const int is_local);
|
||||
void ED_view3d_clipping_set(struct RegionView3D *rv3d);
|
||||
void ED_view3d_clipping_enable(void);
|
||||
@ -219,7 +219,7 @@ float ED_view3d_pixel_size(struct RegionView3D *rv3d, const float co[3]);
|
||||
float ED_view3d_radius_to_persp_dist(const float angle, const float radius);
|
||||
float ED_view3d_radius_to_ortho_dist(const float lens, const float radius);
|
||||
|
||||
void drawcircball(int mode, const float cent[3], float rad, float tmat[][4]);
|
||||
void drawcircball(int mode, const float cent[3], float rad, float tmat[4][4]);
|
||||
|
||||
/* backbuffer select and draw support */
|
||||
void view3d_validate_backbuf(struct ViewContext *vc);
|
||||
@ -264,7 +264,7 @@ int ED_view3d_scene_layer_set(int lay, const int *values, int *active);
|
||||
int ED_view3d_context_activate(struct bContext *C);
|
||||
void ED_view3d_draw_offscreen_init(struct Scene *scene, struct View3D *v3d);
|
||||
void ED_view3d_draw_offscreen(struct Scene *scene, struct View3D *v3d, struct ARegion *ar,
|
||||
int winx, int winy, float viewmat[][4], float winmat[][4], int do_bgpic, int colormanage_background);
|
||||
int winx, int winy, float viewmat[4][4], float winmat[4][4], int do_bgpic, int colormanage_background);
|
||||
|
||||
struct ImBuf *ED_view3d_draw_offscreen_imbuf(struct Scene *scene, struct View3D *v3d, struct ARegion *ar, int sizex, int sizey, unsigned int flag,
|
||||
int draw_background, int colormanage_background, char err_out[256]);
|
||||
@ -274,7 +274,7 @@ struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(struct Scene *scene, struct
|
||||
|
||||
struct Base *ED_view3d_give_base_under_cursor(struct bContext *C, const int mval[2]);
|
||||
void ED_view3d_quadview_update(struct ScrArea *sa, struct ARegion *ar, short do_clip);
|
||||
void ED_view3d_update_viewmat(struct Scene *scene, struct View3D *v3d, struct ARegion *ar, float viewmat[][4], float winmat[][4]);
|
||||
void ED_view3d_update_viewmat(struct Scene *scene, struct View3D *v3d, struct ARegion *ar, float viewmat[4][4], float winmat[4][4]);
|
||||
int ED_view3d_lock(struct RegionView3D *rv3d);
|
||||
|
||||
uint64_t ED_view3d_datamask(struct Scene *scene, struct View3D *v3d);
|
||||
|
@ -58,7 +58,7 @@
|
||||
/* BMESH_TODO: 'state' is not a good name, should be flipped and called 'was_editmode',
|
||||
* or at least something more descriptive */
|
||||
static Object *make_prim_init(bContext *C, const char *idname,
|
||||
float *dia, float mat[][4],
|
||||
float *dia, float mat[4][4],
|
||||
int *state, const float loc[3], const float rot[3], const unsigned int layer)
|
||||
{
|
||||
Object *obedit = CTX_data_edit_object(C);
|
||||
|
@ -63,7 +63,7 @@
|
||||
* point and would result in the same distance.
|
||||
*/
|
||||
#define INSET_DEFAULT 0.00001f
|
||||
static float edbm_rip_edgedist(ARegion *ar, float mat[][4],
|
||||
static float edbm_rip_edgedist(ARegion *ar, float mat[4][4],
|
||||
const float co1[3], const float co2[3], const float mvalf[2],
|
||||
const float inset)
|
||||
{
|
||||
@ -83,7 +83,7 @@ static float edbm_rip_edgedist(ARegion *ar, float mat[][4],
|
||||
}
|
||||
|
||||
#if 0
|
||||
static float edbm_rip_linedist(ARegion *ar, float mat[][4],
|
||||
static float edbm_rip_linedist(ARegion *ar, float mat[4][4],
|
||||
const float co1[3], const float co2[3], const float mvalf[2])
|
||||
{
|
||||
float vec1[2], vec2[2];
|
||||
|
@ -186,7 +186,7 @@ void ED_object_base_init_transform(bContext *C, Base *base, const float loc[3],
|
||||
/* Uses context to figure out transform for primitive.
|
||||
* Returns standard diameter. */
|
||||
float ED_object_new_primitive_matrix(bContext *C, Object *obedit,
|
||||
const float loc[3], const float rot[3], float primmat[][4],
|
||||
const float loc[3], const float rot[3], float primmat[4][4],
|
||||
int apply_diameter)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
|
@ -516,7 +516,7 @@ static int point_is_selected(PTCacheEditPoint *point)
|
||||
|
||||
typedef void (*ForPointFunc)(PEData *data, int point_index);
|
||||
typedef void (*ForKeyFunc)(PEData *data, int point_index, int key_index);
|
||||
typedef void (*ForKeyMatFunc)(PEData *data, float mat[][4], float imat[][4], int point_index, int key_index, PTCacheEditKey *key);
|
||||
typedef void (*ForKeyMatFunc)(PEData *data, float mat[4][4], float imat[4][4], int point_index, int key_index, PTCacheEditKey *key);
|
||||
|
||||
static void for_mouse_hit_keys(PEData *data, ForKeyFunc func, int nearest)
|
||||
{
|
||||
@ -2766,7 +2766,7 @@ void PARTICLE_OT_mirror(wmOperatorType *ot)
|
||||
|
||||
/************************* brush edit callbacks ********************/
|
||||
|
||||
static void brush_comb(PEData *data, float UNUSED(mat[][4]), float imat[][4], int point_index, int key_index, PTCacheEditKey *key)
|
||||
static void brush_comb(PEData *data, float UNUSED(mat[4][4]), float imat[4][4], int point_index, int key_index, PTCacheEditKey *key)
|
||||
{
|
||||
ParticleEditSettings *pset= PE_settings(data->scene);
|
||||
float cvec[3], fac;
|
||||
@ -3038,7 +3038,7 @@ static void brush_puff(PEData *data, int point_index)
|
||||
}
|
||||
|
||||
|
||||
static void BKE_brush_weight_get(PEData *data, float UNUSED(mat[][4]), float UNUSED(imat[][4]), int point_index, int key_index, PTCacheEditKey *UNUSED(key))
|
||||
static void BKE_brush_weight_get(PEData *data, float UNUSED(mat[4][4]), float UNUSED(imat[4][4]), int point_index, int key_index, PTCacheEditKey *UNUSED(key))
|
||||
{
|
||||
/* roots have full weight allways */
|
||||
if (key_index) {
|
||||
@ -3052,7 +3052,7 @@ static void BKE_brush_weight_get(PEData *data, float UNUSED(mat[][4]), float UNU
|
||||
}
|
||||
}
|
||||
|
||||
static void brush_smooth_get(PEData *data, float mat[][4], float UNUSED(imat[][4]), int UNUSED(point_index), int key_index, PTCacheEditKey *key)
|
||||
static void brush_smooth_get(PEData *data, float mat[4][4], float UNUSED(imat[4][4]), int UNUSED(point_index), int key_index, PTCacheEditKey *key)
|
||||
{
|
||||
if (key_index) {
|
||||
float dvec[3];
|
||||
@ -3064,7 +3064,7 @@ static void brush_smooth_get(PEData *data, float mat[][4], float UNUSED(imat[][4
|
||||
}
|
||||
}
|
||||
|
||||
static void brush_smooth_do(PEData *data, float UNUSED(mat[][4]), float imat[][4], int point_index, int key_index, PTCacheEditKey *key)
|
||||
static void brush_smooth_do(PEData *data, float UNUSED(mat[4][4]), float imat[4][4], int point_index, int key_index, PTCacheEditKey *key)
|
||||
{
|
||||
float vec[3], dvec[3];
|
||||
|
||||
|
@ -189,7 +189,7 @@ float paint_get_tex_pixel(Brush *br, float u, float v)
|
||||
|
||||
/* 3D Paint */
|
||||
|
||||
static void imapaint_project(Object *ob, float model[][4], float proj[][4], const float co[3], float pco[4])
|
||||
static void imapaint_project(Object *ob, float model[4][4], float proj[4][4], const float co[3], float pco[4])
|
||||
{
|
||||
copy_v3_v3(pco, co);
|
||||
pco[3] = 1.0f;
|
||||
|
@ -873,7 +873,7 @@ static float calc_vp_strength_dl(VPaint *vp, ViewContext *vc, const float vert_n
|
||||
}
|
||||
|
||||
static float calc_vp_alpha_dl(VPaint *vp, ViewContext *vc,
|
||||
float vpimat[][3], const float *vert_nor,
|
||||
float vpimat[3][3], const float *vert_nor,
|
||||
const float mval[2],
|
||||
const float brush_size_pressure, const float brush_alpha_pressure)
|
||||
{
|
||||
|
@ -637,7 +637,7 @@ static float co[16] = {
|
||||
|
||||
|
||||
/* smat, imat = mat & imat to draw screenaligned */
|
||||
static void draw_sphere_bone_dist(float smat[][4], float imat[][4], bPoseChannel *pchan, EditBone *ebone)
|
||||
static void draw_sphere_bone_dist(float smat[4][4], float imat[4][4], bPoseChannel *pchan, EditBone *ebone)
|
||||
{
|
||||
float head, tail, dist /*, length*/;
|
||||
float *headvec, *tailvec, dirvec[3];
|
||||
@ -755,7 +755,7 @@ static void draw_sphere_bone_dist(float smat[][4], float imat[][4], bPoseChannel
|
||||
|
||||
|
||||
/* smat, imat = mat & imat to draw screenaligned */
|
||||
static void draw_sphere_bone_wire(float smat[][4], float imat[][4],
|
||||
static void draw_sphere_bone_wire(float smat[4][4], float imat[4][4],
|
||||
int armflag, int boneflag, short constflag, unsigned int id,
|
||||
bPoseChannel *pchan, EditBone *ebone)
|
||||
{
|
||||
@ -1648,7 +1648,7 @@ static void draw_pose_dofs(Object *ob)
|
||||
}
|
||||
}
|
||||
|
||||
static void bone_matrix_translate_y(float mat[][4], float y)
|
||||
static void bone_matrix_translate_y(float mat[4][4], float y)
|
||||
{
|
||||
float trans[3];
|
||||
|
||||
@ -2069,7 +2069,7 @@ static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, Base *base,
|
||||
}
|
||||
|
||||
/* in editmode, we don't store the bone matrix... */
|
||||
static void get_matrix_editbone(EditBone *eBone, float bmat[][4])
|
||||
static void get_matrix_editbone(EditBone *eBone, float bmat[4][4])
|
||||
{
|
||||
float delta[3];
|
||||
float mat[3][3];
|
||||
|
@ -622,7 +622,7 @@ static void draw_empty_image(Object *ob, const short dflag, const unsigned char
|
||||
BKE_image_release_ibuf(ima, ibuf, NULL);
|
||||
}
|
||||
|
||||
static void circball_array_fill(float verts[CIRCLE_RESOL][3], const float cent[3], float rad, float tmat[][4])
|
||||
static void circball_array_fill(float verts[CIRCLE_RESOL][3], const float cent[3], float rad, float tmat[4][4])
|
||||
{
|
||||
float vx[3], vy[3];
|
||||
float *viter = (float *)verts;
|
||||
@ -638,7 +638,7 @@ static void circball_array_fill(float verts[CIRCLE_RESOL][3], const float cent[3
|
||||
}
|
||||
}
|
||||
|
||||
void drawcircball(int mode, const float cent[3], float rad, float tmat[][4])
|
||||
void drawcircball(int mode, const float cent[3], float rad, float tmat[4][4])
|
||||
{
|
||||
float verts[CIRCLE_RESOL][3];
|
||||
|
||||
@ -739,7 +739,7 @@ void view3d_cached_text_draw_add(const float co[3],
|
||||
memcpy(++vos, str, alloc_len);
|
||||
}
|
||||
|
||||
void view3d_cached_text_draw_end(View3D *v3d, ARegion *ar, int depth_write, float mat[][4])
|
||||
void view3d_cached_text_draw_end(View3D *v3d, ARegion *ar, int depth_write, float mat[4][4])
|
||||
{
|
||||
RegionView3D *rv3d = ar->regiondata;
|
||||
ListBase *strings = &CachedText[CachedTextLevel - 1];
|
||||
@ -929,7 +929,7 @@ static void drawcube_size(const float size[3])
|
||||
}
|
||||
#endif
|
||||
|
||||
static void drawshadbuflimits(Lamp *la, float mat[][4])
|
||||
static void drawshadbuflimits(Lamp *la, float mat[4][4])
|
||||
{
|
||||
float sta[3], end[3], lavec[3];
|
||||
|
||||
@ -5446,7 +5446,7 @@ static void draw_textcurs(float textcurs[4][2])
|
||||
set_inverted_drawing(0);
|
||||
}
|
||||
|
||||
static void drawspiral(const float cent[3], float rad, float tmat[][4], int start)
|
||||
static void drawspiral(const float cent[3], float rad, float tmat[4][4], int start)
|
||||
{
|
||||
float vec[3], vx[3], vy[3];
|
||||
const float tot_inv = (1.0f / (float)CIRCLE_RESOL);
|
||||
@ -5535,7 +5535,7 @@ static void drawcircle_size(float size)
|
||||
}
|
||||
|
||||
/* needs fixing if non-identity matrice used */
|
||||
static void drawtube(const float vec[3], float radius, float height, float tmat[][4])
|
||||
static void drawtube(const float vec[3], float radius, float height, float tmat[4][4])
|
||||
{
|
||||
float cur[3];
|
||||
drawcircball(GL_LINE_LOOP, vec, radius, tmat);
|
||||
@ -5557,7 +5557,7 @@ static void drawtube(const float vec[3], float radius, float height, float tmat[
|
||||
glEnd();
|
||||
}
|
||||
/* needs fixing if non-identity matrice used */
|
||||
static void drawcone(const float vec[3], float radius, float height, float tmat[][4])
|
||||
static void drawcone(const float vec[3], float radius, float height, float tmat[4][4])
|
||||
{
|
||||
float cur[3];
|
||||
|
||||
|
@ -217,7 +217,7 @@ void ED_view3d_clipping_enable(void)
|
||||
}
|
||||
}
|
||||
|
||||
static int view3d_clipping_test(const float vec[3], float clip[][4])
|
||||
static int view3d_clipping_test(const float vec[3], float clip[6][4])
|
||||
{
|
||||
float view[3];
|
||||
copy_v3_v3(view, vec);
|
||||
@ -2307,7 +2307,7 @@ typedef struct View3DShadow {
|
||||
} View3DShadow;
|
||||
|
||||
static void gpu_render_lamp_update(Scene *scene, View3D *v3d, Object *ob, Object *par,
|
||||
float obmat[][4], ListBase *shadows)
|
||||
float obmat[4][4], ListBase *shadows)
|
||||
{
|
||||
GPULamp *lamp;
|
||||
Lamp *la = (Lamp *)ob->data;
|
||||
@ -2466,7 +2466,7 @@ CustomDataMask ED_view3d_screen_datamask(bScreen *screen)
|
||||
return mask;
|
||||
}
|
||||
|
||||
void ED_view3d_update_viewmat(Scene *scene, View3D *v3d, ARegion *ar, float viewmat[][4], float winmat[][4])
|
||||
void ED_view3d_update_viewmat(Scene *scene, View3D *v3d, ARegion *ar, float viewmat[4][4], float winmat[4][4])
|
||||
{
|
||||
RegionView3D *rv3d = ar->regiondata;
|
||||
|
||||
@ -2509,7 +2509,7 @@ void ED_view3d_update_viewmat(Scene *scene, View3D *v3d, ARegion *ar, float view
|
||||
}
|
||||
}
|
||||
|
||||
static void view3d_main_area_setup_view(Scene *scene, View3D *v3d, ARegion *ar, float viewmat[][4], float winmat[][4])
|
||||
static void view3d_main_area_setup_view(Scene *scene, View3D *v3d, ARegion *ar, float viewmat[4][4], float winmat[4][4])
|
||||
{
|
||||
RegionView3D *rv3d = ar->regiondata;
|
||||
|
||||
@ -2533,7 +2533,7 @@ void ED_view3d_draw_offscreen_init(Scene *scene, View3D *v3d)
|
||||
* stuff like shadow buffers
|
||||
*/
|
||||
void ED_view3d_draw_offscreen(Scene *scene, View3D *v3d, ARegion *ar,
|
||||
int winx, int winy, float viewmat[][4], float winmat[][4],
|
||||
int winx, int winy, float viewmat[4][4], float winmat[4][4],
|
||||
int do_bgpic, int colormanage_background)
|
||||
{
|
||||
RegionView3D *rv3d = ar->regiondata;
|
||||
|
@ -3576,7 +3576,7 @@ static void calc_clipping_plane(float clip[6][4], BoundBox *clipbb)
|
||||
}
|
||||
}
|
||||
|
||||
static void calc_local_clipping(float clip_local[][4], BoundBox *clipbb, float mat[][4])
|
||||
static void calc_local_clipping(float clip_local[6][4], BoundBox *clipbb, float mat[4][4])
|
||||
{
|
||||
BoundBox clipbb_local;
|
||||
float imat[4][4];
|
||||
@ -3591,7 +3591,7 @@ static void calc_local_clipping(float clip_local[][4], BoundBox *clipbb, float m
|
||||
calc_clipping_plane(clip_local, &clipbb_local);
|
||||
}
|
||||
|
||||
void ED_view3d_clipping_local(RegionView3D *rv3d, float mat[][4])
|
||||
void ED_view3d_clipping_local(RegionView3D *rv3d, float mat[4][4])
|
||||
{
|
||||
if (rv3d->rflag & RV3D_CLIPPING)
|
||||
calc_local_clipping(rv3d->clip_local, rv3d->clipbb, mat);
|
||||
@ -3997,7 +3997,7 @@ float ED_view3d_offset_distance(float mat[4][4], float ofs[3]) {
|
||||
* \param quat The view rotation, quaternion normally from RegionView3D.viewquat.
|
||||
* \param dist The view distance from ofs, normally from RegionView3D.dist.
|
||||
*/
|
||||
void ED_view3d_from_m4(float mat[][4], float ofs[3], float quat[4], float *dist)
|
||||
void ED_view3d_from_m4(float mat[4][4], float ofs[3], float quat[4], float *dist)
|
||||
{
|
||||
/* Offset */
|
||||
if (ofs)
|
||||
@ -4034,7 +4034,7 @@ void ED_view3d_from_m4(float mat[][4], float ofs[3], float quat[4], float *dist)
|
||||
* \param quat The view rotation, quaternion normally from RegionView3D.viewquat.
|
||||
* \param dist The view distance from ofs, normally from RegionView3D.dist.
|
||||
*/
|
||||
void ED_view3d_to_m4(float mat[][4], const float ofs[3], const float quat[4], const float dist)
|
||||
void ED_view3d_to_m4(float mat[4][4], const float ofs[3], const float quat[4], const float dist)
|
||||
{
|
||||
float iviewquat[4] = {-quat[0], quat[1], quat[2], quat[3]};
|
||||
float dvec[3] = {0.0f, 0.0f, dist};
|
||||
|
@ -125,7 +125,7 @@ void drawaxes(float size, char drawtype);
|
||||
|
||||
void view3d_cached_text_draw_begin(void);
|
||||
void view3d_cached_text_draw_add(const float co[3], const char *str, short xoffs, short flag, const unsigned char col[4]);
|
||||
void view3d_cached_text_draw_end(View3D * v3d, ARegion * ar, int depth_write, float mat[][4]);
|
||||
void view3d_cached_text_draw_end(View3D * v3d, ARegion * ar, int depth_write, float mat[4][4]);
|
||||
|
||||
enum {
|
||||
V3D_CACHE_TEXT_ZBUF = (1 << 0),
|
||||
@ -172,7 +172,7 @@ void VIEW3D_OT_localview(struct wmOperatorType *ot);
|
||||
void VIEW3D_OT_game_start(struct wmOperatorType *ot);
|
||||
|
||||
|
||||
int ED_view3d_boundbox_clip(RegionView3D * rv3d, float obmat[][4], struct BoundBox *bb);
|
||||
int ED_view3d_boundbox_clip(RegionView3D * rv3d, float obmat[4][4], struct BoundBox *bb);
|
||||
|
||||
void view3d_smooth_view(struct bContext *C, struct View3D *v3d, struct ARegion *ar, struct Object *, struct Object *,
|
||||
float *ofs, float *quat, float *dist, float *lens);
|
||||
|
@ -579,7 +579,7 @@ void ED_view3d_clipping_calc(BoundBox *bb, float planes[4][4], bglMats *mats, co
|
||||
}
|
||||
|
||||
|
||||
int ED_view3d_boundbox_clip(RegionView3D *rv3d, float obmat[][4], BoundBox *bb)
|
||||
int ED_view3d_boundbox_clip(RegionView3D *rv3d, float obmat[4][4], BoundBox *bb)
|
||||
{
|
||||
/* return 1: draw */
|
||||
|
||||
|
@ -2884,7 +2884,7 @@ BLI_INLINE int tx_vec_sign_flip(const float a[3], const float b[3])
|
||||
}
|
||||
|
||||
/* smat is reference matrix, only scaled */
|
||||
static void TransMat3ToSize(float mat[][3], float smat[][3], float size[3])
|
||||
static void TransMat3ToSize(float mat[3][3], float smat[3][3], float size[3])
|
||||
{
|
||||
float vec[3];
|
||||
|
||||
|
@ -572,7 +572,7 @@ void flushTransTracking(TransInfo *t);
|
||||
void flushTransMasking(TransInfo *t);
|
||||
|
||||
/*********************** exported from transform_manipulator.c ********** */
|
||||
int gimbal_axis(struct Object *ob, float gmat[][3]); /* return 0 when no gimbal for selection */
|
||||
int gimbal_axis(struct Object *ob, float gmat[3][3]); /* return 0 when no gimbal for selection */
|
||||
int calc_manipulator_stats(const struct bContext *C);
|
||||
|
||||
/*********************** TransData Creation and General Handling *********** */
|
||||
|
@ -1769,7 +1769,7 @@ void flushTransParticles(TransInfo *t)
|
||||
* but instead it's a depth-first search, fudged
|
||||
* to report shortest distances. I have no idea how fast
|
||||
* or slow this is. */
|
||||
static void editmesh_set_connectivity_distance(BMEditMesh *em, float mtx[][3], float *dists)
|
||||
static void editmesh_set_connectivity_distance(BMEditMesh *em, float mtx[3][3], float *dists)
|
||||
{
|
||||
BMVert **queue = NULL;
|
||||
float *dqueue = NULL;
|
||||
|
@ -199,7 +199,7 @@ static int test_rotmode_euler(short rotmode)
|
||||
return (ELEM(rotmode, ROT_MODE_AXISANGLE, ROT_MODE_QUAT)) ? 0 : 1;
|
||||
}
|
||||
|
||||
int gimbal_axis(Object *ob, float gmat[][3])
|
||||
int gimbal_axis(Object *ob, float gmat[3][3])
|
||||
{
|
||||
if (ob) {
|
||||
if (ob->mode & OB_MODE_POSE) {
|
||||
@ -638,7 +638,7 @@ static void test_manipulator_axis(const bContext *C)
|
||||
|
||||
/* ******************** DRAWING STUFFIES *********** */
|
||||
|
||||
static float screen_aligned(RegionView3D *rv3d, float mat[][4])
|
||||
static float screen_aligned(RegionView3D *rv3d, float mat[4][4])
|
||||
{
|
||||
glTranslatef(mat[3][0], mat[3][1], mat[3][2]);
|
||||
|
||||
@ -826,7 +826,7 @@ static void draw_manipulator_axes(View3D *v3d, RegionView3D *rv3d, int colcode,
|
||||
}
|
||||
}
|
||||
|
||||
static void preOrthoFront(int ortho, float twmat[][4], int axis)
|
||||
static void preOrthoFront(int ortho, float twmat[4][4], int axis)
|
||||
{
|
||||
if (ortho == 0) {
|
||||
float omat[4][4];
|
||||
|
@ -851,7 +851,7 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
|
||||
return result;
|
||||
}
|
||||
|
||||
void ED_getTransformOrientationMatrix(const bContext *C, float orientation_mat[][3], int activeOnly)
|
||||
void ED_getTransformOrientationMatrix(const bContext *C, float orientation_mat[3][3], int activeOnly)
|
||||
{
|
||||
float normal[3] = {0.0, 0.0, 0.0};
|
||||
float plane[3] = {0.0, 0.0, 0.0};
|
||||
|
@ -1141,7 +1141,7 @@ static void TargetSnapClosest(TransInfo *t)
|
||||
}
|
||||
}
|
||||
|
||||
static int snapEdge(ARegion *ar, float v1co[3], short v1no[3], float v2co[3], short v2no[3], float obmat[][4], float timat[][3],
|
||||
static int snapEdge(ARegion *ar, float v1co[3], short v1no[3], float v2co[3], short v2no[3], float obmat[4][4], float timat[3][3],
|
||||
const float ray_start[3], const float ray_start_local[3], const float ray_normal_local[3], const float mval[2],
|
||||
float r_loc[3], float r_no[3], int *r_dist, float *r_depth)
|
||||
{
|
||||
@ -1228,7 +1228,7 @@ static int snapEdge(ARegion *ar, float v1co[3], short v1no[3], float v2co[3], sh
|
||||
return retval;
|
||||
}
|
||||
|
||||
static int snapVertex(ARegion *ar, float vco[3], short vno[3], float obmat[][4], float timat[][3],
|
||||
static int snapVertex(ARegion *ar, float vco[3], short vno[3], float obmat[4][4], float timat[3][3],
|
||||
const float ray_start[3], const float ray_start_local[3], const float ray_normal_local[3], const float mval[2],
|
||||
float r_loc[3], float r_no[3], int *r_dist, float *r_depth)
|
||||
{
|
||||
@ -1276,7 +1276,7 @@ static int snapVertex(ARegion *ar, float vco[3], short vno[3], float obmat[][4],
|
||||
return retval;
|
||||
}
|
||||
|
||||
static int snapArmature(short snap_mode, ARegion *ar, Object *ob, bArmature *arm, float obmat[][4],
|
||||
static int snapArmature(short snap_mode, ARegion *ar, Object *ob, bArmature *arm, float obmat[4][4],
|
||||
const float ray_start[3], const float ray_normal[3], const float mval[2],
|
||||
float r_loc[3], float *UNUSED(r_no), int *r_dist, float *r_depth)
|
||||
{
|
||||
@ -1339,7 +1339,7 @@ static int snapArmature(short snap_mode, ARegion *ar, Object *ob, bArmature *arm
|
||||
return retval;
|
||||
}
|
||||
|
||||
static int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh *dm, BMEditMesh *em, float obmat[][4],
|
||||
static int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh *dm, BMEditMesh *em, float obmat[4][4],
|
||||
const float ray_start[3], const float ray_normal[3], const float mval[2],
|
||||
float r_loc[3], float r_no[3], int *r_dist, float *r_depth)
|
||||
{
|
||||
@ -1517,7 +1517,7 @@ static int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh
|
||||
return retval;
|
||||
}
|
||||
|
||||
static int snapObject(Scene *scene, ARegion *ar, Object *ob, int editobject, float obmat[][4],
|
||||
static int snapObject(Scene *scene, ARegion *ar, Object *ob, int editobject, float obmat[4][4],
|
||||
const float ray_start[3], const float ray_normal[3], const float mval[2],
|
||||
float r_loc[3], float r_no[3], int *r_dist, float *r_depth)
|
||||
{
|
||||
@ -1670,7 +1670,7 @@ static void addDepthPeel(ListBase *depth_peels, float depth, float p[3], float n
|
||||
peel->flag = 0;
|
||||
}
|
||||
|
||||
static int peelDerivedMesh(Object *ob, DerivedMesh *dm, float obmat[][4],
|
||||
static int peelDerivedMesh(Object *ob, DerivedMesh *dm, float obmat[4][4],
|
||||
const float ray_start[3], const float ray_normal[3], const float UNUSED(mval[2]),
|
||||
ListBase *depth_peels)
|
||||
{
|
||||
|
@ -907,7 +907,7 @@ static void uv_map_transform_center(Scene *scene, View3D *v3d, float *result,
|
||||
}
|
||||
}
|
||||
|
||||
static void uv_map_rotation_matrix(float result[][4], RegionView3D *rv3d, Object *ob,
|
||||
static void uv_map_rotation_matrix(float result[4][4], RegionView3D *rv3d, Object *ob,
|
||||
float upangledeg, float sideangledeg, float radius)
|
||||
{
|
||||
float rotup[4][4], rotside[4][4], viewmatrix[4][4], rotobj[4][4];
|
||||
|
@ -93,7 +93,7 @@ int GPU_set_tpage(struct MTFace *tface, int mipmap, int transp);
|
||||
|
||||
int GPU_default_lights(void);
|
||||
int GPU_scene_object_lights(struct Scene *scene, struct Object *ob,
|
||||
int lay, float viewmat[][4], int ortho);
|
||||
int lay, float viewmat[4][4], int ortho);
|
||||
|
||||
/* Text render
|
||||
* - based on moving uv coordinates */
|
||||
|
@ -127,7 +127,7 @@ void GPU_material_free(struct Material *ma);
|
||||
void GPU_materials_free(void);
|
||||
|
||||
void GPU_material_bind(GPUMaterial *material, int oblay, int viewlay, double time, int mipmap);
|
||||
void GPU_material_bind_uniforms(GPUMaterial *material, float obmat[][4], float viewmat[][4], float viewinv[][4], float obcol[4], float autobumpscale);
|
||||
void GPU_material_bind_uniforms(GPUMaterial *material, float obmat[4][4], float viewmat[4][4], float viewinv[4][4], float obcol[4], float autobumpscale);
|
||||
void GPU_material_unbind(GPUMaterial *material);
|
||||
int GPU_material_bound(GPUMaterial *material);
|
||||
|
||||
@ -232,10 +232,10 @@ void GPU_lamp_free(struct Object *ob);
|
||||
|
||||
int GPU_lamp_has_shadow_buffer(GPULamp *lamp);
|
||||
void GPU_lamp_update_buffer_mats(GPULamp *lamp);
|
||||
void GPU_lamp_shadow_buffer_bind(GPULamp *lamp, float viewmat[][4], int *winsize, float winmat[][4]);
|
||||
void GPU_lamp_shadow_buffer_bind(GPULamp *lamp, float viewmat[4][4], int *winsize, float winmat[4][4]);
|
||||
void GPU_lamp_shadow_buffer_unbind(GPULamp *lamp);
|
||||
|
||||
void GPU_lamp_update(GPULamp *lamp, int lay, int hide, float obmat[][4]);
|
||||
void GPU_lamp_update(GPULamp *lamp, int lay, int hide, float obmat[4][4]);
|
||||
void GPU_lamp_update_colors(GPULamp *lamp, float r, float g, float b, float energy);
|
||||
void GPU_lamp_update_distance(GPULamp *lamp, float distance, float att1, float att2);
|
||||
void GPU_lamp_update_spot(GPULamp *lamp, float spotsize, float spotblend);
|
||||
|
@ -1593,7 +1593,7 @@ int GPU_default_lights(void)
|
||||
return count;
|
||||
}
|
||||
|
||||
int GPU_scene_object_lights(Scene *scene, Object *ob, int lay, float viewmat[][4], int ortho)
|
||||
int GPU_scene_object_lights(Scene *scene, Object *ob, int lay, float viewmat[4][4], int ortho)
|
||||
{
|
||||
Base *base;
|
||||
Lamp *la;
|
||||
|
@ -282,7 +282,7 @@ void GPU_material_bind(GPUMaterial *material, int oblay, int viewlay, double tim
|
||||
}
|
||||
}
|
||||
|
||||
void GPU_material_bind_uniforms(GPUMaterial *material, float obmat[][4], float viewmat[][4], float viewinv[][4], float obcol[4], float autobumpscale)
|
||||
void GPU_material_bind_uniforms(GPUMaterial *material, float obmat[4][4], float viewmat[4][4], float viewinv[4][4], float obcol[4], float autobumpscale)
|
||||
{
|
||||
if (material->pass) {
|
||||
GPUShader *shader = GPU_pass_shader(material->pass);
|
||||
@ -1572,7 +1572,7 @@ void GPU_materials_free(void)
|
||||
|
||||
/* Lamps and shadow buffers */
|
||||
|
||||
void GPU_lamp_update(GPULamp *lamp, int lay, int hide, float obmat[][4])
|
||||
void GPU_lamp_update(GPULamp *lamp, int lay, int hide, float obmat[4][4])
|
||||
{
|
||||
float mat[4][4];
|
||||
|
||||
@ -1854,7 +1854,7 @@ void GPU_lamp_update_buffer_mats(GPULamp *lamp)
|
||||
mult_m4_m4m4(lamp->persmat, rangemat, persmat);
|
||||
}
|
||||
|
||||
void GPU_lamp_shadow_buffer_bind(GPULamp *lamp, float viewmat[][4], int *winsize, float winmat[][4])
|
||||
void GPU_lamp_shadow_buffer_bind(GPULamp *lamp, float viewmat[4][4], int *winsize, float winmat[4][4])
|
||||
{
|
||||
GPU_lamp_update_buffer_mats(lamp);
|
||||
|
||||
|
@ -206,7 +206,7 @@ static void make_dmats(bPoseChannel *pchan)
|
||||
/* applies IK matrix to pchan, IK is done separated */
|
||||
/* formula: pose_mat(b) = pose_mat(b-1) * diffmat(b-1, b) * ik_mat(b) */
|
||||
/* to make this work, the diffmats have to be precalculated! Stored in chan_mat */
|
||||
static void where_is_ik_bone(bPoseChannel *pchan, float ik_mat[][3]) // nr = to detect if this is first bone
|
||||
static void where_is_ik_bone(bPoseChannel *pchan, float ik_mat[3][3]) // nr = to detect if this is first bone
|
||||
{
|
||||
float vec[3], ikmat[4][4];
|
||||
|
||||
|
@ -586,7 +586,7 @@ typedef struct MeshDeformModifierData {
|
||||
/* runtime */
|
||||
void (*bindfunc)(struct Scene *scene,
|
||||
struct MeshDeformModifierData *mmd,
|
||||
float *vertexcos, int totvert, float cagemat[][4]);
|
||||
float *vertexcos, int totvert, float cagemat[4][4]);
|
||||
} MeshDeformModifierData;
|
||||
|
||||
typedef enum {
|
||||
|
@ -305,7 +305,7 @@ static Object *AddNewBlenderMesh(Scene *scene, Base *base)
|
||||
|
||||
static void InterpCSGFace(
|
||||
DerivedMesh *dm, DerivedMesh *orig_dm, int index, int orig_index, int nr,
|
||||
float mapmat[][4])
|
||||
float mapmat[4][4])
|
||||
{
|
||||
float obco[3], *co[4], *orig_co[4], w[4][4];
|
||||
MFace *mface, *orig_mface;
|
||||
@ -344,8 +344,8 @@ static void InterpCSGFace(
|
||||
static DerivedMesh *ConvertCSGDescriptorsToDerivedMesh(
|
||||
CSG_FaceIteratorDescriptor *face_it,
|
||||
CSG_VertexIteratorDescriptor *vertex_it,
|
||||
float parinv[][4],
|
||||
float mapmat[][4],
|
||||
float parinv[4][4],
|
||||
float mapmat[4][4],
|
||||
Material **mat,
|
||||
int *totmat,
|
||||
DerivedMesh *dm1,
|
||||
|
@ -301,7 +301,7 @@ static DerivedMesh *fluidsim_read_obj(const char *filename, const MPoly *mp_exam
|
||||
}
|
||||
|
||||
|
||||
void fluid_get_bb(MVert *mvert, int totvert, float obmat[][4],
|
||||
void fluid_get_bb(MVert *mvert, int totvert, float obmat[4][4],
|
||||
/*RET*/ float start[3], /*RET*/ float size[3])
|
||||
{
|
||||
float bbsx = 0.0, bbsy = 0.0, bbsz = 0.0;
|
||||
|
@ -198,7 +198,7 @@ void RE_SetOrtho (struct Render *re, rctf *viewplane, float clipsta, float clipe
|
||||
void RE_SetPixelSize(struct Render *re, float pixsize);
|
||||
|
||||
/* option to set viewmatrix before making dbase */
|
||||
void RE_SetView (struct Render *re, float mat[][4]);
|
||||
void RE_SetView (struct Render *re, float mat[4][4]);
|
||||
|
||||
/* make or free the dbase */
|
||||
void RE_Database_FromScene(struct Render *re, struct Main *bmain, struct Scene *scene, unsigned int lay, int use_camera_view);
|
||||
@ -273,8 +273,8 @@ int RE_seq_render_active(struct Scene *scene, struct RenderData *rd);
|
||||
|
||||
void RE_Database_Baking(struct Render *re, struct Main *bmain, struct Scene *scene, unsigned int lay, const int type, struct Object *actob);
|
||||
|
||||
void RE_DataBase_GetView(struct Render *re, float mat[][4]);
|
||||
void RE_GetCameraWindow(struct Render *re, struct Object *camera, int frame, float mat[][4]);
|
||||
void RE_DataBase_GetView(struct Render *re, float mat[4][4]);
|
||||
void RE_GetCameraWindow(struct Render *re, struct Object *camera, int frame, float mat[4][4]);
|
||||
struct Scene *RE_GetScene(struct Render *re);
|
||||
|
||||
int RE_is_rendering_allowed(struct Scene *scene, struct Object *camera_override, struct ReportList *reports);
|
||||
|
@ -38,8 +38,8 @@
|
||||
*/
|
||||
void add_filt_fmask(unsigned int mask, const float col[4], float *rowbuf, int row_w);
|
||||
void add_filt_fmask_pixsize(unsigned int mask, float *in, float *rowbuf, int row_w, int pixsize);
|
||||
void add_filt_fmask_coord(float filt[][3], const float col[4], float *rowbuf, int row_w, int col_h, int x, int y);
|
||||
void mask_array(unsigned int mask, float filt[][3]);
|
||||
void add_filt_fmask_coord(float filt[3][3], const float col[4], float *rowbuf, int row_w, int col_h, int x, int y);
|
||||
void mask_array(unsigned int mask, float filt[3][3]);
|
||||
|
||||
/**
|
||||
* Alpha-over blending for floats.
|
||||
|
@ -56,7 +56,7 @@ int RE_rayobject_raycast(RayObject *r, struct Isect *i);
|
||||
/* Acceleration Structures */
|
||||
|
||||
RayObject *RE_rayobject_octree_create(int ocres, int size);
|
||||
RayObject *RE_rayobject_instance_create(RayObject *target, float transform[][4], void *ob, void *target_ob);
|
||||
RayObject *RE_rayobject_instance_create(RayObject *target, float transform[4][4], void *ob, void *target_ob);
|
||||
RayObject *RE_rayobject_empty_create(void);
|
||||
|
||||
RayObject *RE_rayobject_blibvh_create(int size); /* BLI_kdopbvh.c */
|
||||
|
@ -87,8 +87,8 @@ void free_renderdata_tables(struct Render *re);
|
||||
void free_renderdata_vertnodes(struct VertTableNode *vertnodes);
|
||||
void free_renderdata_vlaknodes(struct VlakTableNode *vlaknodes);
|
||||
|
||||
void project_renderdata(struct Render *re, void (*projectfunc)(const float *, float mat[][4], float *), int do_pano, float xoffs, int do_buckets);
|
||||
int clip_render_object(float boundbox[][3], float bounds[4], float mat[][4]);
|
||||
void project_renderdata(struct Render *re, void (*projectfunc)(const float *, float mat[4][4], float *), int do_pano, float xoffs, int do_buckets);
|
||||
int clip_render_object(float boundbox[2][3], float bounds[4], float mat[4][4]);
|
||||
|
||||
/* functions are not exported... so wrong names */
|
||||
|
||||
@ -106,7 +106,7 @@ struct HaloRen *RE_inithalo_particle(struct Render *re, struct ObjectRen *obr, s
|
||||
struct StrandBuffer *RE_addStrandBuffer(struct ObjectRen *obr, int totvert);
|
||||
|
||||
struct ObjectRen *RE_addRenderObject(struct Render *re, struct Object *ob, struct Object *par, int index, int psysindex, int lay);
|
||||
struct ObjectInstanceRen *RE_addRenderInstance(struct Render *re, struct ObjectRen *obr, struct Object *ob, struct Object *par, int index, int psysindex, float mat[][4], int lay);
|
||||
struct ObjectInstanceRen *RE_addRenderInstance(struct Render *re, struct ObjectRen *obr, struct Object *ob, struct Object *par, int index, int psysindex, float mat[4][4], int lay);
|
||||
void RE_makeRenderInstances(struct Render *re);
|
||||
|
||||
float *RE_vertren_get_stress(struct ObjectRen *obr, struct VertRen *ver, int verify);
|
||||
|
@ -92,10 +92,10 @@ struct StrandShadeCache;
|
||||
typedef struct StrandShadeCache StrandShadeCache;
|
||||
|
||||
void strand_eval_point(StrandSegment *sseg, StrandPoint *spoint);
|
||||
void render_strand_segment(struct Render *re, float winmat[][4], struct StrandPart *spart, struct ZSpan *zspan, int totzspan, StrandSegment *sseg);
|
||||
void render_strand_segment(struct Render *re, float winmat[4][4], struct StrandPart *spart, struct ZSpan *zspan, int totzspan, StrandSegment *sseg);
|
||||
void strand_minmax(struct StrandRen *strand, float min[3], float max[3], const float width);
|
||||
|
||||
struct StrandSurface *cache_strand_surface(struct Render *re, struct ObjectRen *obr, struct DerivedMesh *dm, float mat[][4], int timeoffset);
|
||||
struct StrandSurface *cache_strand_surface(struct Render *re, struct ObjectRen *obr, struct DerivedMesh *dm, float mat[4][4], int timeoffset);
|
||||
void free_strand_surface(struct Render *re);
|
||||
|
||||
struct StrandShadeCache *strand_shade_cache_create(void);
|
||||
|
@ -49,17 +49,17 @@ void fillrect(int *rect, int x, int y, int val);
|
||||
* Converts a world coordinate into a homogeneous coordinate in view
|
||||
* coordinates.
|
||||
*/
|
||||
void projectvert(const float v1[3], float winmat[][4], float adr[4]);
|
||||
void projectverto(const float v1[3], float winmat[][4], float adr[4]);
|
||||
void projectvert(const float v1[3], float winmat[4][4], float adr[4]);
|
||||
void projectverto(const float v1[3], float winmat[4][4], float adr[4]);
|
||||
int testclip(const float v[3]);
|
||||
|
||||
void zbuffer_shadow(struct Render *re, float winmat[][4], struct LampRen *lar, int *rectz, int size, float jitx, float jity);
|
||||
void zbuffer_abuf_shadow(struct Render *re, struct LampRen *lar, float winmat[][4], struct APixstr *APixbuf, struct APixstrand *apixbuf, struct ListBase *apsmbase, int size, int samples, float (*jit)[2]);
|
||||
void zbuffer_shadow(struct Render *re, float winmat[4][4], struct LampRen *lar, int *rectz, int size, float jitx, float jity);
|
||||
void zbuffer_abuf_shadow(struct Render *re, struct LampRen *lar, float winmat[4][4], struct APixstr *APixbuf, struct APixstrand *apixbuf, struct ListBase *apsmbase, int size, int samples, float (*jit)[2]);
|
||||
void zbuffer_solid(struct RenderPart *pa, struct RenderLayer *rl, void (*fillfunc)(struct RenderPart *, struct ZSpan *, int, void*), void *data);
|
||||
|
||||
unsigned short *zbuffer_transp_shade(struct RenderPart *pa, struct RenderLayer *rl, float *pass, struct ListBase *psmlist);
|
||||
void zbuffer_sss(RenderPart *pa, unsigned int lay, void *handle, void (*func)(void*, int, int, int, int, int));
|
||||
int zbuffer_strands_abuf(struct Render *re, struct RenderPart *pa, struct APixstrand *apixbuf, struct ListBase *apsmbase, unsigned int lay, int negzmask, float winmat[][4], int winx, int winy, int sample, float (*jit)[2], float clipcrop, int shadow, struct StrandShadeCache *cache);
|
||||
int zbuffer_strands_abuf(struct Render *re, struct RenderPart *pa, struct APixstrand *apixbuf, struct ListBase *apsmbase, unsigned int lay, int negzmask, float winmat[4][4], int winx, int winy, int sample, float (*jit)[2], float clipcrop, int shadow, struct StrandShadeCache *cache);
|
||||
|
||||
typedef struct APixstr {
|
||||
unsigned short mask[4]; /* jitter mask */
|
||||
@ -136,8 +136,8 @@ void zbufclipwire(struct ZSpan *zspan, int obi, int zvlnr, int ec,
|
||||
float *ho1, float *ho2, float *ho3, float *ho4, int c1, int c2, int c3, int c4);
|
||||
|
||||
/* exported to shadeinput.c */
|
||||
void zbuf_make_winmat(Render *re, float winmat[][4]);
|
||||
void zbuf_render_project(float winmat[][4], const float co[3], float ho[4]);
|
||||
void zbuf_make_winmat(Render *re, float winmat[4][4]);
|
||||
void zbuf_render_project(float winmat[4][4], const float co[3], float ho[4]);
|
||||
|
||||
/* sould not really be exposed, bad! */
|
||||
void hoco_to_zco(ZSpan *zspan, float zco[3], const float hoco[4]);
|
||||
|
@ -75,7 +75,7 @@ typedef struct InstanceRayObject {
|
||||
} InstanceRayObject;
|
||||
|
||||
|
||||
RayObject *RE_rayobject_instance_create(RayObject *target, float transform[][4], void *ob, void *target_ob)
|
||||
RayObject *RE_rayobject_instance_create(RayObject *target, float transform[4][4], void *ob, void *target_ob)
|
||||
{
|
||||
InstanceRayObject *obj = (InstanceRayObject *)MEM_callocN(sizeof(InstanceRayObject), "InstanceRayObject");
|
||||
assert(RE_rayobject_isAligned(obj) ); /* RayObject API assumes real data to be 4-byte aligned */
|
||||
|
@ -223,7 +223,7 @@ static Node *addnode(Octree *oc)
|
||||
return oc->adrnode[index] + (oc->nodecount & 4095);
|
||||
}
|
||||
|
||||
static int face_in_node(RayFace *face, short x, short y, short z, float rtf[][3])
|
||||
static int face_in_node(RayFace *face, short x, short y, short z, float rtf[4][3])
|
||||
{
|
||||
static float nor[3], d;
|
||||
float fx, fy, fz;
|
||||
@ -321,7 +321,7 @@ static void ocwrite(Octree *oc, RayFace *face, int quad, short x, short y, short
|
||||
calc_ocval_face(rtf[0], rtf[1], rtf[2], NULL, x >> 2, y >> 1, z, &no->ov[a]);
|
||||
}
|
||||
|
||||
static void d2dda(Octree *oc, short b1, short b2, short c1, short c2, char *ocface, short rts[][3], float rtf[][3])
|
||||
static void d2dda(Octree *oc, short b1, short b2, short c1, short c2, char *ocface, short rts[4][3], float rtf[4][3])
|
||||
{
|
||||
int ocx1, ocx2, ocy1, ocy2;
|
||||
int x, y, dx = 0, dy = 0;
|
||||
|
@ -759,7 +759,7 @@ static VertRen *as_findvertex(VlakRen *vlr, VertRen *UNUSED(ver), ASvert *asv, f
|
||||
|
||||
/* note; autosmooth happens in object space still, after applying autosmooth we rotate */
|
||||
/* note2; actually, when original mesh and displist are equal sized, face normals are from original mesh */
|
||||
static void autosmooth(Render *UNUSED(re), ObjectRen *obr, float mat[][4], int degr)
|
||||
static void autosmooth(Render *UNUSED(re), ObjectRen *obr, float mat[4][4], int degr)
|
||||
{
|
||||
ASvert *asv, *asverts;
|
||||
ASface *asf;
|
||||
@ -2186,7 +2186,7 @@ static short test_for_displace(Render *re, Object *ob)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void displace_render_vert(Render *re, ObjectRen *obr, ShadeInput *shi, VertRen *vr, int vindex, float *scale, float mat[][4], float imat[][3])
|
||||
static void displace_render_vert(Render *re, ObjectRen *obr, ShadeInput *shi, VertRen *vr, int vindex, float *scale, float mat[4][4], float imat[3][3])
|
||||
{
|
||||
MTFace *tface;
|
||||
short texco= shi->mat->texco;
|
||||
@ -2285,7 +2285,7 @@ static void displace_render_vert(Render *re, ObjectRen *obr, ShadeInput *shi, Ve
|
||||
return;
|
||||
}
|
||||
|
||||
static void displace_render_face(Render *re, ObjectRen *obr, VlakRen *vlr, float *scale, float mat[][4], float imat[][3])
|
||||
static void displace_render_face(Render *re, ObjectRen *obr, VlakRen *vlr, float *scale, float mat[4][4], float imat[3][3])
|
||||
{
|
||||
ShadeInput shi;
|
||||
|
||||
@ -2340,7 +2340,7 @@ static void displace_render_face(Render *re, ObjectRen *obr, VlakRen *vlr, float
|
||||
}
|
||||
}
|
||||
|
||||
static void do_displacement(Render *re, ObjectRen *obr, float mat[][4], float imat[][3])
|
||||
static void do_displacement(Render *re, ObjectRen *obr, float mat[4][4], float imat[3][3])
|
||||
{
|
||||
VertRen *vr;
|
||||
VlakRen *vlr;
|
||||
@ -3520,7 +3520,7 @@ static void init_render_mesh(Render *re, ObjectRen *obr, int timeoffset)
|
||||
/* Lamps and Shadowbuffers */
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
static void initshadowbuf(Render *re, LampRen *lar, float mat[][4])
|
||||
static void initshadowbuf(Render *re, LampRen *lar, float mat[4][4])
|
||||
{
|
||||
struct ShadBuf *shb;
|
||||
float viewinv[4][4];
|
||||
@ -5136,7 +5136,7 @@ void RE_DataBase_ApplyWindow(Render *re)
|
||||
project_renderdata(re, projectverto, 0, 0, 0);
|
||||
}
|
||||
|
||||
void RE_DataBase_GetView(Render *re, float mat[][4])
|
||||
void RE_DataBase_GetView(Render *re, float mat[4][4])
|
||||
{
|
||||
copy_m4_m4(mat, re->viewmat);
|
||||
}
|
||||
|
@ -210,7 +210,7 @@ static void envmap_free_render_copy(Render *envre)
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
static void envmap_transmatrix(float mat[][4], int part)
|
||||
static void envmap_transmatrix(float mat[4][4], int part)
|
||||
{
|
||||
float tmat[4][4], eul[3], rotmat[4][4];
|
||||
|
||||
@ -247,7 +247,7 @@ static void envmap_transmatrix(float mat[][4], int part)
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
static void env_rotate_scene(Render *re, float mat[][4], int mode)
|
||||
static void env_rotate_scene(Render *re, float mat[4][4], int mode)
|
||||
{
|
||||
GroupObject *go;
|
||||
ObjectRen *obr;
|
||||
|
@ -515,7 +515,7 @@ void RE_SetPixelSize(Render *re, float pixsize)
|
||||
re->viewdy = re->ycor * pixsize;
|
||||
}
|
||||
|
||||
void RE_GetCameraWindow(struct Render *re, struct Object *camera, int frame, float mat[][4])
|
||||
void RE_GetCameraWindow(struct Render *re, struct Object *camera, int frame, float mat[4][4])
|
||||
{
|
||||
re->r.cfra = frame;
|
||||
RE_SetCamera(re, camera);
|
||||
|
@ -582,7 +582,7 @@ void RE_SetOrtho(Render *re, rctf *viewplane, float clipsta, float clipend)
|
||||
re->viewplane.ymin, re->viewplane.ymax, re->clipsta, re->clipend);
|
||||
}
|
||||
|
||||
void RE_SetView(Render *re, float mat[][4])
|
||||
void RE_SetView(Render *re, float mat[4][4])
|
||||
{
|
||||
/* re->ok flag? */
|
||||
copy_m4_m4(re->viewmat, mat);
|
||||
|
@ -206,7 +206,7 @@ void add_filt_fmask(unsigned int mask, const float col[4], float *rowbuf, int ro
|
||||
}
|
||||
|
||||
|
||||
void mask_array(unsigned int mask, float filt[][3])
|
||||
void mask_array(unsigned int mask, float filt[3][3])
|
||||
{
|
||||
float **fmask1 = R.samples->fmask1, **fmask2 = R.samples->fmask2;
|
||||
unsigned int maskand = (mask & 255);
|
||||
@ -244,7 +244,7 @@ void mask_array(unsigned int mask, float filt[][3])
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
void add_filt_fmask_coord(float filt[][3], const float col[4], float *rowbuf, int row_w, int col_h, int x, int y)
|
||||
void add_filt_fmask_coord(float filt[3][3], const float col[4], float *rowbuf, int row_w, int col_h, int x, int y)
|
||||
{
|
||||
float *fpoin[3][3];
|
||||
float val, r, g, b, al, lfilt[3][3];
|
||||
|
@ -1221,7 +1221,9 @@ static int panotestclip(Render *re, int do_pano, float v[4])
|
||||
* - shadow buffering (shadbuf.c)
|
||||
*/
|
||||
|
||||
void project_renderdata(Render *re, void (*projectfunc)(const float *, float mat[][4], float *), int do_pano, float xoffs, int UNUSED(do_buckets))
|
||||
void project_renderdata(Render *re,
|
||||
void (*projectfunc)(const float *, float mat[4][4], float *),
|
||||
int do_pano, float xoffs, int UNUSED(do_buckets))
|
||||
{
|
||||
ObjectRen *obr;
|
||||
HaloRen *har = NULL;
|
||||
@ -1308,7 +1310,7 @@ void project_renderdata(Render *re, void (*projectfunc)(const float *, float mat
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
ObjectInstanceRen *RE_addRenderInstance(Render *re, ObjectRen *obr, Object *ob, Object *par, int index, int psysindex, float mat[][4], int lay)
|
||||
ObjectInstanceRen *RE_addRenderInstance(Render *re, ObjectRen *obr, Object *ob, Object *par, int index, int psysindex, float mat[4][4], int lay)
|
||||
{
|
||||
ObjectInstanceRen *obi;
|
||||
float mat3[3][3];
|
||||
@ -1363,7 +1365,7 @@ void RE_makeRenderInstances(Render *re)
|
||||
re->instancetable= newlist;
|
||||
}
|
||||
|
||||
int clip_render_object(float boundbox[][3], float bounds[4], float winmat[][4])
|
||||
int clip_render_object(float boundbox[2][3], float bounds[4], float winmat[4][4])
|
||||
{
|
||||
float mat[4][4], vec[4];
|
||||
int a, fl, flag = -1;
|
||||
|
@ -476,13 +476,13 @@ static int compare_strand_segment(const void *poin1, const void *poin2)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void do_strand_point_project(float winmat[][4], ZSpan *zspan, float *co, float *hoco, float *zco)
|
||||
static void do_strand_point_project(float winmat[4][4], ZSpan *zspan, float *co, float *hoco, float *zco)
|
||||
{
|
||||
projectvert(co, winmat, hoco);
|
||||
hoco_to_zco(zspan, zco, hoco);
|
||||
}
|
||||
|
||||
static void strand_project_point(float winmat[][4], float winx, float winy, StrandPoint *spoint)
|
||||
static void strand_project_point(float winmat[4][4], float winx, float winy, StrandPoint *spoint)
|
||||
{
|
||||
float div;
|
||||
|
||||
@ -603,7 +603,7 @@ static void do_strand_fillac(void *handle, int x, int y, float u, float v, float
|
||||
}
|
||||
|
||||
/* width is calculated in hoco space, to ensure strands are visible */
|
||||
static int strand_test_clip(float winmat[][4], ZSpan *UNUSED(zspan), float *bounds, float *co, float *zcomp, float widthx, float widthy)
|
||||
static int strand_test_clip(float winmat[4][4], ZSpan *UNUSED(zspan), float *bounds, float *co, float *zcomp, float widthx, float widthy)
|
||||
{
|
||||
float hoco[4];
|
||||
int clipflag= 0;
|
||||
@ -663,7 +663,7 @@ static void do_scanconvert_strand(Render *UNUSED(re), StrandPart *spart, ZSpan *
|
||||
zspan_scanconvert_strand(zspan, spart, jco1, jco3, jco4, do_strand_fillac);
|
||||
}
|
||||
|
||||
static void strand_render(Render *re, StrandSegment *sseg, float winmat[][4], StrandPart *spart, ZSpan *zspan, int totzspan, StrandPoint *p1, StrandPoint *p2)
|
||||
static void strand_render(Render *re, StrandSegment *sseg, float winmat[4][4], StrandPart *spart, ZSpan *zspan, int totzspan, StrandPoint *p1, StrandPoint *p2)
|
||||
{
|
||||
if (spart) {
|
||||
float t= p2->t;
|
||||
@ -696,7 +696,7 @@ static void strand_render(Render *re, StrandSegment *sseg, float winmat[][4], St
|
||||
}
|
||||
}
|
||||
|
||||
static int strand_segment_recursive(Render *re, float winmat[][4], StrandPart *spart, ZSpan *zspan, int totzspan, StrandSegment *sseg, StrandPoint *p1, StrandPoint *p2, int depth)
|
||||
static int strand_segment_recursive(Render *re, float winmat[4][4], StrandPart *spart, ZSpan *zspan, int totzspan, StrandSegment *sseg, StrandPoint *p1, StrandPoint *p2, int depth)
|
||||
{
|
||||
StrandPoint p;
|
||||
StrandBuffer *buffer= sseg->buffer;
|
||||
@ -745,7 +745,7 @@ static int strand_segment_recursive(Render *re, float winmat[][4], StrandPart *s
|
||||
return 1;
|
||||
}
|
||||
|
||||
void render_strand_segment(Render *re, float winmat[][4], StrandPart *spart, ZSpan *zspan, int totzspan, StrandSegment *sseg)
|
||||
void render_strand_segment(Render *re, float winmat[4][4], StrandPart *spart, ZSpan *zspan, int totzspan, StrandSegment *sseg)
|
||||
{
|
||||
StrandBuffer *buffer= sseg->buffer;
|
||||
StrandPoint *p1= &sseg->point1;
|
||||
@ -783,7 +783,7 @@ void render_strand_segment(Render *re, float winmat[][4], StrandPart *spart, ZSp
|
||||
}
|
||||
|
||||
/* render call to fill in strands */
|
||||
int zbuffer_strands_abuf(Render *re, RenderPart *pa, APixstrand *apixbuf, ListBase *apsmbase, unsigned int lay, int UNUSED(negzmask), float winmat[][4], int winx, int winy, int samples, float (*jit)[2], float clipcrop, int shadow, StrandShadeCache *cache)
|
||||
int zbuffer_strands_abuf(Render *re, RenderPart *pa, APixstrand *apixbuf, ListBase *apsmbase, unsigned int lay, int UNUSED(negzmask), float winmat[4][4], int winx, int winy, int samples, float (*jit)[2], float clipcrop, int shadow, StrandShadeCache *cache)
|
||||
{
|
||||
ObjectRen *obr;
|
||||
ObjectInstanceRen *obi;
|
||||
@ -976,7 +976,7 @@ int zbuffer_strands_abuf(Render *re, RenderPart *pa, APixstrand *apixbuf, ListBa
|
||||
|
||||
/* *************** */
|
||||
|
||||
StrandSurface *cache_strand_surface(Render *re, ObjectRen *obr, DerivedMesh *dm, float mat[][4], int timeoffset)
|
||||
StrandSurface *cache_strand_surface(Render *re, ObjectRen *obr, DerivedMesh *dm, float mat[4][4], int timeoffset)
|
||||
{
|
||||
StrandSurface *mesh;
|
||||
MFace *mface;
|
||||
|
@ -1708,7 +1708,7 @@ static void makevertpyra(float *vez, float *lambda, float **trias, float *v1, fl
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
void projectverto(const float v1[3], float winmat[][4], float adr[4])
|
||||
void projectverto(const float v1[3], float winmat[4][4], float adr[4])
|
||||
{
|
||||
/* calcs homogenic coord of vertex v1 */
|
||||
float x, y, z;
|
||||
@ -1726,7 +1726,7 @@ void projectverto(const float v1[3], float winmat[][4], float adr[4])
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
void projectvert(const float v1[3], float winmat[][4], float adr[4])
|
||||
void projectvert(const float v1[3], float winmat[4][4], float adr[4])
|
||||
{
|
||||
/* calcs homogenic coord of vertex v1 */
|
||||
float x, y, z;
|
||||
@ -1761,7 +1761,7 @@ static void zbuf_project_cache_clear(ZbufProjectCache *cache, int size)
|
||||
cache[i].index= -1;
|
||||
}
|
||||
|
||||
static int zbuf_shadow_project(ZbufProjectCache *cache, int index, float winmat[][4], float *co, float *ho)
|
||||
static int zbuf_shadow_project(ZbufProjectCache *cache, int index, float winmat[4][4], float *co, float *ho)
|
||||
{
|
||||
int cindex= index & 255;
|
||||
|
||||
@ -1790,7 +1790,7 @@ static void zbuffer_part_bounds(int winx, int winy, RenderPart *pa, float *bound
|
||||
bounds[3]= (2*pa->disprect.ymax - winy+1)/(float)winy;
|
||||
}
|
||||
|
||||
static int zbuf_part_project(ZbufProjectCache *cache, int index, float winmat[][4], float *bounds, float *co, float *ho)
|
||||
static int zbuf_part_project(ZbufProjectCache *cache, int index, float winmat[4][4], float *bounds, float *co, float *ho)
|
||||
{
|
||||
float vec[3];
|
||||
int cindex= index & 255;
|
||||
@ -1819,7 +1819,7 @@ static int zbuf_part_project(ZbufProjectCache *cache, int index, float winmat[][
|
||||
}
|
||||
}
|
||||
|
||||
void zbuf_render_project(float winmat[][4], const float co[3], float ho[4])
|
||||
void zbuf_render_project(float winmat[4][4], const float co[3], float ho[4])
|
||||
{
|
||||
float vec[3];
|
||||
|
||||
@ -1827,7 +1827,7 @@ void zbuf_render_project(float winmat[][4], const float co[3], float ho[4])
|
||||
projectvert(vec, winmat, ho);
|
||||
}
|
||||
|
||||
void zbuf_make_winmat(Render *re, float winmat[][4])
|
||||
void zbuf_make_winmat(Render *re, float winmat[4][4])
|
||||
{
|
||||
if (re->r.mode & R_PANORAMA) {
|
||||
float panomat[4][4]= MAT4_UNITY;
|
||||
@ -2296,7 +2296,7 @@ void zbuffer_solid(RenderPart *pa, RenderLayer *rl, void(*fillfunc)(RenderPart*,
|
||||
}
|
||||
}
|
||||
|
||||
void zbuffer_shadow(Render *re, float winmat[][4], LampRen *lar, int *rectz, int size, float jitx, float jity)
|
||||
void zbuffer_shadow(Render *re, float winmat[4][4], LampRen *lar, int *rectz, int size, float jitx, float jity)
|
||||
{
|
||||
ZbufProjectCache cache[ZBUF_PROJECT_CACHE_SIZE];
|
||||
ZSpan zspan;
|
||||
@ -3261,7 +3261,7 @@ static void copyto_abufz(RenderPart *pa, int *arectz, int *rectmask, int sample)
|
||||
* Do accumulation z buffering.
|
||||
*/
|
||||
|
||||
static int zbuffer_abuf(Render *re, RenderPart *pa, APixstr *APixbuf, ListBase *apsmbase, unsigned int lay, int negzmask, float winmat[][4], int winx, int winy, int samples, float (*jit)[2], float UNUSED(clipcrop), int shadow)
|
||||
static int zbuffer_abuf(Render *re, RenderPart *pa, APixstr *APixbuf, ListBase *apsmbase, unsigned int lay, int negzmask, float winmat[4][4], int winx, int winy, int samples, float (*jit)[2], float UNUSED(clipcrop), int shadow)
|
||||
{
|
||||
ZbufProjectCache cache[ZBUF_PROJECT_CACHE_SIZE];
|
||||
ZSpan zspans[16], *zspan; /* MAX_OSA */
|
||||
@ -3459,7 +3459,7 @@ static int zbuffer_abuf_render(RenderPart *pa, APixstr *APixbuf, APixstrand *APi
|
||||
return doztra;
|
||||
}
|
||||
|
||||
void zbuffer_abuf_shadow(Render *re, LampRen *lar, float winmat[][4], APixstr *APixbuf, APixstrand *APixbufstrand, ListBase *apsmbase, int size, int samples, float (*jit)[2])
|
||||
void zbuffer_abuf_shadow(Render *re, LampRen *lar, float winmat[4][4], APixstr *APixbuf, APixstrand *APixbufstrand, ListBase *apsmbase, int size, int samples, float (*jit)[2])
|
||||
{
|
||||
RenderPart pa;
|
||||
int lay= -1;
|
||||
|
@ -131,7 +131,7 @@ void wm_subwindow_getorigin(wmWindow *win, int swinid, int *x, int *y)
|
||||
}
|
||||
}
|
||||
|
||||
void wm_subwindow_getmatrix(wmWindow *win, int swinid, float mat[][4])
|
||||
void wm_subwindow_getmatrix(wmWindow *win, int swinid, float mat[4][4])
|
||||
{
|
||||
wmSubWindow *swin = swin_from_swinid(win, swinid);
|
||||
|
||||
|
@ -46,7 +46,7 @@ void wm_subwindow_position(wmWindow *win, int swinid, rcti *winrct);
|
||||
|
||||
void wm_subwindow_getsize(wmWindow *win, int swinid, int *x, int *y);
|
||||
void wm_subwindow_getorigin(wmWindow *win, int swinid, int *x, int *y);
|
||||
void wm_subwindow_getmatrix(wmWindow *win, int swinid, float mat[][4]);
|
||||
void wm_subwindow_getmatrix(wmWindow *win, int swinid, float mat[4][4]);
|
||||
|
||||
unsigned int index_to_framebuffer(int index);
|
||||
|
||||
|
@ -176,7 +176,7 @@ int RE_RenderInProgress(struct Render *re) {return 0;}
|
||||
struct Scene *RE_GetScene(struct Render *re) {return (struct Scene *) NULL;}
|
||||
void RE_Database_Free(struct Render *re) {}
|
||||
void RE_FreeRender(struct Render *re) {}
|
||||
void RE_DataBase_GetView(struct Render *re, float mat[][4]) {}
|
||||
void RE_DataBase_GetView(struct Render *re, float mat[4][4]) {}
|
||||
int externtex(struct MTex *mtex, float *vec, float *tin, float *tr, float *tg, float *tb, float *ta) {return 0;}
|
||||
float texture_value_blend(float tex, float out, float fact, float facg, int blendtype, int flip) {return 0.0f;}
|
||||
void texture_rgb_blend(float *in, float *tex, float *out, float fact, float facg, int blendtype) {}
|
||||
@ -299,13 +299,13 @@ void ED_node_tree_update(struct SpaceNode *snode, struct Scene *scene) {}
|
||||
void ED_view3d_scene_layers_update(struct Main *bmain, struct Scene *scene) {}
|
||||
int ED_view3d_scene_layer_set(int lay, const int *values) {return 0;}
|
||||
void ED_view3d_quadview_update(struct ScrArea *sa, struct ARegion *ar) {}
|
||||
void ED_view3d_from_m4(float mat[][4], float ofs[3], float quat[4], float *dist) {}
|
||||
void ED_view3d_from_m4(float mat[4][4], float ofs[3], float quat[4], float *dist) {}
|
||||
struct BGpic *ED_view3D_background_image_new(struct View3D *v3d) {return (struct BGpic *) NULL;}
|
||||
void ED_view3D_background_image_remove(struct View3D *v3d, struct BGpic *bgpic) {}
|
||||
void ED_view3D_background_image_clear(struct View3D *v3d) {}
|
||||
void ED_view3d_update_viewmat(struct Scene *scene, struct View3D *v3d, struct ARegion *ar, float viewmat[][4], float winmat[][4]) {}
|
||||
void ED_view3d_update_viewmat(struct Scene *scene, struct View3D *v3d, struct ARegion *ar, float viewmat[4][4], float winmat[4][4]) {}
|
||||
float ED_view3d_grid_scale(struct Scene *scene, struct View3D *v3d, const char **grid_unit) {return 0.0f;}
|
||||
void view3d_apply_mat4(float mat[][4], float *ofs, float *quat, float *dist) {}
|
||||
void view3d_apply_mat4(float mat[4][4], float *ofs, float *quat, float *dist) {}
|
||||
int text_file_modified(struct Text *text) {return 0;}
|
||||
void ED_node_shader_default(struct Material *ma) {}
|
||||
void ED_screen_animation_timer_update(struct bContext *C, int redraws) {}
|
||||
|
@ -115,7 +115,7 @@ void KX_CameraActuator::Relink(CTR_Map<CTR_HashedPtr, void*> *obj_map)
|
||||
|
||||
/* copied from blender BLI_math ... don't know if there's an equivalent */
|
||||
|
||||
static void Kx_VecUpMat3(float vec[3], float mat[][3], short axis)
|
||||
static void Kx_VecUpMat3(float vec[3], float mat[3][3], short axis)
|
||||
{
|
||||
|
||||
// Construct a camera matrix s.t. the specified axis
|
||||
|
Loading…
Reference in New Issue
Block a user