Revision: 17223
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17223
Author:   theeth
Date:     2008-10-29 22:49:58 +0100 (Wed, 29 Oct 2008)

Log Message:
-----------
moving stuff home. first draft for template retargetting

Modified Paths:
--------------
    branches/etch-a-ton/source/blender/src/editarmature_sketch.c

Added Paths:
-----------
    branches/etch-a-ton/source/blender/include/BIF_retarget.h
    branches/etch-a-ton/source/blender/src/editarmature_retarget.c

Removed Paths:
-------------
    branches/etch-a-ton/source/blender/src/autoarmature.c

Added: branches/etch-a-ton/source/blender/include/BIF_retarget.h
===================================================================
--- branches/etch-a-ton/source/blender/include/BIF_retarget.h                   
        (rev 0)
+++ branches/etch-a-ton/source/blender/include/BIF_retarget.h   2008-10-29 
21:49:58 UTC (rev 17223)
@@ -0,0 +1,133 @@
+/**
+ * $Id:  $
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef BIF_RETARGET_H
+#define BIF_RETARGET_H
+
+#include "DNA_listBase.h"
+
+#include "BLI_graph.h"
+#include "BLI_ghash.h"
+#include "BLI_threads.h"
+
+#include "reeb.h"
+
+struct EditBone;
+
+struct RigJoint;
+struct RigGraph;
+struct RigNode;
+struct RigArc;
+struct RigEdge;
+
+#define USE_THREADS
+
+typedef struct RigGraph {
+       ListBase        arcs;
+       ListBase        nodes;
+       ListBase        controls;
+
+       ListBase*       editbones;
+       
+       float length;
+       
+       FreeArc                 free_arc;
+       FreeNode                free_node;
+       RadialSymmetry  radial_symmetry;
+       AxialSymmetry   axial_symmetry;
+       /*********************************/
+
+       struct RigNode *head;
+       ReebGraph *link_mesh;
+       
+       
+       struct ThreadedWorker *worker;
+       
+       GHash *bones_map;       /* map of editbones by name */
+       GHash *controls_map;    /* map of rigcontrols by bone pointer */
+       
+       Object *ob;
+} RigGraph;
+
+typedef struct RigNode {
+       void *next, *prev;
+       float p[3];
+       int flag;
+
+       int degree;
+       struct BArc **arcs;
+
+       int subgraph_index;
+
+       int symmetry_level;
+       int symmetry_flag;
+       float symmetry_axis[3];
+       /*********************************/
+
+       ReebNode *link_mesh;
+} RigNode;
+
+typedef struct RigArc {
+       void *next, *prev;
+       RigNode *head, *tail;
+       int flag;
+
+       float length;
+
+       int symmetry_level;
+       int symmetry_group;
+       int symmetry_flag;
+       /*********************************/
+       
+       ListBase edges;
+       int count;
+       ReebArc *link_mesh;
+} RigArc;
+
+typedef struct RigEdge {
+       struct RigEdge *next, *prev;
+       float head[3], tail[3];
+       float length;
+       float angle;
+       EditBone *bone;
+       float up_axis[3];
+} RigEdge;
+
+/* Control flags */
+#define RIG_CTRL_DONE                  1
+#define RIG_CTRL_PARENT_DEFORM 2
+#define RIG_CTRL_FIT_ROOT              4
+#define RIG_CTRL_FIT_BONE              8
+
+typedef struct RigControl {
+       struct RigControl *next, *prev;
+       float head[3], tail[3];
+       EditBone *bone;
+       EditBone *link;
+       float   up_axis[3];
+       float   offset[3];
+       int             flag;
+} RigControl;
+
+void BIF_retargetArc(ReebArc *earc);
+
+#endif /* BIF_RETARGET_H */

