[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19047] branches/blender2.5/blender/source /blender: 2.5:

Brecht Van Lommel brecht at blender.org
Fri Feb 20 00:53:45 CET 2009


Revision: 19047
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19047
Author:   blendix
Date:     2009-02-20 00:53:40 +0100 (Fri, 20 Feb 2009)

Log Message:
-----------
2.5:
* Image painting back. 2d paint, 3d paint and projection, undo,
  pressure, repeating paint operations, etc should all work.
  Drawing cursor needs a bit of work, only gets shown when enabling
  texture paint mode now.

* Move sculpt, image paint, and vertex/weight paint into a single
  sculpt_paint module. Doesn't make much difference now, but nice
  to have it together for better integration and consistency in
  the future.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/Makefile
    branches/blender2.5/blender/source/blender/editors/SConscript
    branches/blender2.5/blender/source/blender/editors/include/ED_screen.h
    branches/blender2.5/blender/source/blender/editors/include/ED_sculpt.h
    branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h
    branches/blender2.5/blender/source/blender/editors/mesh/editface.c
    branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c
    branches/blender2.5/blender/source/blender/editors/sculpt_paint/Makefile
    branches/blender2.5/blender/source/blender/editors/sculpt_paint/SConscript
    branches/blender2.5/blender/source/blender/editors/space_api/spacetypes.c
    branches/blender2.5/blender/source/blender/editors/space_image/space_image.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/drawmesh.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_ops.c
    branches/blender2.5/blender/source/blender/editors/util/ed_util.c
    branches/blender2.5/blender/source/blender/editors/util/undo.c
    branches/blender2.5/blender/source/blender/editors/uvedit/Makefile
    branches/blender2.5/blender/source/blender/editors/uvedit/SConscript
    branches/blender2.5/blender/source/blender/makesdna/DNA_brush_types.h
    branches/blender2.5/blender/source/blender/makesdna/DNA_scene_types.h
    branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_brush.c
    branches/blender2.5/blender/source/blender/windowmanager/WM_types.h
    branches/blender2.5/blender/source/blender/windowmanager/wm_event_types.h

Added Paths:
-----------
    branches/blender2.5/blender/source/blender/editors/sculpt_paint/
    branches/blender2.5/blender/source/blender/editors/sculpt_paint/paint_image.c
    branches/blender2.5/blender/source/blender/editors/sculpt_paint/paint_intern.h
    branches/blender2.5/blender/source/blender/editors/sculpt_paint/paint_ops.c
    branches/blender2.5/blender/source/blender/editors/sculpt_paint/paint_utils.c
    branches/blender2.5/blender/source/blender/editors/sculpt_paint/paint_vertex.c
    branches/blender2.5/blender/source/blender/editors/sculpt_paint/sculpt_stroke.c

Removed Paths:
-------------
    branches/blender2.5/blender/source/blender/editors/sculpt/
    branches/blender2.5/blender/source/blender/editors/sculpt_paint/stroke.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/vpaint.c

Modified: branches/blender2.5/blender/source/blender/editors/Makefile
===================================================================
--- branches/blender2.5/blender/source/blender/editors/Makefile	2009-02-19 23:15:27 UTC (rev 19046)
+++ branches/blender2.5/blender/source/blender/editors/Makefile	2009-02-19 23:53:40 UTC (rev 19047)
@@ -29,6 +29,6 @@
 # Bounces make to subdirectories.
 
 SOURCEDIR = source/blender/editors
-DIRS = armature mesh animation object sculpt datafiles transform screen curve gpencil physics preview uvedit space_outliner space_time space_view3d interface util  space_api space_graph space_image space_node space_buttons space_info space_file space_sound space_action space_nla space_script space_text space_sequencer
+DIRS = armature mesh animation object sculpt_paint datafiles transform screen curve gpencil physics preview uvedit space_outliner space_time space_view3d interface util  space_api space_graph space_image space_node space_buttons space_info space_file space_sound space_action space_nla space_script space_text space_sequencer
 
 include nan_subdirs.mk

