Dynamic Paint:
authorMiika Hamalainen <blender@miikah.org>
Sun, 21 Aug 2011 19:03:47 +0000 (19:03 +0000)
committerMiika Hamalainen <blender@miikah.org>
Sun, 21 Aug 2011 19:03:47 +0000 (19:03 +0000)
* Bake calculation memory is now freed if surface is deactivated or baked.
* Fixed possibly incorrect brush influence when using "Non-Closed" brush setting.
* Added new rna property descriptions.
* Added some comments and general code cleanup.

release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py
source/blender/blenkernel/BKE_dynamicpaint.h
source/blender/blenkernel/intern/dynamicpaint.c
source/blender/makesdna/DNA_dynamicpaint_types.h
source/blender/makesrna/intern/rna_dynamicpaint.c

index 1560019e2acd7bcc921ef02a6d1efeaefbc6430d..25de00f64eacdeaef4e9e9f1836dc79bbe078b4a 100644 (file)
@@ -400,7 +400,7 @@ class PHYSICS_PT_dp_advanced_brush(PhysicButtonsPanel, bpy.types.Panel):
             if (brush.paint_source != 'POINT'):
                 sub.prop(brush, "prox_facealigned")
             sub = split.column()
-            sub.prop(brush, "prox_falloff", text="Falloff")
+            sub.prop(brush, "prox_falloff")
             if brush.paint_source == "VOLDIST":
                 col = layout.row().column()
                 col.prop(brush, "prox_inverse")
index 0079e086df29e4e0c95b44da41393335cb27f4bd..24cb8c398441e53674c170765fc83ae5e8589a49 100644 (file)
@@ -21,14 +21,11 @@ struct PaintBakeData;
 
 /* Actual surface point        */
 typedef struct PaintSurfaceData {
-       /* surface format data */
-       void *format_data;
-       /* surface type data */
-       void *type_data;
-       /* point neighbor data */
-       struct PaintAdjData *adj_data;
+       void *format_data; /* special data for each surface "format" */
+       void *type_data; /* data used by specific surface type */
+       struct PaintAdjData *adj_data; /* adjacency data for current surface */
 
-       struct PaintBakeData *bData;
+       struct PaintBakeData *bData; /* temporary per step data used for frame calculation */
        unsigned int total_points;
 
 } PaintSurfaceData;
