Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/BKE_blender.h2
-rw-r--r--source/blender/blenkernel/intern/armature.c15
-rw-r--r--source/blender/blenkernel/intern/constraint.c3
-rw-r--r--source/blender/blenkernel/intern/subsurf_ccg.c5
4 files changed, 23 insertions, 2 deletions
diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h
index 13fd55d244f..84c92fef0af 100644
--- a/source/blender/blenkernel/BKE_blender.h
+++ b/source/blender/blenkernel/BKE_blender.h
@@ -43,7 +43,7 @@ extern "C" {
struct ListBase;
struct MemFile;
-#define BLENDER_VERSION 240
+#define BLENDER_VERSION 241
int BKE_read_file(char *dir, void *type_r);
int BKE_read_file_from_memory(char* filebuf, int filelength, void *type_r);
diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c
index 15116b390cc..f5d8edef167 100644
--- a/source/blender/blenkernel/intern/armature.c
+++ b/source/blender/blenkernel/intern/armature.c
@@ -809,7 +809,22 @@ void get_objectspace_bone_matrix (struct Bone* bone, float M_accumulatedMatrix[]
pose_mat(b)= arm_mat(b) * chan_mat(b)
*************************************************************************** */
+/* 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 *vec, float *roll) {
+ if (vec)
+ VecCopyf(vec, mat[1]);
+ if (roll) {
+ float vecmat[3][3], vecmatinv[3][3], rollmat[3][3];
+
+ vec_roll_to_mat3(mat[1], 0.0f, vecmat);
+ Mat3Inv(vecmatinv, vecmat);
+ Mat3MulMat3(rollmat, vecmatinv, mat);
+
+ *roll= atan2(rollmat[2][0], rollmat[2][2]);
+ }
+}
/* Calculates the rest matrix of a bone based
On its vector and a roll around that vector */
diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c
index db097b37339..7458a0230dd 100644
--- a/source/blender/blenkernel/intern/constraint.c
+++ b/source/blender/blenkernel/intern/constraint.c
@@ -383,6 +383,9 @@ Object *get_constraint_target(bConstraint *con, char **subtarget)
return (data->tar);
}
break;
+ default:
+ *subtarget= NULL;
+ break;
}
return NULL;
diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c
index 6c64a954b49..d0b741123b5 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -275,7 +275,7 @@ static int ss_sync_from_uv(CCGSubSurf *ss, CCGSubSurf *origss, Mesh *me, DispLis
vmap= make_uv_vert_map(mface, tface, totface, totvert, 0, limit);
if (!vmap)
return 0;
-
+
ccgSubSurf_initFullSync(ss);
/* use this to get consistent vert handles with different heap addresses */
@@ -283,6 +283,9 @@ static int ss_sync_from_uv(CCGSubSurf *ss, CCGSubSurf *origss, Mesh *me, DispLis
/* create vertices */
for (i=0; i<totvert; i++) {
+ if (!get_uv_map_vert(vmap, i))
+ continue;
+
for (v=get_uv_map_vert(vmap, i)->next; v; v=v->next)
if (v->separate)
break;