[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39115] branches/soc-2011-onion/source/ blender/editors/sculpt_paint/paint_vertex.c: Revision: 30822
Jason Wilkins
Jason.A.Wilkins at gmail.com
Sun Aug 7 04:32:12 CEST 2011
Revision: 39115
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39115
Author: jwilkins
Date: 2011-08-07 02:32:12 +0000 (Sun, 07 Aug 2011)
Log Message:
-----------
Revision: 30822
Author: nicholasbishop
Date: 9:06:42 PM, Tuesday, July 27, 2010
Message:
== VPaint ==
* Removed some code cruft and out of date comments
----
Modified : /branches/soc-2010-nicolasbishop/source/blender/editors/sculpt_paint/paint_vertex.c
--
jwilkins:
This update original deleted the VPaintData structure, but I am keeping it because I had added a couple of fields to it for BrushLib. It may still go away in the future as I settle more closely on the final implementation of the BrushLib integration.
Modified Paths:
--------------
branches/soc-2011-onion/source/blender/editors/sculpt_paint/paint_vertex.c
Modified: branches/soc-2011-onion/source/blender/editors/sculpt_paint/paint_vertex.c
===================================================================
--- branches/soc-2011-onion/source/blender/editors/sculpt_paint/paint_vertex.c 2011-08-07 02:08:02 UTC (rev 39114)
+++ branches/soc-2011-onion/source/blender/editors/sculpt_paint/paint_vertex.c 2011-08-07 02:32:12 UTC (rev 39115)
@@ -1522,31 +1522,9 @@
/* ********************** vertex paint operator ******************* */
-/* Implementation notes:
-
-Operator->invoke()
- - validate context (add mcol)
- - create customdata storage
- - call paint once (mouse click)
- - add modal handler
-
-Operator->modal()
- - for every mousemove, apply vertex paint
- - exit on mouse release, free customdata
- (return OPERATOR_FINISHED also removes handler and operator)
-
-For future:
- - implement a stroke event (or mousemove with past positons)
- - revise whether op->customdata should be added in object, in set_vpaint
-
-*/
-
typedef struct VPaintData {
float color[4];
float fac;
- int *indexar;
- float *vertexcosnos;
- float vpimat[3][3];
} VPaintData;
void paint_raycast_cb(PBVHNode *node, PaintRaycastData *data, float *tmin)
@@ -1709,32 +1687,36 @@
}
}
-static void vpaint_nodes_faces(struct VPaint *vp, struct PaintStroke *stroke,
- MFace *mface, MVert *mvert,
- CustomData *vdata, CustomData *fdata,
- int *face_indices, int totface, float center[3],
- float radius)
+static void vpaint_nodes_faces(
+ struct VPaint *vp,
+ struct PaintStroke *stroke,
+ struct MFace *mface,
+ struct MVert *mvert,
+ struct CustomData *vdata,
+ struct CustomData *fdata,
+ int *face_indices,
+ int totface,
+ float center[3],
+ float radius)
{
float radius_squared = radius*radius;
MCol *mcol;
int pmask_totlayer, pmask_first_layer;
int i, j;
- mcol = CustomData_get_layer(fdata, CD_MCOL);
+ mcol = CustomData_get_layer(fdata, CD_MCOL);
pmask_totlayer = CustomData_number_of_layers(vdata, CD_PAINTMASK);
pmask_first_layer = CustomData_get_layer_index(vdata, CD_PAINTMASK);
- for(i = 0; i < totface; ++i) {
- int face_index = face_indices[i];
- MFace *f = mface + face_index;
- int S = f->v4 ? 4 : 3;
+ for(i = 0; i < totface; ++i) {
+ int face_index = face_indices[i];
+ MFace *f = mface + face_index;
+ int S = f->v4 ? 4 : 3;
- for(j = 0; j < S; ++j) {
- int vndx = (&f->v1)[j];
- int cndx = face_index*4 + j;
- float *co = mvert[vndx].co;
- //unsigned int *col = (unsigned int*)(mcol + cndx);
- //unsigned int *orig_col = (unsigned int*)(orig + cndx);
+ for(j = 0; j < S; ++j) {
+ int vndx = (&f->v1)[j];
+ int cndx = face_index*4 + j;
+ float *co = mvert[vndx].co;
float fcol[4];
float mask;
@@ -1743,12 +1725,22 @@
fcol[2] = mcol[cndx].r / 255.0f;
fcol[3] = mcol[cndx].a / 255.0f;
- mask = paint_mask_from_vertex(vdata, vndx,
- pmask_totlayer,
- pmask_first_layer);
+ mask=
+ paint_mask_from_vertex(
+ vdata,
+ vndx,
+ pmask_totlayer,
+ pmask_first_layer);
- vpaint_paint_coord(vp, stroke, co, fcol, center,
- radius, radius_squared, mask);
+ vpaint_paint_coord(
+ vp,
+ stroke,
+ co,
+ fcol,
+ center,
+ radius,
+ radius_squared,
+ mask);
mcol[cndx].b = fcol[0] * 255.0f;
mcol[cndx].g = fcol[1] * 255.0f;
@@ -2076,12 +2068,6 @@
static void free_mode_data(struct VPaintData *vpd)
{
- if (vpd->vertexcosnos)
- MEM_freeN(vpd->vertexcosnos);
-
- if (vpd->indexar)
- MEM_freeN(vpd->indexar);
-
MEM_freeN(vpd);
}
@@ -2151,12 +2137,10 @@
VPaint *vp= ts->vpaint;
struct VPaintData *vpd;
struct Object *ob= CTX_data_active_object(C);
- const ViewContext *vc = paint_stroke_view_context(stroke);
Scene *scene = CTX_data_scene(C);
Brush *brush= paint_brush(&(CTX_data_tool_settings(C)->vpaint->paint));
DerivedMesh *dm;
Mesh *me;
- float mat[4][4], imat[4][4];
paint_cache_init(
CTX_wm_manager(C),
@@ -2180,22 +2164,25 @@
vpd= MEM_callocN(sizeof(struct VPaintData), "VPaintData");
paint_stroke_set_mode_data(stroke, vpd);
- vpd->vertexcosnos= mesh_get_mapped_verts_nors(vc->scene, ob);
-
/* for filtering */
copy_vpaint_prev(vp, (unsigned int *)me->mcol, me->totface);
- /* some old cruft to sort out later */
- mul_m4_m4m4(mat, ob->obmat, vc->rv3d->viewmat);
- invert_m4_m4(imat, mat);
- copy_m3_m4(vpd->vpimat, imat);
+ dm=
+ mesh_get_derived_final(
+ scene,
+ ob,
+ CD_MASK_BAREMESH|CD_MASK_MCOL);
- dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH|CD_MASK_MCOL);
- ob->paint->pbvh = dm->getPBVH(ob, dm);
+ ob->paint->pbvh = dm->getPBVH(ob, dm);
paint_tex_init(C);
- paint_bspace_init(C, stroke, vpaint_stroke_get_location, paint_stroke_mouse(stroke), brush_size(brush));
+ paint_bspace_init(
+ C,
+ stroke,
+ vpaint_stroke_get_location,
+ paint_stroke_mouse(stroke),
+ brush_size(brush));
}
static void vpaint_stroke_apply(
More information about the Bf-blender-cvs
mailing list