[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29110] branches/branch-farsthary: Unlimited clay commit:
Raul Fernandez Hernandez
farsthary at gmail.com
Mon May 31 22:48:22 CEST 2010
Revision: 29110
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29110
Author: farsthary
Date: 2010-05-31 22:48:22 +0200 (Mon, 31 May 2010)
Log Message:
-----------
Unlimited clay commit:
added the dynamic adaptive subdivision for the sculpting module, this feature allows to add detail as needed in a dynamic way while the user sculpts.
It basically expose mesh tools to the sculpt module allowing to modify the underlying mesh on the fly.
Modified Paths:
--------------
branches/branch-farsthary/release/scripts/ui/space_view3d_toolbar.py
branches/branch-farsthary/source/blender/blenkernel/BKE_paint.h
branches/branch-farsthary/source/blender/blenkernel/intern/brush.c
branches/branch-farsthary/source/blender/blenkernel/intern/object.c
branches/branch-farsthary/source/blender/editors/include/ED_mesh.h
branches/branch-farsthary/source/blender/editors/mesh/mesh_intern.h
branches/branch-farsthary/source/blender/editors/sculpt_paint/sculpt.c
branches/branch-farsthary/source/blender/makesdna/DNA_brush_types.h
branches/branch-farsthary/source/blender/makesdna/DNA_scene_types.h
branches/branch-farsthary/source/blender/makesrna/intern/rna_brush.c
Modified: branches/branch-farsthary/release/scripts/ui/space_view3d_toolbar.py
===================================================================
--- branches/branch-farsthary/release/scripts/ui/space_view3d_toolbar.py 2010-05-31 20:23:57 UTC (rev 29109)
+++ branches/branch-farsthary/release/scripts/ui/space_view3d_toolbar.py 2010-05-31 20:48:22 UTC (rev 29110)
@@ -547,7 +547,7 @@
col.separator()
row = col.row(align=True)
- row.prop(brush, "size", slider=True)
+ row.prop(brush, "size", slider=True)
if brush.sculpt_tool != 'GRAB':
row.prop(brush, "use_size_pressure", toggle=True, text="")
@@ -559,16 +559,15 @@
# XXX - TODO
#row = col.row(align=True)
#row.prop(brush, "jitter", slider=True)
- #row.prop(brush, "use_jitter_pressure", toggle=True, text="")
-
+ #row.prop(brush, "use_jitter_pressure", toggle=True, text="")
col = layout.column()
if brush.sculpt_tool in ('DRAW', 'PINCH', 'INFLATE', 'LAYER', 'CLAY'):
col.row().prop(brush, "direction", expand=True)
if brush.sculpt_tool in ('DRAW', 'INFLATE', 'LAYER'):
- col.prop(brush, "use_accumulate")
-
+ col.prop(brush, "use_accumulate")
+
if brush.sculpt_tool == 'LAYER':
ob = context.sculpt_object
do_persistent = True
@@ -581,6 +580,10 @@
if do_persistent:
col.prop(brush, "use_persistent")
col.operator("sculpt.set_persistent_base")
+
+ col.prop(brush,"use_dynamic_subdiv")
+ if brush.use_dynamic_subdiv ==True:
+ col.prop(brush,"detail",slider=True)
# Texture Paint Mode #
Modified: branches/branch-farsthary/source/blender/blenkernel/BKE_paint.h
===================================================================
--- branches/branch-farsthary/source/blender/blenkernel/BKE_paint.h 2010-05-31 20:23:57 UTC (rev 29109)
+++ branches/branch-farsthary/source/blender/blenkernel/BKE_paint.h 2010-05-31 20:48:22 UTC (rev 29110)
@@ -72,6 +72,9 @@
struct Object *ob;
struct KeyBlock *kb, *refkb;
+ struct Scene *scene; //Mio
+ struct EditMesh *em; //Mio
+
/* Mesh connectivity */
struct ListBase *fmap;
Modified: branches/branch-farsthary/source/blender/blenkernel/intern/brush.c
===================================================================
--- branches/branch-farsthary/source/blender/blenkernel/intern/brush.c 2010-05-31 20:23:57 UTC (rev 29109)
+++ branches/branch-farsthary/source/blender/blenkernel/intern/brush.c 2010-05-31 20:48:22 UTC (rev 29110)
@@ -83,6 +83,7 @@
brush->clone.alpha= 0.5;
brush->sculpt_tool = SCULPT_TOOL_DRAW;
brush->flag |= BRUSH_SPACE;
+ brush->detail = 0.25f;
brush_curve_preset(brush, CURVE_PRESET_SMOOTH);
Modified: branches/branch-farsthary/source/blender/blenkernel/intern/object.c
===================================================================
--- branches/branch-farsthary/source/blender/blenkernel/intern/object.c 2010-05-31 20:23:57 UTC (rev 29109)
+++ branches/branch-farsthary/source/blender/blenkernel/intern/object.c 2010-05-31 20:48:22 UTC (rev 29110)
@@ -243,8 +243,8 @@
MEM_freeN(ss->texcache);
if(ss->layer_co)
- MEM_freeN(ss->layer_co);
-
+ MEM_freeN(ss->layer_co);
+
MEM_freeN(ss);
ob->sculpt = NULL;
Modified: branches/branch-farsthary/source/blender/editors/include/ED_mesh.h
===================================================================
--- branches/branch-farsthary/source/blender/editors/include/ED_mesh.h 2010-05-31 20:23:57 UTC (rev 29109)
+++ branches/branch-farsthary/source/blender/editors/include/ED_mesh.h 2010-05-31 20:48:22 UTC (rev 29110)
@@ -221,5 +221,134 @@
int ED_mesh_color_add(struct bContext *C, struct Scene *scene, struct Object *ob, struct Mesh *me);
int ED_mesh_color_remove(struct bContext *C, struct Object *ob, struct Mesh *me);
+//---ibli
+
+/* Internal for editmesh_xxxx.c functions */
+struct bContext;
+struct wmOperatorType;
+struct wmOperator;
+
+
+#define UVCOPY(t, s) memcpy(t, s, 2 * sizeof(float));
+
+/* ******************** editface.c */
+
+int edgetag_context_check(struct Scene *scene,struct EditEdge *eed);
+void edgetag_context_set(struct Scene *scene, struct EditEdge *eed, int val);
+int edgetag_shortest_path(struct Scene *scene,struct EditMesh *em,struct EditEdge *source,struct EditEdge *target);
+
+/* ******************* editmesh.c */
+
+extern void free_editvert(struct EditMesh *em, struct EditVert *eve);
+extern void free_editedge(struct EditMesh *em, struct EditEdge *eed);
+extern void free_editface(struct EditMesh *em, struct EditFace *efa);
+void free_editMesh(struct EditMesh *em);
+
+extern void free_vertlist(struct EditMesh *em, struct ListBase *edve);
+extern void free_edgelist(struct EditMesh *em,struct ListBase *lb);
+extern void free_facelist(struct EditMesh *em,struct ListBase *lb);
+
+extern void remedge(struct EditMesh *em,struct EditEdge *eed);
+
+extern struct EditVert *addvertlist(struct EditMesh *em, float *vec, struct EditVert *example);
+extern struct EditEdge *addedgelist(struct EditMesh *em, struct EditVert *v1, struct EditVert *v2, struct EditEdge *example);
+extern struct EditFace *addfacelist(struct EditMesh *em, struct EditVert *v1, struct EditVert *v2, struct EditVert *v3, struct EditVert *v4, struct EditFace *example, struct EditFace *exampleEdges);
+extern struct EditEdge *findedgelist(struct EditMesh *em, struct EditVert *v1, struct EditVert *v2);
+
+void em_setup_viewcontext(struct bContext *C, struct ViewContext *vc);
+
+/* ******************* editmesh_lib.c */
+void EM_stats_update(struct EditMesh *em);
+
+extern void EM_fgon_flags(struct EditMesh *em);
+extern void EM_hide_reset(struct EditMesh *em);
+
+extern int faceselectedOR(struct EditFace *efa, int flag);
+extern int faceselectedAND(struct EditFace *efa, int flag);
+
+void EM_remove_selection(struct EditMesh *em, void *data, int type);
+void EM_clear_flag_all(struct EditMesh *em, int flag);
+void EM_set_flag_all(struct EditMesh *em, int flag);
+void EM_set_flag_all_selectmode(struct EditMesh *em, int flag);
+
+void EM_data_interp_from_verts(struct EditMesh *em,struct EditVert *v1, struct EditVert *v2, struct EditVert *eve, float fac);
+void EM_data_interp_from_faces(struct EditMesh *em,struct EditFace *efa1,struct EditFace *efa2,struct EditFace *efan, int i1, int i2, int i3, int i4);
+
+int EM_nvertices_selected(struct EditMesh *em);
+int EM_nedges_selected(struct EditMesh *em);
+int EM_nfaces_selected(struct EditMesh *em);
+
+float EM_face_perimeter(struct EditFace *efa);
+
+void EM_store_selection(struct EditMesh *em, void *data, int type);
+
+extern struct EditFace *exist_face(struct EditMesh *em, struct EditVert *v1,struct EditVert *v2,struct EditVert *v3, struct EditVert *v4);
+extern void flipface(struct EditMesh *em, struct EditFace *efa); // flips for normal direction
+extern int compareface(struct EditFace *vl1,struct EditFace *vl2);
+
+/* flag for selection bits, *nor will be filled with normal for extrusion constraint */
+/* return value defines if such normal was set */
+extern short extrudeflag_face_indiv(struct EditMesh *em, short flag, float *nor);
+extern short extrudeflag_verts_indiv(struct EditMesh *em, short flag, float *nor);
+extern short extrudeflag_edges_indiv(struct EditMesh *em, short flag, float *nor);
+extern short extrudeflag_vert(struct Object *obedit,struct EditMesh *em, short flag, float *nor, int all);
+extern short extrudeflag(struct Object *obedit,struct EditMesh *em, short flag, float *nor, int all);
+
+extern void adduplicateflag(struct EditMesh *em, int flag);
+extern void delfaceflag(struct EditMesh *em, int flag);
+
+extern void rotateflag(struct EditMesh *em, short flag, float *cent, float rotmat[][3]);
+extern void translateflag(struct EditMesh *em, short flag, float *vec);
+
+extern int convex(float *v1, float *v2, float *v3, float *v4);
+
+extern struct EditFace *EM_face_from_faces(struct EditMesh *em, struct EditFace *efa1,struct EditFace *efa2, int i1, int i2, int i3, int i4);
+
+extern int EM_view3d_poll(struct bContext *C);
+
+/* ******************* editmesh_loop.c */
+
+#define LOOP_SELECT 1
+#define LOOP_CUT 2
+
+
+extern struct EditEdge *findnearestedge(struct ViewContext *vc, int *dist);
+extern void EM_automerge(struct Scene *scene,struct Object *obedit, int update);
+void editmesh_select_by_material(struct EditMesh *em, int index);
+void EM_recalc_normal_direction(struct EditMesh *em, int inside, int select); /* makes faces righthand turning */
+void EM_select_more(struct EditMesh *em);
+void selectconnected_mesh_all(struct EditMesh *em);
+void faceloop_select(struct EditMesh *em, struct EditEdge *startedge, int select);
+
+/**
+ * findnearestvert
+ *
+ * dist (in/out): minimal distance to the nearest and at the end, actual distance
+ * sel: selection bias
+ * if SELECT, selected vertice are given a 5 pixel bias to make them farter than unselect verts
+ * if 0, unselected vertice are given the bias
+ * strict: if 1, the vertice corresponding to the sel parameter are ignored and not just biased
+ */
+extern struct EditVert *findnearestvert(struct ViewContext *vc, int *dist, short sel, short strict);
+
+
+/* ******************* editmesh_tools.c */
+
+#define SUBDIV_SELECT_ORIG 0
+#define SUBDIV_SELECT_INNER 1
+#define SUBDIV_SELECT_INNER_SEL 2
+#define SUBDIV_SELECT_LOOPCUT 3
+
+/* edge subdivide corner cut types */
+#define SUBDIV_CORNER_PATH 0
+#define SUBDIV_CORNER_INNERVERT 1
+#define SUBDIV_CORNER_FAN 2
+
+
+
+void join_triangles(struct EditMesh *em);
+int removedoublesflag(struct EditMesh *em, short flag, short automerge, float limit); /* return amount */
+void esubdivideflag(struct Object *obedit,struct EditMesh *em, int flag, float smooth, float fractal, int beautify, int numcuts, int corner_pattern, int seltype);
+
#endif /* ED_MESH_H */
Modified: branches/branch-farsthary/source/blender/editors/mesh/mesh_intern.h
===================================================================
--- branches/branch-farsthary/source/blender/editors/mesh/mesh_intern.h 2010-05-31 20:23:57 UTC (rev 29109)
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list