[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53507] trunk/blender: Fix [#33189] AFTER 2.65 - Units in doc strings in ocean modifier.

Bastien Montagne montagne29 at wanadoo.fr
Wed Jan 2 17:04:04 CET 2013


Revision: 53507
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53507
Author:   mont29
Date:     2013-01-02 16:03:58 +0000 (Wed, 02 Jan 2013)
Log Message:
-----------
Fix [#33189] AFTER 2.65 - Units in doc strings in ocean modifier.

Also:
* Fixes a (op prop) bug which prevented, once you had baked and freed ocean once, to bake again.
* Fixed infinite values of acumulated foam when baking with foam_fade values above 1.0, now simply clipping accumulated foam value to 1.0, as already done for the "instantaneaous" foam value returned by BKE_ocean_jminus_to_foam().
* Added missing RNA descriptions.
* Made foam_fade unanimatable!
* Added in UI some missing properties that are imho useful: random seed, size (kindof 'surface scaling'), and foam_fade (baking only).
* Removed custom lerp() func from bke's ocean.c, BLI's interpf does exactly the same thing (the first two args are just in reversed order). Note: this could most certainly be done in other parts of the code, bpy's mathutils for e.g. has its own linear interpolation code for vectors and matrices :/).
* Did some general code cleanup (mostly line length and no C++ -> C comments)...

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_ui/properties_data_modifier.py
    trunk/blender/source/blender/blenkernel/intern/ocean.c
    trunk/blender/source/blender/makesrna/intern/rna_modifier.c
    trunk/blender/source/blender/modifiers/intern/MOD_ocean.c

Modified: trunk/blender/release/scripts/startup/bl_ui/properties_data_modifier.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/properties_data_modifier.py	2013-01-02 13:41:30 UTC (rev 53506)
+++ trunk/blender/release/scripts/startup/bl_ui/properties_data_modifier.py	2013-01-02 16:03:58 UTC (rev 53507)
@@ -489,11 +489,13 @@
 
         col = split.column()
         col.prop(md, "time")
-        col.prop(md, "resolution")
+        col.prop(md, "depth")
+        col.prop(md, "random_seed")
 
         col = split.column()
+        col.prop(md, "resolution")
+        col.prop(md, "size")
         col.prop(md, "spatial_size")
-        col.prop(md, "depth")
 
         layout.label("Waves:")
 
@@ -534,7 +536,7 @@
         if md.is_cached:
             layout.operator("object.ocean_bake", text="Free Bake").free = True
         else:
-            layout.operator("object.ocean_bake")
+            layout.operator("object.ocean_bake").free = False
 
         split = layout.split()
         split.enabled = not md.is_cached
@@ -547,8 +549,16 @@
         col.label(text="Cache path:")
         col.prop(md, "filepath", text="")
 
-        #col.prop(md, "bake_foam_fade")
+        split = layout.split()
+        split.enabled = not md.is_cached
 
+        col = split.column()
+        col.active = md.use_foam
+        col.prop(md, "bake_foam_fade")
+
+        col = split.column()
+
+
     def PARTICLE_INSTANCE(self, layout, ob, md):
         layout.prop(md, "object")
         layout.prop(md, "particle_system_index", text="Particle System")

Modified: trunk/blender/source/blender/blenkernel/intern/ocean.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/ocean.c	2013-01-02 13:41:30 UTC (rev 53506)
+++ trunk/blender/source/blender/blenkernel/intern/ocean.c	2013-01-02 16:03:58 UTC (rev 53507)
@@ -35,16 +35,15 @@
 
 #include "DNA_scene_types.h"
 
+#include "BKE_global.h" /* XXX TESTING */
 #include "BKE_image.h"
 #include "BKE_ocean.h"
-#include "BKE_global.h" // XXX TESTING
 
-#include "BLI_math_base.h"
-#include "BLI_math_inline.h"
+#include "BLI_math.h"
+#include "BLI_path_util.h"
 #include "BLI_rand.h"
 #include "BLI_string.h"
 #include "BLI_threads.h"
-#include "BLI_path_util.h"
 #include "BLI_utildefines.h"
 
 #include "IMB_imbuf.h"
@@ -54,7 +53,7 @@
 
 #ifdef WITH_OCEANSIM
 
-// Ocean code
+/* Ocean code */
 #include "fftw3.h"
 
 #define GRAVITY  9.81f
@@ -82,7 +81,7 @@
 	float _Lx;
 	float _Lz;
 
-	float normalize_factor;                 // init w
+	float normalize_factor;                 /* init w */
 	float time;
 
 	short _do_disp_y;
@@ -96,51 +95,52 @@
 	/* ********* sim data arrays ********* */
 
 	/* two dimensional arrays of complex */
-	fftw_complex *_fft_in;          // init w	sim w
-	fftw_complex *_fft_in_x;        // init w	sim w
-	fftw_complex *_fft_in_z;        // init w	sim w
-	fftw_complex *_fft_in_jxx;      // init w	sim w
-	fftw_complex *_fft_in_jzz;      // init w	sim w
-	fftw_complex *_fft_in_jxz;      // init w	sim w
-	fftw_complex *_fft_in_nx;       // init w	sim w
-	fftw_complex *_fft_in_nz;       // init w	sim w
-	fftw_complex *_htilda;          // init w	sim w (only once)
+	fftw_complex *_fft_in;          /* init w	sim w */
+	fftw_complex *_fft_in_x;        /* init w	sim w */
+	fftw_complex *_fft_in_z;        /* init w	sim w */
+	fftw_complex *_fft_in_jxx;      /* init w	sim w */
+	fftw_complex *_fft_in_jzz;      /* init w	sim w */
+	fftw_complex *_fft_in_jxz;      /* init w	sim w */
+	fftw_complex *_fft_in_nx;       /* init w	sim w */
+	fftw_complex *_fft_in_nz;       /* init w	sim w */
+	fftw_complex *_htilda;          /* init w	sim w (only once) */
 
 	/* fftw "plans" */
-	fftw_plan _disp_y_plan;         // init w	sim r
-	fftw_plan _disp_x_plan;         // init w	sim r
-	fftw_plan _disp_z_plan;         // init w	sim r
-	fftw_plan _N_x_plan;            // init w	sim r
-	fftw_plan _N_z_plan;            // init w	sim r
-	fftw_plan _Jxx_plan;            // init w	sim r
-	fftw_plan _Jxz_plan;            // init w	sim r
-	fftw_plan _Jzz_plan;            // init w	sim r
+	fftw_plan _disp_y_plan;         /* init w	sim r */
+	fftw_plan _disp_x_plan;         /* init w	sim r */
+	fftw_plan _disp_z_plan;         /* init w	sim r */
+	fftw_plan _N_x_plan;            /* init w	sim r */
+	fftw_plan _N_z_plan;            /* init w	sim r */
+	fftw_plan _Jxx_plan;            /* init w	sim r */
+	fftw_plan _Jxz_plan;            /* init w	sim r */
+	fftw_plan _Jzz_plan;            /* init w	sim r */
 
 	/* two dimensional arrays of float */
-	double *_disp_y;                // init w	sim w via plan?
-	double *_N_x;                   // init w	sim w via plan?
-	/*float * _N_y; all member of this array has same values, so convert this array to a float to reduce memory usage (MEM01)*/
-	double _N_y;                    //			sim w ********* can be rearranged?
-	double *_N_z;                   // init w	sim w via plan?
-	double *_disp_x;                // init w	sim w via plan?
-	double *_disp_z;                // init w	sim w via plan?
+	double *_disp_y;                /* init w	sim w via plan? */
+	double *_N_x;                   /* init w	sim w via plan? */
+	/* all member of this array has same values, so convert this array to a float to reduce memory usage (MEM01)*/
+	/*float * _N_y; */
+	double _N_y;                    /*			sim w ********* can be rearranged? */
+	double *_N_z;                   /* init w	sim w via plan? */
+	double *_disp_x;                /* init w	sim w via plan? */
+	double *_disp_z;                /* init w	sim w via plan? */
 
 	/* two dimensional arrays of float */
 	/* Jacobian and minimum eigenvalue */
-	double *_Jxx;                   // init w	sim w
-	double *_Jzz;                   // init w	sim w
-	double *_Jxz;                   // init w	sim w
+	double *_Jxx;                   /* init w	sim w */
+	double *_Jzz;                   /* init w	sim w */
+	double *_Jxz;                   /* init w	sim w */
 
 	/* one dimensional float array */
-	float *_kx;                     // init w	sim r
-	float *_kz;                     // init w	sim r
+	float *_kx;                     /* init w	sim r */
+	float *_kz;                     /* init w	sim r */
 
 	/* two dimensional complex array */
-	fftw_complex *_h0;              // init w	sim r
-	fftw_complex *_h0_minus;        // init w	sim r
+	fftw_complex *_h0;              /* init w	sim r */
+	fftw_complex *_h0_minus;        /* init w	sim r */
 
 	/* two dimensional float array */
-	float *_k;                      // init w	sim r
+	float *_k;                      /* init w	sim r */
 } Ocean;
 
 
@@ -152,10 +152,13 @@
 
 static float gaussRand(void)
 {
-	float x;        // Note: to avoid numerical problems with very small
-	float y;        // numbers, we make these variables singe-precision
-	float length2;  // floats, but later we call the double-precision log()
-	// and sqrt() functions instead of logf() and sqrtf().
+	/* Note: to avoid numerical problems with very small numbers, we make these variables singe-precision floats,
+	 * but later we call the double-precision log() and sqrt() functions instead of logf() and sqrtf().
+	 */ 
+	float x;
+	float y;
+	float length2;
+
 	do {
 		x = (float) (nextfr(-1, 1));
 		y = (float)(nextfr(-1, 1));
@@ -167,12 +170,7 @@
 
 /**
  * Some useful functions
- * */
-MINLINE float lerp(float a, float b, float f)
-{
-	return a + (b - a) * f;
-}
-
+ */
 MINLINE float catrom(float p0, float p1, float p2, float p3, float f)
 {
 	return 0.5f * ((2.0f * p1) +
@@ -186,23 +184,24 @@
 	return sqrtf(GRAVITY * k * tanhf(k * depth));
 }
 
-// modified Phillips spectrum
+/* modified Phillips spectrum */
 static float Ph(struct Ocean *o, float kx, float kz)
 {
 	float tmp;
 	float k2 = kx * kx + kz * kz;
 
 	if (k2 == 0.0f) {
-		return 0.0f; // no DC component
+		return 0.0f; /* no DC component */
 	}
 
-	// damp out the waves going in the direction opposite the wind
+	/* damp out the waves going in the direction opposite the wind */
 	tmp = (o->_wx * kx + o->_wz * kz) / sqrtf(k2);
 	if (tmp < 0) {
 		tmp *= o->_damp_reflections;
 	}
 
-	return o->_A * expf(-1.0f / (k2 * (o->_L * o->_L))) * expf(-k2 * (o->_l * o->_l)) * powf(fabsf(tmp), o->_wind_alignment) / (k2 * k2);
+	return o->_A * expf(-1.0f / (k2 * (o->_L * o->_L))) * expf(-k2 * (o->_l * o->_l)) *
+	       powf(fabsf(tmp), o->_wind_alignment) / (k2 * k2);
 }
 
 static void compute_eigenstuff(struct OceanResult *ocr, float jxx, float jzz, float jxz)
@@ -240,7 +239,7 @@
 	cmpl[1] = image;
 }
 
-#if 0   // unused
+#if 0   /* unused */
 static void add_complex_f(fftw_complex res, fftw_complex cmpl, float f)
 {
 	res[0] = cmpl[0] + f;
@@ -306,7 +305,7 @@
 	float frac_x, frac_z;
 	float uu, vv;
 
-	// first wrap the texture so 0 <= (u, v) < 1
+	/* first wrap the texture so 0 <= (u, v) < 1 */
 	u = fmodf(u, 1.0f);
 	v = fmodf(v, 1.0f);
 
@@ -334,7 +333,9 @@
 	j1 = j1 % oc->_N;
 
 
-#define BILERP(m) (lerp(lerp(m[i0 * oc->_N + j0], m[i1 * oc->_N + j0], frac_x), lerp(m[i0 * oc->_N + j1], m[i1 * oc->_N + j1], frac_x), frac_z))
+#define BILERP(m) (interpf(interpf(m[i1 * oc->_N + j1], m[i0 * oc->_N + j1], frac_x), \
+                           interpf(m[i1 * oc->_N + j0], m[i0 * oc->_N + j0], frac_x), \
+                           frac_z))
 	{
 		if (oc->_do_disp_y) {
 			ocr->disp[1] = BILERP(oc->_disp_y);
@@ -364,14 +365,14 @@
 	BLI_rw_mutex_unlock(&oc->oceanmutex);
 }
 
-// use catmullrom interpolation rather than linear
+/* use catmullrom interpolation rather than linear */
 void BKE_ocean_eval_uv_catrom(struct Ocean *oc, struct OceanResult *ocr, float u, float v)
 {
 	int i0, i1, i2, i3, j0, j1, j2, j3;
 	float frac_x, frac_z;
 	float uu, vv;
 
-	// first wrap the texture so 0 <= (u, v) < 1
+	/* first wrap the texture so 0 <= (u, v) < 1 */
 	u = fmod(u, 1.0f);
 	v = fmod(v, 1.0f);
 
@@ -408,11 +409,15 @@
 	j0 = j0 <   0 ? j0 + oc->_N : j0;
 	j3 = j3 >= oc->_N ? j3 - oc->_N : j3;
 
-#define INTERP(m) catrom(catrom(m[i0 * oc->_N + j0], m[i1 * oc->_N + j0], m[i2 * oc->_N + j0], m[i3 * oc->_N + j0], frac_x), \
-	                     catrom(m[i0 * oc->_N + j1], m[i1 * oc->_N + j1], m[i2 * oc->_N + j1], m[i3 * oc->_N + j1], frac_x), \
-	                     catrom(m[i0 * oc->_N + j2], m[i1 * oc->_N + j2], m[i2 * oc->_N + j2], m[i3 * oc->_N + j2], frac_x), \

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list