[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12508] branches/harmonic-skeleton/blender : Initial commit for Harmonic Skeleton generation.
Martin Poirier
theeth at yahoo.com
Wed Nov 7 01:28:46 CET 2007
Revision: 12508
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12508
Author: theeth
Date: 2007-11-07 01:28:45 +0100 (Wed, 07 Nov 2007)
Log Message:
-----------
Initial commit for Harmonic Skeleton generation.
This is very much a work in progress commit to allow me to work outside of home.
While it does somewhat work, I wouldn't recommend anyone to use it.
Modified Paths:
--------------
branches/harmonic-skeleton/blender/source/blender/blenkernel/BKE_blender.h
branches/harmonic-skeleton/blender/source/blender/blenlib/intern/util.c
branches/harmonic-skeleton/blender/source/blender/blenloader/intern/readfile.c
branches/harmonic-skeleton/blender/source/blender/include/BIF_editarmature.h
branches/harmonic-skeleton/blender/source/blender/include/BSE_edit.h
branches/harmonic-skeleton/blender/source/blender/include/butspace.h
branches/harmonic-skeleton/blender/source/blender/makesdna/DNA_scene_types.h
branches/harmonic-skeleton/blender/source/blender/src/buttons_editing.c
branches/harmonic-skeleton/blender/source/blender/src/editarmature.c
Added Paths:
-----------
branches/harmonic-skeleton/blender/release/scripts/reeb.py
branches/harmonic-skeleton/blender/source/blender/include/reeb.h
branches/harmonic-skeleton/blender/source/blender/src/reeb.c
Added: branches/harmonic-skeleton/blender/release/scripts/reeb.py
===================================================================
--- branches/harmonic-skeleton/blender/release/scripts/reeb.py (rev 0)
+++ branches/harmonic-skeleton/blender/release/scripts/reeb.py 2007-11-07 00:28:45 UTC (rev 12508)
@@ -0,0 +1,168 @@
+#!BPY
+
+"""
+Name: 'Reeb graph import'
+Blender: 245
+Group: 'Import'
+Tooltip: 'Imports a reeb graph saved after skeleton generation'
+"""
+import Blender
+
+def name(count):
+ if count == -1:
+ return ""
+ else:
+ return "%05" % count
+
+def importGraph(count):
+ me = Blender.Mesh.New("graph%s" % name(count))
+
+ f = open("test%s.txt" % name(count), "r")
+
+ verts = []
+ edges = []
+ faces = []
+
+ i = 0
+ first = False
+
+ SIZE = 0.3
+ WITH_NODE = False
+
+ def addNode(v, s, verts, faces):
+ if WITH_NODE:
+ v1 = [v[0], v[1], v[2] + s]
+ i1 = len(verts)
+ verts.append(v1)
+ v2 = [v[0], v[1] + 0.959 * s, v[2] - 0.283 * s]
+ i2 = len(verts)
+ verts.append(v2)
+ v3 = [v[0] - 0.830 * s, v[1] - 0.479 * s, v[2] - 0.283 * s]
+ i3 = len(verts)
+ verts.append(v3)
+ v4 = [v[0] + 0.830 * s, v[1] - 0.479 * s, v[2] - 0.283 * s]
+ i4 = len(verts)
+ verts.append(v4)
+
+ faces.append([i1,i2,i3])
+ faces.append([i1,i3,i4])
+ faces.append([i2,i3,i4])
+ faces.append([i1,i2,i4])
+
+ return 4
+ else:
+ return 0
+
+ for line in f:
+ data = line.strip().split(" ")
+ if data[0] == "v1":
+ v = [float(x) for x in data[-3:]]
+ i += addNode(v, SIZE, verts, faces)
+ verts.append(v)
+ i += 1
+ elif data[0] == "v2":
+ pass
+ v = [float(x) for x in data[-3:]]
+ verts.append(v)
+ edges.append((i-1, i))
+ i += 1
+ i += addNode(v, SIZE, verts, faces)
+ elif data[0] == "b":
+ verts.append([float(x) for x in data[-3:]])
+ edges.append((i-1, i))
+ i += 1
+
+
+ me.verts.extend(verts)
+ me.edges.extend(edges)
+ me.faces.extend(faces)
+
+ scn = Blender.Scene.GetCurrent()
+
+ ob = scn.objects.new(me, "graph%s" % name(count))
+
+
+#for i in range(16):
+# importGraph(i)
+
+importGraph(-1)
+import Blender
+
+def name(count):
+ if count == -1:
+ return ""
+ else:
+ return "%05" % count
+
+def importGraph(count):
+ me = Blender.Mesh.New("graph%s" % name(count))
+
+ f = open("test%s.txt" % name(count), "r")
+
+ verts = []
+ edges = []
+ faces = []
+
+ i = 0
+ first = False
+
+ SIZE = 0.3
+ WITH_NODE = False
+
+ def addNode(v, s, verts, faces):
+ if WITH_NODE:
+ v1 = [v[0], v[1], v[2] + s]
+ i1 = len(verts)
+ verts.append(v1)
+ v2 = [v[0], v[1] + 0.959 * s, v[2] - 0.283 * s]
+ i2 = len(verts)
+ verts.append(v2)
+ v3 = [v[0] - 0.830 * s, v[1] - 0.479 * s, v[2] - 0.283 * s]
+ i3 = len(verts)
+ verts.append(v3)
+ v4 = [v[0] + 0.830 * s, v[1] - 0.479 * s, v[2] - 0.283 * s]
+ i4 = len(verts)
+ verts.append(v4)
+
+ faces.append([i1,i2,i3])
+ faces.append([i1,i3,i4])
+ faces.append([i2,i3,i4])
+ faces.append([i1,i2,i4])
+
+ return 4
+ else:
+ return 0
+
+ for line in f:
+ data = line.strip().split(" ")
+ if data[0] == "v1":
+ v = [float(x) for x in data[-3:]]
+ i += addNode(v, SIZE, verts, faces)
+ verts.append(v)
+ i += 1
+ elif data[0] == "v2":
+ pass
+ v = [float(x) for x in data[-3:]]
+ verts.append(v)
+ edges.append((i-1, i))
+ i += 1
+ i += addNode(v, SIZE, verts, faces)
+ elif data[0] == "b":
+ verts.append([float(x) for x in data[-3:]])
+ edges.append((i-1, i))
+ i += 1
+
+
+ me.verts.extend(verts)
+ me.edges.extend(edges)
+ me.faces.extend(faces)
+
+ scn = Blender.Scene.GetCurrent()
+
+ ob = scn.objects.new(me, "graph%s" % name(count))
+
+
+#for i in range(16):
+# importGraph(i)
+
+importGraph(-1)
\ No newline at end of file
Modified: branches/harmonic-skeleton/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- branches/harmonic-skeleton/blender/source/blender/blenkernel/BKE_blender.h 2007-11-06 22:29:20 UTC (rev 12507)
+++ branches/harmonic-skeleton/blender/source/blender/blenkernel/BKE_blender.h 2007-11-07 00:28:45 UTC (rev 12508)
@@ -44,7 +44,7 @@
struct MemFile;
#define BLENDER_VERSION 245
-#define BLENDER_SUBVERSION 7
+#define BLENDER_SUBVERSION 8
#define BLENDER_MINVERSION 240
#define BLENDER_MINSUBVERSION 0
Modified: branches/harmonic-skeleton/blender/source/blender/blenlib/intern/util.c
===================================================================
--- branches/harmonic-skeleton/blender/source/blender/blenlib/intern/util.c 2007-11-06 22:29:20 UTC (rev 12507)
+++ branches/harmonic-skeleton/blender/source/blender/blenlib/intern/util.c 2007-11-07 00:28:45 UTC (rev 12508)
@@ -324,9 +324,10 @@
if (listbase->first != listbase->last)
{
- for( previous = listbase->first, current = previous->next; current; previous = current, current = next )
+ for( previous = listbase->first, current = previous->next; current; current = next )
{
next = current->next;
+ previous = current->prev;
BLI_remlink(listbase, current);
@@ -335,14 +336,7 @@
previous = previous->prev;
}
- if (previous == NULL)
- {
- BLI_addhead(listbase, current);
- }
- else
- {
- BLI_insertlinkafter(listbase, previous, current);
- }
+ BLI_insertlinkafter(listbase, previous, current);
}
}
}
Modified: branches/harmonic-skeleton/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/harmonic-skeleton/blender/source/blender/blenloader/intern/readfile.c 2007-11-06 22:29:20 UTC (rev 12507)
+++ branches/harmonic-skeleton/blender/source/blender/blenloader/intern/readfile.c 2007-11-07 00:28:45 UTC (rev 12508)
@@ -6599,6 +6599,7 @@
}
}
if(main->versionfile <= 245) {
+ Scene *sce;
bScreen *sc;
Object *ob;
Image *ima;
@@ -6767,6 +6768,19 @@
}
}
+ if (main->versionfile < 245 || main->subversionfile < 8)
+ {
+ /* initialize skeleton generation toolsettings */
+ for(sce=main->scene.first; sce; sce = sce->id.next)
+ {
+ sce->toolsettings->skgen_resolution = 50;
+ sce->toolsettings->skgen_threshold_internal = 0.01f;
+ sce->toolsettings->skgen_threshold_external = 0.01f;
+ sce->toolsettings->skgen_threshold_angle = 45.0f;
+ sce->toolsettings->skgen_threshold_length = 1.3f;
+ sce->toolsettings->skgen_options = SKGEN_FILTER_INTERNAL|SKGEN_FILTER_EXTERNAL|SKGEN_REPOSITION|SKGEN_CUT_LENGTH|SKGEN_CUT_ANGLE;
+ }
+ }
}
if ((main->versionfile < 245) || (main->versionfile == 245 && main->subversionfile < 2)) {
Modified: branches/harmonic-skeleton/blender/source/blender/include/BIF_editarmature.h
===================================================================
--- branches/harmonic-skeleton/blender/source/blender/include/BIF_editarmature.h 2007-11-06 22:29:20 UTC (rev 12507)
+++ branches/harmonic-skeleton/blender/source/blender/include/BIF_editarmature.h 2007-11-07 00:28:45 UTC (rev 12508)
@@ -37,6 +37,7 @@
struct Bone;
struct bArmature;
struct ListBase;
+struct ReebGraph;
typedef struct EditBone
{
@@ -78,6 +79,8 @@
void apply_rot_armature (struct Object *ob, float mat[3][3]);
void docenter_armature (struct Object *ob, int centermode);
+void generateSkeletonFromReebGraph(struct ReebGraph *rg);
+
void clear_armature(struct Object *ob, char mode);
void delete_armature(void);
@@ -117,8 +120,8 @@
void hide_unselected_pose_bones(void);
void show_all_pose_bones(void);
-int bone_looper(Object *ob, struct Bone *bone, void *data,
- int (*bone_func)(Object *, struct Bone *, void *));
+int bone_looper(struct Object *ob, struct Bone *bone, void *data,
+ int (*bone_func)(struct Object *, struct Bone *, void *));
void undo_push_armature(char *name);
void armature_bone_rename(struct bArmature *arm, char *oldname, char *newname);
@@ -140,3 +143,4 @@
#endif
+
Modified: branches/harmonic-skeleton/blender/source/blender/include/BSE_edit.h
===================================================================
--- branches/harmonic-skeleton/blender/source/blender/include/BSE_edit.h 2007-11-06 22:29:20 UTC (rev 12507)
+++ branches/harmonic-skeleton/blender/source/blender/include/BSE_edit.h 2007-11-07 00:28:45 UTC (rev 12508)
@@ -51,5 +51,8 @@
void snap_curs_to_sel(void);
void snap_to_center(void);
+void generateSkeleton(void);
+
#endif /* BSE_EDIT_H */
+
Modified: branches/harmonic-skeleton/blender/source/blender/include/butspace.h
===================================================================
--- branches/harmonic-skeleton/blender/source/blender/include/butspace.h 2007-11-06 22:29:20 UTC (rev 12507)
+++ branches/harmonic-skeleton/blender/source/blender/include/butspace.h 2007-11-07 00:28:45 UTC (rev 12508)
@@ -413,6 +413,8 @@
#define B_SETTFACE_RND 2082
#define B_SETMCOL_RND 2083
+#define B_GEN_SKELETON 2090
+
/* *********************** */
#define B_VGROUPBUTS 2100
@@ -721,3 +723,4 @@
#endif
+
Added: branches/harmonic-skeleton/blender/source/blender/include/reeb.h
===================================================================
--- branches/harmonic-skeleton/blender/source/blender/include/reeb.h (rev 0)
+++ branches/harmonic-skeleton/blender/source/blender/include/reeb.h 2007-11-07 00:28:45 UTC (rev 12508)
@@ -0,0 +1,84 @@
+/**
+ * $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. The Blender
+ * Foundation also sells licenses for use in proprietary software under
+ * the Blender License. See http://www.blender.org/BL/ for information
+ * about this.
+ *
+ * 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 *****
+ */
+
+#ifndef REEB_H_
+#define REEB_H_
+
+#include "DNA_listBase.h"
+
+struct EdgeHash;
+struct ReebArc;
+struct ReebEdge;
+struct ReebNode;
+
+typedef struct ReebGraph {
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list