index 93845b2dfcbd4a29639cdb72e075cf13fb867798..329f467733994a5db2836e895bf2b677494843be 100644 (file)
@@ -130,12 +130,12 @@ typedef struct Bounds3D {
 
 typedef struct VolumeGrid {
        int x,y,z;
-       Bounds3D grid_bounds;
+       Bounds3D grid_bounds; /* whole grid bounds */
 
        Bounds3D *bounds;       /* (x*y*z) precalculated grid cell bounds */
-       unsigned int *s_pos; /* (x*y*z) search indexses */
-       unsigned int *s_num; /* (x*y*z) number of points */
-       unsigned int *t_index; /* actual point index,
+       unsigned int *s_pos; /* (x*y*z) t_index begin id */
+       unsigned int *s_num; /* (x*y*z) number of t_index points */
+       unsigned int *t_index; /* actual surface point index,
                                                   access: (s_pos+s_num) */
 } VolumeGrid;
 
@@ -158,42 +158,42 @@ typedef struct PaintBakeNormal {
 typedef struct PaintBakeData {
        /* point space data */
        PaintBakeNormal *bNormal;
-       unsigned int *s_pos;            /* index to start reading point sample realCoord */
-       unsigned int *s_num;    /* num of samples for each point */
-       Vec3f *realCoord;  /* current pixel center world-space coordinates * numOfSamples
-                                          *  ordered as (s_pos+sample_num)*/
+       unsigned int *s_pos;    /* index to start reading point sample realCoord */
+       unsigned int *s_num;    /* num of realCoord samples */
+       Vec3f *realCoord;  /* current pixel center world-space coordinates for each sample
+                                          *  ordered as (s_pos+s_num)*/
 
-       /* adjacency */
-       BakeNeighPoint *bNeighs; /* current frame neighbour distances, if required */
+       /* adjacency info */
+       BakeNeighPoint *bNeighs; /* current global neighbour distances and directions, if required */
        double average_dist;
        /* space partitioning */
-       VolumeGrid *grid;       /* space partitioning grid to optimize brush checks */
+       VolumeGrid *grid;               /* space partitioning grid to optimize brush checks */
 
        /* velocity and movement */
-       Vec3f *velocity;  /* speed vector in global space movement per frame, if required */
+       Vec3f *velocity;                /* speed vector in global space movement per frame, if required */
        Vec3f *prev_velocity;
-       float *brush_velocity; /* special temp data for post-p velocity based brushes like smudge
-                                                  *  3 float dir vec + 1 float str */
-       MVert *prev_verts;      /* copy of previous frame vertices. used to observe surface movement */
+       float *brush_velocity;  /* special temp data for post-p velocity based brushes like smudge
+                                                       *  3 float dir vec + 1 float str */
+       MVert *prev_verts;              /* copy of previous frame vertices. used to observe surface movement */
        float prev_obmat[4][4]; /* previous frame object matrix */
-       int clear;
+       int clear;                              /* flag to check if surface was cleared/reset -> have to redo velocity etc. */
 
 } PaintBakeData;
 
 /* UV Image sequence format point      */
 typedef struct PaintUVPoint {
        /* Pixel / mesh data */
-       unsigned int face_index, pixel_index;           /* face index on domain derived mesh */
-       unsigned int v1, v2, v3;                /* vertex indexes */
+       unsigned int face_index, pixel_index;   /* face index on domain derived mesh */
+       unsigned int v1, v2, v3;                                /* vertex indexes */
 
        unsigned int neighbour_pixel;   /* If this pixel isn't uv mapped to any face,
-                                                       but it's neighbouring pixel is */
+                                                                          but it's neighbouring pixel is */
        short quad;
 } PaintUVPoint;
 
 typedef struct ImgSeqFormatData {
        PaintUVPoint *uv_p;
-       Vec3f *barycentricWeights;      /* b-weights for all pixel samples */
+       Vec3f *barycentricWeights;              /* b-weights for all pixel samples */
 } ImgSeqFormatData;
 
 typedef struct EffVelPoint {
@@ -207,7 +207,7 @@ typedef struct EffVelPoint {
 
 typedef struct PaintAdjData {
        unsigned int *n_target;         /* array of neighbouring point indexes,
-                                                          for single sample use (n_index+neigh_num) */
+                                                              for single sample use (n_index+neigh_num) */
        unsigned int *n_index;          /* index to start reading n_target for each point */
        unsigned int *n_num;            /* num of neighs for each point */
        unsigned int *flags;            /* vertex adjacency flags */
@@ -247,7 +247,8 @@ static int dynamicPaint_surfaceNumOfPoints(DynamicPaintSurface *surface)
 }
 
 /* checks whether surface's format/type has realtime preview */
-int dynamicPaint_surfaceHasColorPreview(DynamicPaintSurface *surface) {
+int dynamicPaint_surfaceHasColorPreview(DynamicPaintSurface *surface)
+{
        if (surface->format == MOD_DPAINT_SURFACE_F_IMAGESEQ) return 0;
        else if (surface->format == MOD_DPAINT_SURFACE_F_VERTEX) {
                if (surface->type == MOD_DPAINT_SURFACE_T_DISPLACE ||
@@ -300,7 +301,8 @@ static void dynamicPaint_setPreview(DynamicPaintSurface *t_surface)
 }
 
 /* change surface data to defaults on new type */
-void dynamicPaintSurface_updateType(struct DynamicPaintSurface *surface) {
+void dynamicPaintSurface_updateType(struct DynamicPaintSurface *surface)
+{
        if (surface->format == MOD_DPAINT_SURFACE_F_IMAGESEQ) {
                surface->output_name[0]='\0';
                surface->output_name2[0]='\0';
@@ -370,7 +372,8 @@ static int surfaceDublicateNameExists(void *arg, const char *name)
        return 0;
 }
 
-void dynamicPaintSurface_setUniqueName(DynamicPaintSurface *surface, char *basename) {
+void dynamicPaintSurface_setUniqueName(DynamicPaintSurface *surface, char *basename)
+{
        char name[64];
        strncpy(name, basename, 62); /* in case basename is surface->name use a copy */
        BLI_uniquename_cb(surfaceDublicateNameExists, surface, name, '.', surface->name, sizeof(surface->name));
@@ -792,6 +795,17 @@ static void free_bakeData(PaintSurfaceData *data)
        }
 }
 
+/* free surface data if it's not used anymore */
+void surface_freeUnusedData(DynamicPaintSurface *surface)
+{
+       if (!surface->data) return;
+
+       /* free bakedata if not active or surface is baked */
+       if (!(surface->flags & MOD_DPAINT_ACTIVE) ||
+               (surface->pointcache && surface->pointcache->flag & PTCACHE_BAKED))
+               free_bakeData(surface->data);
+}
+
 static void dynamicPaint_freeSurfaceData(DynamicPaintSurface *surface)
 {
        PaintSurfaceData *data = surface->data;
@@ -983,9 +997,6 @@ int dynamicPaint_createType(struct DynamicPaintModifierData *pmd, int type, stru
                        pmd->brush->paint_distance = 0.1f;
                        pmd->brush->proximity_falloff = MOD_DPAINT_PRFALL_SMOOTH;
 
-                       pmd->brush->displace_distance = 0.5f;
-                       pmd->brush->prox_displace_strength = 0.5f;
-
                        pmd->brush->particle_radius = 0.2f;
                        pmd->brush->particle_smooth = 0.05f;
 
@@ -1062,8 +1073,6 @@ void dynamicPaint_Modifier_copy(struct DynamicPaintModifierData *pmd, struct Dyn
                tpmd->brush->particle_smooth = pmd->brush->particle_smooth;
                tpmd->brush->paint_distance = pmd->brush->paint_distance;
                tpmd->brush->psys = pmd->brush->psys;
-               tpmd->brush->displace_distance = pmd->brush->displace_distance;
-               tpmd->brush->prox_displace_strength = pmd->brush->prox_displace_strength;
 
                tpmd->brush->paint_ramp = pmd->brush->paint_ramp;
 
@@ -1093,13 +1102,15 @@ static void dynamicPaint_allocateSurfaceType(DynamicPaintSurface *surface)
        if (sData->type_data == NULL) printError(surface->canvas, "Not enough free memory!");
 }
 
-static int surface_usesAdjDistance(DynamicPaintSurface *surface) {
+static int surface_usesAdjDistance(DynamicPaintSurface *surface)
+{
        if (surface->type == MOD_DPAINT_SURFACE_T_PAINT && surface->effect) return 1;
        if (surface->type == MOD_DPAINT_SURFACE_T_WAVE) return 1;
        return 0;
 }
 
-static int surface_usesAdjData(DynamicPaintSurface *surface) {
+static int surface_usesAdjData(DynamicPaintSurface *surface)
+{
        if (surface_usesAdjDistance(surface)) return 1;
        if (surface->format == MOD_DPAINT_SURFACE_F_VERTEX &&
                surface->flags & MOD_DPAINT_ANTIALIAS) return 1;
@@ -1108,7 +1119,8 @@ static int surface_usesAdjData(DynamicPaintSurface *surface) {
 }
 
 /* initialize surface adjacency data */
-static void dynamicPaint_initAdjacencyData(DynamicPaintSurface *surface, int force_init) {
+static void dynamicPaint_initAdjacencyData(DynamicPaintSurface *surface, int force_init)
+{
        PaintSurfaceData *sData = surface->data;
        PaintAdjData *ed;
        int *temp_data;
@@ -1213,7 +1225,8 @@ static void dynamicPaint_initAdjacencyData(DynamicPaintSurface *surface, int for
 }
 
 /* clears surface data back to zero */
-void dynamicPaint_clearSurface(DynamicPaintSurface *surface) {
+void dynamicPaint_clearSurface(DynamicPaintSurface *surface)
+{
        PaintSurfaceData *sData = surface->data;
        if (sData && sData->type_data) {
                unsigned int data_size;
@@ -1572,6 +1585,9 @@ static void dynamicPaint_frameUpdate(DynamicPaintModifierData *pmd, Scene *scene
                for (; surface; surface=surface->next) {
                        int current_frame = (int)scene->r.cfra;
 
+                       /* free bake data if not required anymore */
+                       surface_freeUnusedData(surface);
+
                        /* image sequences are handled by bake operator */
                        if (surface->format == MOD_DPAINT_SURFACE_F_IMAGESEQ) continue;
                        if (!(surface->flags & MOD_DPAINT_ACTIVE)) continue;
@@ -3183,6 +3199,8 @@ static void dynamicPaint_updatePointData(DynamicPaintSurface *surface, unsigned
 
 static int meshBrush_boundsIntersect(Bounds3D *b1, Bounds3D *b2, DynamicPaintBrushSettings *brush)
 {
+       if (brush->flags & MOD_DPAINT_ACCEPT_NONCLOSED)
+               return 1;
        if (brush->collision == MOD_DPAINT_COL_VOLUME)
                return boundsIntersect(b1, b2);
        else if (brush->collision == MOD_DPAINT_COL_DIST || brush->collision == MOD_DPAINT_COL_VOLDIST)
@@ -4636,7 +4654,8 @@ void dynamicPaint_doWaveStep(DynamicPaintSurface *surface, float timescale)
 #define VALUE_DISSOLVE(VALUE, SPEED, SCALE, LOG) (VALUE) = (LOG) ? (VALUE) * 1.0f - 1.0f/((SPEED)/(SCALE)) : (VALUE) - 1.0f/(SPEED)*(SCALE)
 
 /* Do dissolve and fading effects */
-static void dynamicPaint_surfacePreStep(DynamicPaintSurface *surface, float timescale) {
+static void dynamicPaint_surfacePreStep(DynamicPaintSurface *surface, float timescale)
+{
        PaintSurfaceData *sData = surface->data;
        int index;
 
@@ -5445,7 +5464,8 @@ void DPAINT_OT_surface_slot_remove(wmOperatorType *ot)
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 }
 
-static int type_toggle_exec(bContext *C, wmOperator *op) {
+static int type_toggle_exec(bContext *C, wmOperator *op)
+{
 
        Object *cObject = CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
        Scene *scene = CTX_data_scene(C);
@@ -5496,7 +5516,8 @@ void DPAINT_OT_type_toggle(wmOperatorType *ot)
        ot->prop= prop;
 }
 
-static int output_toggle_exec(bContext *C, wmOperator *op) {
+static int output_toggle_exec(bContext *C, wmOperator *op)
+{
 
        Object *ob = CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
        Scene *scene = CTX_data_scene(C);
@@ -5560,5 +5581,4 @@ void DPAINT_OT_output_toggle(wmOperatorType *ot)
        /* properties */
        prop= RNA_def_int(ot->srna, "index", 0, 0, 1, "Index", "", 0, 1);
        ot->prop= prop;
-}
-
+}
\ No newline at end of file
index 4454d44790930c43d20bb365177ae0c7090d17fe..e44fec6d69ffce02d2f9ffeb2d6747b6d1c8d90a 100644 (file)
@@ -174,7 +174,6 @@ typedef struct DynamicPaintBrushSettings {
 
        float particle_radius, particle_smooth;
        float paint_distance;
-       float displace_distance, prox_displace_strength;
 
        /* color ramps */
        struct ColorBand *paint_ramp;   /* Proximity paint falloff */
index d0f8264b656e94b4e66887bde2d957e1734d693a..82eeb9e515ffdae0599dbe5a508b39460ee6a5b8 100644 (file)
@@ -257,12 +257,8 @@ static EnumPropertyItem *rna_DynamicPaint_surface_type_itemf(bContext *C, Pointe
 static void rna_def_canvas_surfaces(BlenderRNA *brna, PropertyRNA *cprop)
 {
        StructRNA *srna;
-       
        PropertyRNA *prop;
 
-       // FunctionRNA *func;
-       // PropertyRNA *parm;
-
        RNA_def_property_srna(cprop, "DynamicPaintSurfaces");
        srna= RNA_def_struct(brna, "DynamicPaintSurfaces", NULL);
        RNA_def_struct_sdna(srna, "DynamicPaintCanvasSettings");
@@ -334,7 +330,7 @@ static void rna_def_canvas_surface(BlenderRNA *brna)
        RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
        RNA_def_property_enum_sdna(prop, NULL, "format");
        RNA_def_property_enum_items(prop, prop_dynamicpaint_surface_format);
-       RNA_def_property_ui_text(prop, "Format", "");
+       RNA_def_property_ui_text(prop, "Format", "Surface Format");
        RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_DynamicPaintSurfaces_changeFormat");
 
        prop= RNA_def_property(srna, "surface_type", PROP_ENUM, PROP_NONE);
@@ -342,17 +338,17 @@ static void rna_def_canvas_surface(BlenderRNA *brna)
        RNA_def_property_enum_sdna(prop, NULL, "type");
        RNA_def_property_enum_items(prop, prop_dynamicpaint_surface_type);
        RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_DynamicPaint_surface_type_itemf");
-       RNA_def_property_ui_text(prop, "Surface Type", "");
+       RNA_def_property_ui_text(prop, "Surface Type", "Surface Type");
        RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_DynamicPaintSurface_changeType");
 
        prop= RNA_def_property(srna, "is_active", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_DPAINT_ACTIVE);
-       RNA_def_property_ui_text(prop, "Is Active", "");
+       RNA_def_property_ui_text(prop, "Is Active", "Toggles whether surface is processed or ignored.");
        RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_DynamicPaint_redoModifier");
 
        prop= RNA_def_property(srna, "show_preview", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_DPAINT_PREVIEW);
-       RNA_def_property_ui_text(prop, "Show Preview", "");
+       RNA_def_property_ui_text(prop, "Show Preview", "Display surface preview in 3D views.");
        RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_DynamicPaintSurface_changePreview");
 
        prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
@@ -397,7 +393,7 @@ static void rna_def_canvas_surface(BlenderRNA *brna)
        RNA_def_property_int_sdna(prop, NULL, "image_resolution");
        RNA_def_property_range(prop, 16.0, 4096.0);
        RNA_def_property_ui_range(prop, 16.0, 4096.0, 1, 0);
-       RNA_def_property_ui_text(prop, "Resolution", "Texture resolution");
+       RNA_def_property_ui_text(prop, "Resolution", "Output image resolution");
        
        prop= RNA_def_property(srna, "uv_layer", PROP_STRING, PROP_NONE);
        RNA_def_property_string_sdna(prop, NULL, "uvlayer_name");
@@ -512,7 +508,7 @@ static void rna_def_canvas_surface(BlenderRNA *brna)
        
        prop= RNA_def_property(srna, "image_output_path", PROP_STRING, PROP_DIRPATH);
        RNA_def_property_string_sdna(prop, NULL, "image_output_path");
-       RNA_def_property_ui_text(prop, "Output Path", "Directory/name to the textures");
+       RNA_def_property_ui_text(prop, "Output Path", "Directory to save the textures");
 
        /* output for primary surface data */
        prop= RNA_def_property(srna, "output_name", PROP_STRING, PROP_NONE);
@@ -579,7 +575,7 @@ static void rna_def_canvas_surface(BlenderRNA *brna)
        RNA_def_property_float_sdna(prop, NULL, "wave_speed");
        RNA_def_property_range(prop, 0.01, 3.0);
        RNA_def_property_ui_range(prop, 0.01, 1.5, 1, 2);
-       RNA_def_property_ui_text(prop, "Speed", "Wave speed.");
+       RNA_def_property_ui_text(prop, "Speed", "Wave propogation speed.");
 
        prop= RNA_def_property(srna, "wave_timescale", PROP_FLOAT, PROP_NONE);
        RNA_def_property_float_sdna(prop, NULL, "wave_timescale");
@@ -700,7 +696,7 @@ static void rna_def_dynamic_paint_brush_settings(BlenderRNA *brna)
        
        prop= RNA_def_property(srna, "use_material", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_DPAINT_USE_MATERIAL);
-       RNA_def_property_ui_text(prop, "Use object material", "Use object material to define color and alpha.");
+       RNA_def_property_ui_text(prop, "Use object material", "Use object material to define color and influence.");
 
        prop= RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
        RNA_def_property_pointer_sdna(prop, NULL, "mat");
@@ -715,7 +711,7 @@ static void rna_def_dynamic_paint_brush_settings(BlenderRNA *brna)
        RNA_def_property_float_sdna(prop, NULL, "wetness");
        RNA_def_property_range(prop, 0.0, 1.0);
        RNA_def_property_ui_range(prop, 0.0, 1.0, 5, 2);
-       RNA_def_property_ui_text(prop, "Paint Wetness", "Paint Wetness. Visible in wet map. Some effects only affect wet paint.");
+       RNA_def_property_ui_text(prop, "Paint Wetness", "Paint wetness. Visible in wet map. Some effects only affect wet paint.");
        
        prop= RNA_def_property(srna, "paint_erase", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_DPAINT_ERASE);
@@ -731,23 +727,23 @@ static void rna_def_dynamic_paint_brush_settings(BlenderRNA *brna)
        RNA_def_property_float_sdna(prop, NULL, "wave_factor");
        RNA_def_property_range(prop, -2.0, 2.0);
        RNA_def_property_ui_range(prop, -1.0, 1.0, 5, 2);
-       RNA_def_property_ui_text(prop, "Factor", "Multiplier for wave strenght of this brush.");
+       RNA_def_property_ui_text(prop, "Factor", "Multiplier for wave influence of this brush.");
 
        prop= RNA_def_property(srna, "do_smudge", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_DPAINT_DO_SMUDGE);
-       RNA_def_property_ui_text(prop, "Do Smudge", "");
+       RNA_def_property_ui_text(prop, "Do Smudge", "Makes this brush to smudge existing paint as it moves.");
 
        prop= RNA_def_property(srna, "smudge_strength", PROP_FLOAT, PROP_NONE);
        RNA_def_property_float_sdna(prop, NULL, "smudge_strength");
        RNA_def_property_range(prop, 0.0, 1.0);
        RNA_def_property_ui_range(prop, 0.0, 1.0, 5, 2);
-       RNA_def_property_ui_text(prop, "Smudge Strength", "");
+       RNA_def_property_ui_text(prop, "Smudge Strength", "Smudge effect strength");
 
        prop= RNA_def_property(srna, "max_velocity", PROP_FLOAT, PROP_NONE);
        RNA_def_property_float_sdna(prop, NULL, "max_velocity");
        RNA_def_property_range(prop, 0.0001, 10.0);
        RNA_def_property_ui_range(prop, 0.1, 2.0, 5, 2);
-       RNA_def_property_ui_text(prop, "Max Velocity", "");
+       RNA_def_property_ui_text(prop, "Max Velocity", "Velocity considered as maximum influence. (Blender units per frame)");
 
        prop= RNA_def_property(srna, "velocity_alpha", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_DPAINT_VELOCITY_ALPHA);
@@ -755,7 +751,7 @@ static void rna_def_dynamic_paint_brush_settings(BlenderRNA *brna)
 
        prop= RNA_def_property(srna, "velocity_depth", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_DPAINT_VELOCITY_DEPTH);
-       RNA_def_property_ui_text(prop, "Multiply Depth", "Multiply brush intersection depth (displace, waves) by velocity color ramp alpha.");
+       RNA_def_property_ui_text(prop, "Multiply Depth", "Multiply brush intersection depth (displace, waves) by velocity ramp alpha.");
 
        prop= RNA_def_property(srna, "velocity_color", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_DPAINT_VELOCITY_COLOR);
@@ -772,7 +768,7 @@ static void rna_def_dynamic_paint_brush_settings(BlenderRNA *brna)
 
        prop= RNA_def_property(srna, "accept_nonclosed", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_DPAINT_ACCEPT_NONCLOSED);
-       RNA_def_property_ui_text(prop, "Non-Closed", "Allows painting with non-closed meshes. Brush influence is defined by ray dir.");
+       RNA_def_property_ui_text(prop, "Non-Closed", "Allows painting with non-closed meshes. Brush influence is defined by custom ray direction.");
 
        prop= RNA_def_property(srna, "ray_dir", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_sdna(prop, NULL, "ray_dir");
@@ -783,37 +779,25 @@ static void rna_def_dynamic_paint_brush_settings(BlenderRNA *brna)
        RNA_def_property_float_sdna(prop, NULL, "paint_distance");
        RNA_def_property_range(prop, 0.0, 500.0);
        RNA_def_property_ui_range(prop, 0.0, 500.0, 10, 3);
-       RNA_def_property_ui_text(prop, "Proximity Distance", "Maximum distance to mesh surface to affect paint.");
+       RNA_def_property_ui_text(prop, "Proximity Distance", "Maximum distance from brush to mesh surface to affect paint.");
        
        prop= RNA_def_property(srna, "prox_ramp_alpha", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_DPAINT_RAMP_ALPHA);
        RNA_def_property_ui_text(prop, "Only Use Alpha", "Only reads color ramp alpha.");
        
-       prop= RNA_def_property(srna, "displace_distance", PROP_FLOAT, PROP_NONE);
-       RNA_def_property_float_sdna(prop, NULL, "displace_distance");
-       RNA_def_property_range(prop, 0.0, 10.0);
-       RNA_def_property_ui_range(prop, 0.0, 10.0, 5, 3);
-       RNA_def_property_ui_text(prop, "Displace Distance", "Maximum distance to mesh surface to displace.");
-       
-       prop= RNA_def_property(srna, "prox_displace_strength", PROP_FLOAT, PROP_NONE);
-       RNA_def_property_float_sdna(prop, NULL, "prox_displace_strength");
-       RNA_def_property_range(prop, 0.0, 1.0);
-       RNA_def_property_ui_range(prop, 0.0, 1.0, 5, 3);
-       RNA_def_property_ui_text(prop, "Strength", "How much of maximum intersection will be used in edges.");
-       
        prop= RNA_def_property(srna, "prox_falloff", PROP_ENUM, PROP_NONE);
        RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
        RNA_def_property_enum_sdna(prop, NULL, "proximity_falloff");
        RNA_def_property_enum_items(prop, prop_dynamicpaint_prox_falloff);
-       RNA_def_property_ui_text(prop, "Paint Falloff", "");
+       RNA_def_property_ui_text(prop, "Falloff", "Proximity falloff type");
        
        prop= RNA_def_property(srna, "prox_facealigned", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_DPAINT_PROX_FACEALIGNED);
-       RNA_def_property_ui_text(prop, "Face Aligned", "Check proximity in face normal direction only.");
+       RNA_def_property_ui_text(prop, "Face Aligned", "Check proximity in canvas face normal direction only.");
 
        prop= RNA_def_property(srna, "prox_inverse", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_DPAINT_INVERSE_PROX);
-       RNA_def_property_ui_text(prop, "Inner", "Invert proximity to reduce effect inside the volume.");
+       RNA_def_property_ui_text(prop, "Inner", "Proximity falloff is applied inside the volume.");
        
 
        /*
@@ -841,7 +825,7 @@ static void rna_def_dynamic_paint_brush_settings(BlenderRNA *brna)
        RNA_def_property_float_sdna(prop, NULL, "particle_smooth");
        RNA_def_property_range(prop, 0.0, 10.0);
        RNA_def_property_ui_range(prop, 0.0, 1.0, 5, 0);
-       RNA_def_property_ui_text(prop, "Smooth Radius", "Smooth falloff added after solid paint area.");
+       RNA_def_property_ui_text(prop, "Smooth Radius", "Smooth falloff added after solid radius.");
        
 
        /*
@@ -855,7 +839,7 @@ static void rna_def_dynamic_paint_brush_settings(BlenderRNA *brna)
        prop= RNA_def_property(srna, "velocity_ramp", PROP_POINTER, PROP_NONE);
        RNA_def_property_pointer_sdna(prop, NULL, "vel_ramp");
        RNA_def_property_struct_type(prop, "ColorRamp");
-       RNA_def_property_ui_text(prop, "Velocity Color Ramp", "");
+       RNA_def_property_ui_text(prop, "Velocity Color Ramp", "Color ramp used to define brush velocity effect");
 }
 
 void RNA_def_dynamic_paint(BlenderRNA *brna)