[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40992] branches/soc-2011-carrot: Dynamic Paint:

Miika Hamalainen miika.hamalainen at kolumbus.fi
Thu Oct 13 22:00:23 CEST 2011


Revision: 40992
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40992
Author:   miikah
Date:     2011-10-13 20:00:22 +0000 (Thu, 13 Oct 2011)
Log Message:
-----------
Dynamic Paint:
* Fix: Wave "timescale" also changed simulation behavior. Now different timescale values will lead to nearly identical results, just slower or faster.
* Added "Displace Factor" setting for vertex displace surfaces. You can use it to adjust final displace strength or use negative values to paint bumps.
* Added clamp/map value to wave image sequence output settings.
* RNA description tweaking.
* General code tweaking.

Modified Paths:
--------------
    branches/soc-2011-carrot/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py
    branches/soc-2011-carrot/source/blender/blenkernel/BKE_customdata.h
    branches/soc-2011-carrot/source/blender/blenkernel/BKE_dynamicpaint.h
    branches/soc-2011-carrot/source/blender/blenkernel/intern/customdata.c
    branches/soc-2011-carrot/source/blender/blenkernel/intern/dynamicpaint.c
    branches/soc-2011-carrot/source/blender/blenlib/BLI_kdtree.h
    branches/soc-2011-carrot/source/blender/blenlib/intern/BLI_kdtree.c
    branches/soc-2011-carrot/source/blender/editors/physics/dynamicpaint_ops.c
    branches/soc-2011-carrot/source/blender/makesdna/DNA_dynamicpaint_types.h
    branches/soc-2011-carrot/source/blender/makesrna/intern/rna_dynamicpaint.c
    branches/soc-2011-carrot/source/blender/makesrna/intern/rna_space.c
    branches/soc-2011-carrot/source/blender/modifiers/intern/MOD_dynamicpaint.c
    branches/soc-2011-carrot/source/blender/modifiers/intern/MOD_util.c
    branches/soc-2011-carrot/source/blender/modifiers/intern/MOD_util.h
    branches/soc-2011-carrot/source/blender/modifiers/intern/MOD_uvproject.c
    branches/soc-2011-carrot/source/blender/modifiers/intern/MOD_wave.c
    branches/soc-2011-carrot/source/blenderplayer/bad_level_call_stubs/stubs.c

Modified: branches/soc-2011-carrot/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py
===================================================================
--- branches/soc-2011-carrot/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py	2011-10-13 17:54:05 UTC (rev 40991)
+++ branches/soc-2011-carrot/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py	2011-10-13 20:00:22 UTC (rev 40992)
@@ -183,8 +183,13 @@
         
         # per type settings
         if (surface.surface_type == "DISPLACE"):
-            layout.prop(surface, "disp_clamp")
             layout.prop(surface, "incremental_disp")
+            if (surface.surface_format == "VERTEX"):
+                split = layout.split()
+                col = split.column()
+                col.prop(surface, "depth_clamp")
+                col = split.column()
+                col.prop(surface, "disp_factor")
             
         if (surface.surface_type == "WAVE"):
             layout.prop(surface, "wave_open_borders")
@@ -284,6 +289,9 @@
                 col.prop(surface, "output_name", text="Filename: ")
                 if (surface.surface_type == "DISPLACE"):
                     col.prop(surface, "disp_type", text="Displace Type")
+                    col.prop(surface, "depth_clamp")
+                if (surface.surface_type == "WAVE"):
+                    col.prop(surface, "depth_clamp", text="Wave Clamp")
             
             layout.separator()
             layout.operator("dpaint.bake", text="Bake Image Sequence", icon='MOD_DYNAMICPAINT')

Modified: branches/soc-2011-carrot/source/blender/blenkernel/BKE_customdata.h
===================================================================
--- branches/soc-2011-carrot/source/blender/blenkernel/BKE_customdata.h	2011-10-13 17:54:05 UTC (rev 40991)
+++ branches/soc-2011-carrot/source/blender/blenkernel/BKE_customdata.h	2011-10-13 20:00:22 UTC (rev 40992)
@@ -280,6 +280,8 @@
 /* make sure the name of layer at index is unique */
 void CustomData_set_layer_unique_name(struct CustomData *data, int index);
 
+void CustomData_validate_layer_name(const struct CustomData *data, int type, char *name, char *outname);
+
 /* for file reading compatibility, returns false if the layer was freed,
    only after this test passes, layer->data should be assigned */
 int CustomData_verify_versions(struct CustomData *data, int index);

Modified: branches/soc-2011-carrot/source/blender/blenkernel/BKE_dynamicpaint.h
===================================================================
--- branches/soc-2011-carrot/source/blender/blenkernel/BKE_dynamicpaint.h	2011-10-13 17:54:05 UTC (rev 40991)
+++ branches/soc-2011-carrot/source/blender/blenkernel/BKE_dynamicpaint.h	2011-10-13 20:00:22 UTC (rev 40992)
@@ -70,6 +70,7 @@
 void dynamicPaint_freeSurface(struct DynamicPaintSurface *surface);
 void dynamicPaint_freeCanvas(struct DynamicPaintModifierData *pmd);
 void dynamicPaint_freeBrush(struct DynamicPaintModifierData *pmd);