Modified: branches/blender2.5/blender/source/blender/editors/SConscript
===================================================================
--- branches/blender2.5/blender/source/blender/editors/SConscript	2009-02-19 23:15:27 UTC (rev 19046)
+++ branches/blender2.5/blender/source/blender/editors/SConscript	2009-02-19 23:53:40 UTC (rev 19047)
@@ -31,5 +31,5 @@
 			'space_sequencer/SConscript',
 			'transform/SConscript',
 			'screen/SConscript',
-			'sculpt/SConscript',
+			'sculpt_paint/SConscript',
 			'uvedit/SConscript'])

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_screen.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_screen.h	2009-02-19 23:15:27 UTC (rev 19046)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_screen.h	2009-02-19 23:53:40 UTC (rev 19047)
@@ -99,6 +99,7 @@
 int		ED_operator_screenactive(struct bContext *C);
 int		ED_operator_screen_mainwinactive(struct bContext *C);
 int		ED_operator_areaactive(struct bContext *C);
+int		ED_operator_regionactive(struct bContext *C);
 
 int		ED_operator_scene_editable(struct bContext *C);
 

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_sculpt.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_sculpt.h	2009-02-19 23:15:27 UTC (rev 19046)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_sculpt.h	2009-02-19 23:53:40 UTC (rev 19047)
@@ -31,7 +31,15 @@
 struct bContext;
 struct wmWindowManager;
 
+/* sculpt.c */
 void ED_operatortypes_sculpt(void);
-void ED_keymap_sculpt(wmWindowManager *wm);
+void ED_keymap_sculpt(struct wmWindowManager *wm);
 
+/* paint_ops.c */
+void ED_operatortypes_paint(void);
+
+/* paint_image.c */
+void undo_imagepaint_step(int step);
+void undo_imagepaint_clear(void);
+
 #endif

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h	2009-02-19 23:15:27 UTC (rev 19046)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h	2009-02-19 23:53:40 UTC (rev 19047)
@@ -112,6 +112,8 @@
 										void *handle, unsigned int (*indextest)(void *handle, unsigned int index));
 unsigned int view3d_sample_backbuf(struct ViewContext *vc, int x, int y);
 
+int view_autodist(struct Scene *scene, struct ARegion *ar, struct View3D *v3d, short *mval, float mouse_worldloc[3]);
+
 /* select */
 #define MAXPICKBUF      10000
 short view3d_opengl_select(struct ViewContext *vc, unsigned int *buffer, unsigned int bufsize, rcti *input);
@@ -119,6 +121,7 @@
 void view3d_set_viewcontext(struct bContext *C, struct ViewContext *vc);
 void view3d_operator_needs_opengl(const struct bContext *C);
 void view3d_get_view_aligned_coordinate(struct ViewContext *vc, float *fp, short mval[2]);
+void view3d_get_object_project_mat(struct RegionView3D *v3d, struct Object *ob, float pmat[4][4], float vmat[4][4]);;
 
 /* XXX should move to arithb.c */
 int edge_inside_circle(short centx, short centy, short rad, short x1, short y1, short x2, short y2);
@@ -126,6 +129,5 @@
 /* modes */
 void ED_view3d_exit_paint_modes(struct bContext *C);
 
-
 #endif /* ED_VIEW3D_H */
 

Modified: branches/blender2.5/blender/source/blender/editors/mesh/editface.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/editface.c	2009-02-19 23:15:27 UTC (rev 19046)
+++ branches/blender2.5/blender/source/blender/editors/mesh/editface.c	2009-02-19 23:53:40 UTC (rev 19047)
@@ -144,16 +144,6 @@
 	return NULL;
 }
 
