[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16339] branches/harmonic-skeleton/source/ blender/src/autoarmature.c: Couple of variables renames and logic inversion simplification

Martin Poirier theeth at yahoo.com
Tue Sep 2 22:33:32 CEST 2008


Revision: 16339
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16339
Author:   theeth
Date:     2008-09-02 22:33:32 +0200 (Tue, 02 Sep 2008)

Log Message:
-----------
Couple of variables renames and logic inversion simplification

Modified Paths:
--------------
    branches/harmonic-skeleton/source/blender/src/autoarmature.c

Modified: branches/harmonic-skeleton/source/blender/src/autoarmature.c
===================================================================
--- branches/harmonic-skeleton/source/blender/src/autoarmature.c	2008-09-02 18:34:54 UTC (rev 16338)
+++ branches/harmonic-skeleton/source/blender/src/autoarmature.c	2008-09-02 20:33:32 UTC (rev 16339)
@@ -168,7 +168,7 @@
 
 typedef struct MemoNode {
 	float	weight;
-	int		*indexes;
+	int		*positions;
 } MemoNode;
 
 typedef struct RetargetParam {
@@ -1711,7 +1711,7 @@
 {
 	if (size > 0)
 	{
-		memcpy(dst->indexes + 1, src->indexes, size * sizeof(int));
+		memcpy(dst->positions + 1, src->positions, size * sizeof(int));
 	}
 }
 
@@ -1720,10 +1720,10 @@
 	return joints_done * nb_positions * nb_positions + current * nb_positions + previous;
 }
 
-static MemoNode * minProblem(MemoNode *table, ReebArcIterator *iter, float **vec_cache, int nb_joints, int nb_positions, int previous, int current, RigEdge *edge, int joints_done)
+static MemoNode * solveJoints(MemoNode *table, ReebArcIterator *iter, float **vec_cache, int nb_joints, int nb_positions, int previous, int current, RigEdge *edge, int joints_left)
 {
 	MemoNode *node;
-	int index = indexMemoNode(nb_positions, previous, current, joints_done);
+	int index = indexMemoNode(nb_positions, previous, current, joints_left);
 	
 	node = table + index;
 	
@@ -1731,7 +1731,7 @@
 	{
 		return node;
 	}
-	else if (joints_done == nb_joints)
+	else if (joints_left == 0)
 	{
 		float *vec1 = vec_cache[current];
 		float *vec2 = vec_cache[nb_positions + 1];
@@ -1749,7 +1749,7 @@
 		int min_next;
 		int next;
 		
-		for (next = current + 1; next < nb_positions - joints_done; next++)
+		for (next = current + 1; next <= nb_positions - (joints_left - 1); next++)
 		{
 			MemoNode *next_node;
 			float *vec2 = vec_cache[next];
@@ -1764,7 +1764,7 @@
 			}
 			
 			/* add node weight */
-			next_node = minProblem(table, iter, vec_cache, nb_joints, nb_positions, current, next, edge->next, joints_done + 1);
+			next_node = solveJoints(table, iter, vec_cache, nb_joints, nb_positions, current, next, edge->next, joints_left - 1);
 			weight += next_node->weight;
 			
 			if (min_node == NULL || weight < min_weight)
@@ -1777,15 +1777,15 @@
 		
 		if (min_node)
 		{
-			node->indexes = MEM_callocN(sizeof(int) * (nb_joints - joints_done), "Memoization indexes array");
+			node->positions = MEM_callocN(sizeof(int) * joints_left, "Memoization indexes array");
 			node->weight = min_weight;
-			copyMemoNode(node, min_node, nb_joints - (joints_done + 1));
-			node->indexes[0] = min_next;
+			copyMemoNode(node, min_node, joints_left - 1);
+			node->positions[0] = min_next;
 			return node;
 		}
 		else
 		{
-			node->indexes = MEM_callocN(sizeof(int) * nb_joints - nb_joints, "Memoization indexes array");
+			node->positions = MEM_callocN(sizeof(int) * joints_left, "Memoization indexes array");
 			node->weight = MAX_COST;
 			return node;
 		}
@@ -1870,6 +1870,7 @@
 		int nb_positions = earc->bcount;
 		int nb_memo_nodes = nb_positions * nb_positions * (nb_joints + 1);
 		MemoNode *table = MEM_callocN(nb_memo_nodes * sizeof(MemoNode), "memoization table");
+		MemoNode *result;
 		float **positions_cache = MEM_callocN(sizeof(float*) * (nb_positions + 2), "positions cache");
 		int i;
 		
@@ -1884,16 +1885,16 @@
 			positions_cache[i] = bucket->p;
 		}
 
-		minProblem(table, &iter, positions_cache, nb_joints, earc->bcount, 0, 0, iarc->edges.first, 0);
+		result = solveJoints(table, &iter, positions_cache, nb_joints, earc->bcount, 0, 0, iarc->edges.first, nb_joints);
 		
-		min_cost = table[0].weight;
-		memcpy(best_positions, table[0].indexes, sizeof(int) * nb_joints);
+		min_cost = result->weight;
+		memcpy(best_positions, result->positions, sizeof(int) * nb_joints);
 		
 		for ( i = 0; i < nb_memo_nodes; i++)
 		{
-			if (table[i].indexes)
+			if (table[i].positions)
 			{
-				MEM_freeN(table[i].indexes);
+				MEM_freeN(table[i].positions);
 			}
 		}
 		





More information about the Bf-blender-cvs mailing list