+void dynamicPaint_freeSurfaceData(struct DynamicPaintSurface *surface);
 
 void dynamicPaint_cacheUpdateFrames(struct DynamicPaintSurface *surface);
 int  dynamicPaint_surfaceHasColorPreview(struct DynamicPaintSurface *surface);
@@ -79,6 +80,20 @@
 void dynamicPaint_resetPreview(struct DynamicPaintCanvasSettings *canvas);
 struct DynamicPaintSurface *get_activeSurface(struct DynamicPaintCanvasSettings *canvas);
 
-int dynamicPaint_initBake(struct bContext *C, struct wmOperator *op);
+/* image sequence baking */
+int dynamicPaint_createUVSurface(struct DynamicPaintSurface *surface);
+int dynamicPaint_calculateFrame(struct DynamicPaintSurface *surface, struct Scene *scene, struct Object *cObject, int frame);
+void dynamicPaint_outputImage(struct DynamicPaintSurface *surface, char* filename, short format, short type);
 
+
+/* surface -> image file flags */
+#define DPOUTPUT_JPEG 0
+#define DPOUTPUT_PNG 1
+#define DPOUTPUT_OPENEXR 2
+
+#define DPOUTPUT_PAINT 0
+#define DPOUTPUT_WET 1
+#define DPOUTPUT_DISPLACE 2
+#define DPOUTPUT_WAVES 3
+
 #endif /* BKE_DYNAMIC_PAINT_H_ */

Modified: branches/soc-2011-carrot/source/blender/blenkernel/intern/customdata.c
===================================================================
--- branches/soc-2011-carrot/source/blender/blenkernel/intern/customdata.c	2011-10-13 17:54:05 UTC (rev 40991)
+++ branches/soc-2011-carrot/source/blender/blenkernel/intern/customdata.c	2011-10-13 20:00:22 UTC (rev 40992)
@@ -2353,6 +2353,25 @@
 	BLI_uniquename_cb(customdata_unique_check, &data_arg, typeInfo->defaultname, '.', nlayer->name, sizeof(nlayer->name));
 }
 