-static void make_tfaces(Object *ob) 
-{
-	Mesh *me= ob->data;
-	
-	if(!me->mtface) {
-		me->mtface= CustomData_add_layer(&me->fdata, CD_MTFACE, CD_DEFAULT,
-						 NULL, me->totface);
-	}
-}
-
 void reveal_tface(Scene *scene)
 {
 	Mesh *me;
@@ -734,155 +724,4 @@
 #endif
 }
 
-/* Texture Paint */
 
-void set_texturepaint(Scene *scene) /* toggle */
-{
-	Object *ob = OBACT;
-	Mesh *me = 0;
-	
-	if(ob==NULL) return;
-	
-	if (object_data_is_libdata(ob)) {
-// XXX		error_libdata();
-		return;
-	}
-
-	me= get_mesh(ob);
-	
-	if(me)
-		DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
-
-	if(G.f & G_TEXTUREPAINT) {
-		G.f &= ~G_TEXTUREPAINT;
-		GPU_paint_set_mipmap(1);
-	}
-	else if (me) {
-		G.f |= G_TEXTUREPAINT;
-
-		if(me->mtface==NULL)
-			make_tfaces(ob);
-
-		brush_check_exists(&scene->toolsettings->imapaint.brush);
-		GPU_paint_set_mipmap(0);
-	}
-
-}
-
-static void texpaint_project(Object *ob, float *model, float *proj, float *co, float *pco)
-{
-	VECCOPY(pco, co);
-	pco[3]= 1.0f;
-
-	Mat4MulVecfl(ob->obmat, pco);
-	Mat4MulVecfl((float(*)[4])model, pco);
-	Mat4MulVec4fl((float(*)[4])proj, pco);
-}
-
-static void texpaint_tri_weights(Object *ob, float *v1, float *v2, float *v3, float *co, float *w)
-{
-	float pv1[4], pv2[4], pv3[4], h[3], divw;
-	float model[16], proj[16], wmat[3][3], invwmat[3][3];
-	GLint view[4];
-
-	/* compute barycentric coordinates */
-
-	/* get the needed opengl matrices */
-	glGetIntegerv(GL_VIEWPORT, view);
-	glGetFloatv(GL_MODELVIEW_MATRIX, model);
-	glGetFloatv(GL_PROJECTION_MATRIX, proj);
-	view[0] = view[1] = 0;
-
-	/* project the verts */
-	texpaint_project(ob, model, proj, v1, pv1);
-	texpaint_project(ob, model, proj, v2, pv2);
-	texpaint_project(ob, model, proj, v3, pv3);
-
-	/* do inverse view mapping, see gluProject man page */
-	h[0]= (co[0] - view[0])*2.0f/view[2] - 1;
-	h[1]= (co[1] - view[1])*2.0f/view[3] - 1;
-	h[2]= 1.0f;
-
-	/* solve for (w1,w2,w3)/perspdiv in:
-	   h*perspdiv = Project*Model*(w1*v1 + w2*v2 + w3*v3) */
-
-	wmat[0][0]= pv1[0];  wmat[1][0]= pv2[0];  wmat[2][0]= pv3[0];
-	wmat[0][1]= pv1[1];  wmat[1][1]= pv2[1];  wmat[2][1]= pv3[1];
-	wmat[0][2]= pv1[3];  wmat[1][2]= pv2[3];  wmat[2][2]= pv3[3];
-
-	Mat3Inv(invwmat, wmat);
-	Mat3MulVecfl(invwmat, h);
-
-	VECCOPY(w, h);
-
-	/* w is still divided by perspdiv, make it sum to one */
-	divw= w[0] + w[1] + w[2];
-	if(divw != 0.0f)
-		VecMulf(w, 1.0f/divw);
-}
-
-/* compute uv coordinates of mouse in face */
-void texpaint_pick_uv(Scene *scene, Object *ob, Mesh *mesh, unsigned int faceindex, short *xy, float *uv)
-{
-	DerivedMesh *dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH);
-	int *index = dm->getFaceDataArray(dm, CD_ORIGINDEX);
-	MTFace *tface = dm->getFaceDataArray(dm, CD_MTFACE), *tf;
-	int numfaces = dm->getNumFaces(dm), a;
-	float p[2], w[3], absw, minabsw;
-	MFace mf;
-	MVert mv[4];
-
-	minabsw = 1e10;
-	uv[0] = uv[1] = 0.0;
-
-// XXX	persp(PERSP_VIEW);
-
-	/* test all faces in the derivedmesh with the original index of the picked face */
-	for (a = 0; a < numfaces; a++) {
-		if (index[a] == faceindex) {
-			dm->getFace(dm, a, &mf);
-
-			dm->getVert(dm, mf.v1, &mv[0]);
-			dm->getVert(dm, mf.v2, &mv[1]);
-			dm->getVert(dm, mf.v3, &mv[2]);
-			if (mf.v4)
-				dm->getVert(dm, mf.v4, &mv[3]);
-
-			tf= &tface[a];
-
-			p[0]= xy[0];
-			p[1]= xy[1];
-
-			if (mf.v4) {
-				/* the triangle with the largest absolute values is the one
-				   with the most negative weights */
-				texpaint_tri_weights(ob, mv[0].co, mv[1].co, mv[3].co, p, w);
-				absw= fabs(w[0]) + fabs(w[1]) + fabs(w[2]);
-				if(absw < minabsw) {
-					uv[0]= tf->uv[0][0]*w[0] + tf->uv[1][0]*w[1] + tf->uv[3][0]*w[2];
-					uv[1]= tf->uv[0][1]*w[0] + tf->uv[1][1]*w[1] + tf->uv[3][1]*w[2];
-					minabsw = absw;
-				}
-
-				texpaint_tri_weights(ob, mv[1].co, mv[2].co, mv[3].co, p, w);
-				absw= fabs(w[0]) + fabs(w[1]) + fabs(w[2]);
-				if (absw < minabsw) {
-					uv[0]= tf->uv[1][0]*w[0] + tf->uv[2][0]*w[1] + tf->uv[3][0]*w[2];
-					uv[1]= tf->uv[1][1]*w[0] + tf->uv[2][1]*w[1] + tf->uv[3][1]*w[2];
-					minabsw = absw;
-				}
-			}
-			else {
-				texpaint_tri_weights(ob, mv[0].co, mv[1].co, mv[2].co, p, w);
-				absw= fabs(w[0]) + fabs(w[1]) + fabs(w[2]);
-				if (absw < minabsw) {
-					uv[0]= tf->uv[0][0]*w[0] + tf->uv[1][0]*w[1] + tf->uv[2][0]*w[2];
-					uv[1]= tf->uv[0][1]*w[0] + tf->uv[1][1]*w[1] + tf->uv[2][1]*w[2];
-					minabsw = absw;
-				}
-			}
-		}
-	}
-
-	dm->release(dm);
-}

Modified: branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c	2009-02-19 23:15:27 UTC (rev 19046)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c	2009-02-19 23:53:40 UTC (rev 19047)
@@ -73,6 +73,14 @@
 
 /* ************** Exported Poll tests ********************** */
 
+int ED_operator_regionactive(bContext *C)
+{
+	if(CTX_wm_window(C)==NULL) return 0;
+	if(CTX_wm_screen(C)==NULL) return 0;
+	if(CTX_wm_region(C)==NULL) return 0;
+	return 1;
+}
+
 int ED_operator_areaactive(bContext *C)
 {
 	if(CTX_wm_window(C)==NULL) return 0;

Copied: branches/blender2.5/blender/source/blender/editors/sculpt_paint (from rev 19034, branches/blender2.5/blender/source/blender/editors/sculpt)


Property changes on: branches/blender2.5/blender/source/blender/editors/sculpt_paint
___________________________________________________________________
Name: svn:mergeinfo
   + 

Modified: branches/blender2.5/blender/source/blender/editors/sculpt_paint/Makefile

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list