Deleted: branches/etch-a-ton/source/blender/src/autoarmature.c
===================================================================
--- branches/etch-a-ton/source/blender/src/autoarmature.c       2008-10-29 
19:14:59 UTC (rev 17222)
+++ branches/etch-a-ton/source/blender/src/autoarmature.c       2008-10-29 
21:49:58 UTC (rev 17223)
@@ -1,2968 +0,0 @@
-/**
- * $Id:
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- *
- * Contributor(s): Martin Poirier
- *
- * ***** END GPL LICENSE BLOCK *****
- * autoarmature.c: Interface for automagically manipulating armature 
(retarget, created, ...)
- */
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h> 
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "MEM_guardedalloc.h"
-
-#include "PIL_time.h"
-
-#include "DNA_ID.h"
-#include "DNA_action_types.h"
-#include "DNA_armature_types.h"
-#include "DNA_constraint_types.h"
-#include "DNA_mesh_types.h"
-#include "DNA_meshdata_types.h"
-#include "DNA_object_types.h"
-#include "DNA_scene_types.h"
-#include "DNA_view3d_types.h"
-
-#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
-#include "BLI_editVert.h"
-#include "BLI_ghash.h"
-#include "BLI_graph.h"
-#include "BLI_rand.h"
-#include "BLI_threads.h"
-
-#include "BDR_editobject.h"
-
-#include "BKE_global.h"
-#include "BKE_utildefines.h"
-#include "BKE_constraint.h"
-#include "BKE_armature.h"
-
-#include "BIF_editarmature.h"
-#include "BIF_space.h"
-
-#include "PIL_time.h"
-
-#include "mydevice.h"
-#include "reeb.h" // FIX ME
-#include "blendef.h"
-
-/************ RIG RETARGET DATA STRUCTURES ***************/
-
-struct RigJoint;
-struct RigGraph;
-struct RigNode;
-struct RigArc;
-struct RigEdge;
-
-//#define USE_THREADS
-
-typedef struct RigGraph {
-       ListBase        arcs;
-       ListBase        nodes;
-       
-       float length;
-       
-       FreeArc                 free_arc;
-       FreeNode                free_node;
-       RadialSymmetry  radial_symmetry;
-       AxialSymmetry   axial_symmetry;
-       /*********************************/
-
-       struct RigNode *head;
-       ReebGraph *link_mesh;
-       
-       ListBase editbones;
-       
-       ListBase controls;
-       struct ThreadedWorker *worker;
-       
-       GHash *bones_map;       /* map of editbones by name */
-       GHash *controls_map;    /* map of rigcontrols by bone pointer */
-       
-       Object *ob;
-} RigGraph;
-
-typedef struct RigNode {
-       void *next, *prev;
-       float p[3];
-       int flag;
-
-       int degree;
-       struct BArc **arcs;
-
-       int subgraph_index;
-
-       int symmetry_level;
-       int symmetry_flag;
-       float symmetry_axis[3];
-       /*********************************/
-
-       ReebNode *link_mesh;
-} RigNode;
-
-typedef struct RigArc {
-       void *next, *prev;
-       RigNode *head, *tail;
-       int flag;
-
-       float length;
-
-       int symmetry_level;
-       int symmetry_group;
-       int symmetry_flag;
-       /*********************************/
-       
-       ListBase edges;
-       int count;
-       ReebArc *link_mesh;
-} RigArc;
-
-typedef struct RigEdge {
-       struct RigEdge *next, *prev;
-       float head[3], tail[3];
-       float length;
-       float angle;
-       EditBone *bone;
-       float up_axis[3];
-} RigEdge;
-
-/* Control flags */
-#define RIG_CTRL_DONE                  1
-#define RIG_CTRL_PARENT_DEFORM 2
-#define RIG_CTRL_FIT_ROOT              4
-#define RIG_CTRL_FIT_BONE              8
-
-typedef struct RigControl {
-       struct RigControl *next, *prev;
-       float head[3], tail[3];
-       EditBone *bone;
-       EditBone *link;
-       float   up_axis[3];
-       float   offset[3];
-       int             flag;
-} RigControl;
-
-typedef struct MemoNode {
-       float   weight;
-       int     next;
-} MemoNode;
-
-typedef struct RetargetParam {
-       RigGraph        *rigg;
-       RigArc          *iarc;
-       RigNode         *inode_start;
-} RetargetParam;
-
-typedef enum 
-{
-       RETARGET_LENGTH,
-       RETARGET_AGGRESSIVE
-} RetargetMode; 
-
-typedef enum
-{
-       METHOD_BRUTE_FORCE = 0,
-       METHOD_MEMOIZE = 1,
-       METHOD_ANNEALING = 2
-} RetargetMethod;
-
-typedef enum
-{
-       ARC_FREE = 0,
-       ARC_TAKEN = 1,
-       ARC_USED = 2
-} ArcUsageFlags;
-
-
-RigGraph *GLOBAL_RIGG = NULL;
-
-/*******************************************************************************************************/
-
-void *exec_retargetArctoArc(void *param);
-
-static void RIG_calculateEdgeAngle(RigEdge *edge_first, RigEdge *edge_second);
-
-/* two levels */
-#define SHAPE_LEVELS (SHAPE_RADIX * SHAPE_RADIX) 
-
-/*********************************** EDITBONE UTILS 
****************************************************/
-
-int countEditBoneChildren(ListBase *list, EditBone *parent)
-{
-       EditBone *ebone;
-       int count = 0;
-       
-       for (ebone = list->first; ebone; ebone = ebone->next)
-       {
-               if (ebone->parent == parent)
-               {
-                       count++;
-               }
-       }
-       
-       return count;
-}
-
-EditBone* nextEditBoneChild(ListBase *list, EditBone *parent, int n)
-{
-       EditBone *ebone;
-       
-       for (ebone = list->first; ebone; ebone = ebone->next)
-       {
-               if (ebone->parent == parent)
-               {
-                       if (n == 0)
-                       {
-                               return ebone;
-                       }
-                       n--;
-               }
-       }
-       
-       return NULL;
-}
-
-void getEditBoneRollUpAxis(EditBone *bone, float roll, float up_axis[3])
-{
-       float mat[3][3], nor[3];
-
-       VecSubf(nor, bone->tail, bone->head);
-       
-       vec_roll_to_mat3(nor, roll, mat);
-       VECCOPY(up_axis, mat[2]);
-}
-
-float getNewBoneRoll(EditBone *bone, float old_up_axis[3], float quat[4])
-{
-       float mat[3][3];
-       float nor[3], up_axis[3], new_up_axis[3], vec[3];
-       float roll;
-       
-       VECCOPY(new_up_axis, old_up_axis);
-       QuatMulVecf(quat, new_up_axis);
-
-       VecSubf(nor, bone->tail, bone->head);
-       
-       vec_roll_to_mat3(nor, 0, mat);
-       VECCOPY(up_axis, mat[2]);
-       
-       roll = NormalizedVecAngle2(new_up_axis, up_axis);
-       
-       Crossf(vec, up_axis, new_up_axis);
-       
-       if (Inpf(vec, nor) < 0)
-       {
-               roll = -roll;
-       }
-       
-       return roll;
-}
-
-/************************************ DESTRUCTORS 
******************************************************/
-
-void RIG_freeRigArc(BArc *arc)
-{
-       BLI_freelistN(&((RigArc*)arc)->edges);
-}
-
-void RIG_freeRigGraph(BGraph *rg)
-{
-       BNode *node;
-       BArc *arc;
-       
-#ifdef USE_THREADS
-       BLI_destroy_worker(((RigGraph*)rg)->worker);
-#endif
-       
-       REEB_freeGraph(((RigGraph*)rg)->link_mesh);
-       
-       for (arc = rg->arcs.first; arc; arc = arc->next)
-       {
-               RIG_freeRigArc(arc);
-       }
-       BLI_freelistN(&rg->arcs);
-       
-       for (node = rg->nodes.first; node; node = node->next)
-       {
-               BLI_freeNode(rg, (BNode*)node);
-       }
-       BLI_freelistN(&rg->nodes);
-       
-       BLI_freelistN(&((RigGraph*)rg)->controls);
-
-       BLI_ghash_free(((RigGraph*)rg)->bones_map, NULL, NULL);
-       BLI_ghash_free(((RigGraph*)rg)->controls_map, NULL, NULL);
-       
-       BLI_freelistN(&((RigGraph*)rg)->editbones);
-       
-       MEM_freeN(rg);
-}
-
-/************************************* ALLOCATORS 
******************************************************/
-
-static RigGraph *newRigGraph()
-{
-       RigGraph *rg;
-       int totthread;
-       
-       rg = MEM_callocN(sizeof(RigGraph), "rig graph");
-       
-       rg->head = NULL;
-       
-       rg->bones_map = BLI_ghash_new(BLI_ghashutil_strhash, 
BLI_ghashutil_strcmp);
-       rg->controls_map = BLI_ghash_new(BLI_ghashutil_strhash, 
BLI_ghashutil_strcmp);
-       
-       rg->free_arc = RIG_freeRigArc;
-       rg->free_node = NULL;
-       
-#ifdef USE_THREADS

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to