+void CustomData_validate_layer_name(const CustomData *data, int type, char *name, char *outname)
+{
+	int index = -1;
+
+	/* if a layer name was given, try to find that layer */
+	if(name[0])
+		index = CustomData_get_named_layer_index(data, type, name);
+
+	if(index < 0) {
+		/* either no layer was specified, or the layer we want has been
+		* deleted, so assign the active layer to name
+		*/
+		index = CustomData_get_active_layer_index(data, type);
+		strcpy(outname, data->layers[index].name);
+	}
+	else
+		strcpy(outname, name);
+}
+
 int CustomData_verify_versions(struct CustomData *data, int index)
 {
 	const LayerTypeInfo *typeInfo;

Modified: branches/soc-2011-carrot/source/blender/blenkernel/intern/dynamicpaint.c
===================================================================
--- branches/soc-2011-carrot/source/blender/blenkernel/intern/dynamicpaint.c	2011-10-13 17:54:05 UTC (rev 40991)
+++ branches/soc-2011-carrot/source/blender/blenkernel/intern/dynamicpaint.c	2011-10-13 20:00:22 UTC (rev 40992)
@@ -22,9 +22,6 @@
 #include "BLI_kdtree.h"
 #include "BLI_utildefines.h"
 
-/* Platform independend time	*/
-#include "PIL_time.h"
-
 #include "DNA_anim_types.h"
 #include "DNA_dynamicpaint_types.h"
 #include "DNA_group_types.h" /*GroupObject*/
@@ -54,7 +51,6 @@
 #include "BKE_object.h"
 #include "BKE_particle.h"
 #include "BKE_pointcache.h"
-#include "BKE_report.h"
 #include "BKE_scene.h"
 #include "BKE_texture.h"
 
@@ -62,17 +58,10 @@
 #include "RNA_define.h"
 #include "RNA_enum_types.h"
 
-#include "../editors/include/ED_screen.h"
-#include "WM_api.h"
-
 /* for image output	*/
 #include "IMB_imbuf_types.h"
 #include "IMB_imbuf.h"
 #include "BKE_image.h"
-#include "intern/IMB_filetype.h"
-#ifdef WITH_OPENEXR
-#include "intern/openexr/openexr_api.h"
-#endif
 
 /* uv validate	*/
 #include "intern/MOD_util.h"
@@ -90,30 +79,38 @@
 #include <omp.h>
 #endif
 
-#define DPOUTPUT_JPEG 0
-#define DPOUTPUT_PNG 1
-#define DPOUTPUT_OPENEXR 2
-
-struct Object;
-struct Scene;
-struct DerivedMesh;
-
 /* precalculated gaussian factors for 5x super sampling	*/
-float gaussianFactors[5] = {	0.996849f,
+static float gaussianFactors[5] = {	0.996849f,
 								0.596145f,
 								0.596145f,
 								0.596145f,
 								0.524141f};
-float gaussianTotal = 3.309425f;
+static float gaussianTotal = 3.309425f;
 
-/*
-*	UV Image neighbouring pixel table x and y list
-*/
-int neighX[8] = {1,1,0,-1,-1,-1, 0, 1};
-int neighY[8] = {0,1,1, 1, 0,-1,-1,-1};
+/* UV Image neighbouring pixel table x and y list */
+static int neighX[8] = {1,1,0,-1,-1,-1, 0, 1};
+static int neighY[8] = {0,1,1, 1, 0,-1,-1,-1};
 
+/* subframe_updateObject() flags */
+#define UPDATE_PARENTS (1<<0)
+#define UPDATE_MESH (1<<1)
+#define UPDATE_EVERYTHING (UPDATE_PARENTS|UPDATE_MESH)
+/* surface_getBrushFlags() return vals */
+#define BRUSH_USES_VELOCITY (1<<0)
+/* brush mesh raycast status */
+#define HIT_VOLUME 1
+#define HIT_PROXIMITY 2
+/* paint effect default movement per frame in global units */
+#define EFF_MOVEMENT_PER_FRAME 0.05f
+/* initial wave time factor */
+#define WAVE_TIME_FAC 0.1
+/* vector macros */
+#define VECADDVAL(v,val) 	{*(v)+=(val); *(v+1)+=(val); *(v+2)+=(val);}
+#define VECMULVAL(v,val) 	{*(v)*=(val); *(v+1)*=(val); *(v+2)*=(val);}
+/* dissolve macro */
+#define VALUE_DISSOLVE(VALUE, SPEED, SCALE, LOG) (VALUE) = (LOG) ? (VALUE) * 1.0f - 1.0f/((SPEED)/(SCALE)) : (VALUE) - 1.0f/(SPEED)*(SCALE)
+
 static int dynamicPaint_doStep(Scene *scene, Object *ob, DynamicPaintSurface *surface, float timescale, float subframe);
-static int dynamicPaint_calculateFrame(DynamicPaintSurface *surface, Scene *scene, Object *cObject, int frame);
 
 /***************************** Internal Structs ***************************/
 
@@ -127,7 +124,7 @@
 } Bounds3D;
 
 typedef struct VolumeGrid {
-	int x,y,z;
+	int dim[3];
 	Bounds3D grid_bounds; /* whole grid bounds */
 
 	Bounds3D *bounds;	/* (x*y*z) precalculated grid cell bounds */
@@ -373,13 +370,13 @@
 		surface->output_name[0]='\0';
 		surface->output_name2[0]='\0';
 		surface->flags |= MOD_DPAINT_ANTIALIAS;
-		surface->disp_clamp = 1.0f;
+		surface->depth_clamp = 1.0f;
 	}
 	else {
 		sprintf(surface->output_name, "dp_");
 		strcpy(surface->output_name2,surface->output_name);
 		surface->flags &= ~MOD_DPAINT_ANTIALIAS;
-		surface->disp_clamp = 0.0f;
+		surface->depth_clamp = 0.0f;
 	}
 
 	if (surface->type == MOD_DPAINT_SURFACE_T_PAINT) {
@@ -456,13 +453,8 @@
 	BLI_freelistN(&pidlist);
 }
 
-#define UPDATE_PARENTS (1<<0)
-#define UPDATE_MESH (1<<1)
-#define UPDATE_EVERYTHING (UPDATE_PARENTS|UPDATE_MESH)
-
 static void subframe_updateObject(Scene *scene, Object *ob, int flags, float frame)
 {
-	int oflags;
 	DynamicPaintModifierData *pmd = (DynamicPaintModifierData *)modifiers_findByType(ob, eModifierType_DynamicPaint);
 
 	/* if other is dynamic paint canvas, dont update */
@@ -473,17 +465,13 @@
 	if ((flags & UPDATE_PARENTS) && ob->parent) subframe_updateObject(scene, ob->parent, 0, frame);
 	if ((flags & UPDATE_PARENTS) && ob->track) subframe_updateObject(scene, ob->track, 0, frame);
 
-	/* for curve */
+	/* for curve following objects, parented curve has to be updated too */
 	if(ob->type==OB_CURVE) {
 		Curve *cu= ob->data;
 		BKE_animsys_evaluate_animdata(scene, &cu->id, cu->adt, frame, ADT_RECALC_ANIM);
 	}
-	
-	/* backup object flags */
-	oflags = ob->recalc;
 
 	ob->recalc |= OB_RECALC_ALL;
-	ob->recalc |= OB_RECALC_DATA;
 	BKE_animsys_evaluate_animdata(scene, &ob->id, ob->adt, frame, ADT_RECALC_ANIM);
 	if (flags & UPDATE_MESH) {
 		/* ignore cache clear during subframe updates
@@ -494,9 +482,6 @@
 	}
 	else
 		where_is_object_time(scene, ob, frame);
-
-	/* restore object flags */
-	ob->recalc = oflags;
 }
 
 static void scene_setSubframe(Scene *scene, float subframe)
@@ -645,72 +630,65 @@
 
 	/* allocate separate bounds for each thread */

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list