[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17161] branches/sim_physics/source/ blender: Point Density:
Matt Ebb
matt at mke3.net
Wed Oct 22 03:31:49 CEST 2008
Revision: 17161
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17161
Author: broken
Date: 2008-10-22 03:31:46 +0200 (Wed, 22 Oct 2008)
Log Message:
-----------
Point Density:
Replaced 'Sharp' falloff with 'Soft'. This falloff type has
a variable softness, and can get some quite smooth results.
It can be useful to get smooth transitions in density when
you're using particles on a large scale:
http://mke3.net/blender/devel/rendering/volumetrics/pd_falloff_soft.jpg
Also removed 'angular velocity' turbulence source - it
wasn't doing anything useful atm
Modified Paths:
--------------
branches/sim_physics/source/blender/blenkernel/intern/texture.c
branches/sim_physics/source/blender/blenloader/intern/readfile.c
branches/sim_physics/source/blender/makesdna/DNA_texture_types.h
branches/sim_physics/source/blender/render/intern/source/pointdensity.c
branches/sim_physics/source/blender/src/buttons_shading.c
Modified: branches/sim_physics/source/blender/blenkernel/intern/texture.c
===================================================================
--- branches/sim_physics/source/blender/blenkernel/intern/texture.c 2008-10-22 00:26:19 UTC (rev 17160)
+++ branches/sim_physics/source/blender/blenkernel/intern/texture.c 2008-10-22 01:31:46 UTC (rev 17161)
@@ -875,6 +875,7 @@
pd= MEM_callocN(sizeof(PointDensity), "pointdensity");
pd->radius = 0.3f;
pd->falloff_type = TEX_PD_FALLOFF_STD;
+ pd->falloff_softness = 2.0;
pd->source = TEX_PD_PSYS;
pd->point_tree = NULL;
pd->point_data = NULL;
Modified: branches/sim_physics/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/sim_physics/source/blender/blenloader/intern/readfile.c 2008-10-22 00:26:19 UTC (rev 17160)
+++ branches/sim_physics/source/blender/blenloader/intern/readfile.c 2008-10-22 01:31:46 UTC (rev 17161)
@@ -7908,6 +7908,8 @@
tex->pd->noise_fac = 1.0f;
tex->pd->noise_influence = TEX_PD_NOISE_STATIC;
}
+ if (tex->pd->falloff_softness < 1.0f)
+ tex->pd->falloff_softness = 2.0f;
}
}
Modified: branches/sim_physics/source/blender/makesdna/DNA_texture_types.h
===================================================================
--- branches/sim_physics/source/blender/makesdna/DNA_texture_types.h 2008-10-22 00:26:19 UTC (rev 17160)
+++ branches/sim_physics/source/blender/makesdna/DNA_texture_types.h 2008-10-22 01:31:46 UTC (rev 17161)
@@ -131,9 +131,10 @@
short flag;
short falloff_type;
+ float falloff_softness;
float radius;
short source;
- short pdpad[3];
+ short pdpad;
struct Object *object; /* for 'Object' or 'Particle system' type - source object */
short psys_cache_space; /* cache points in worldspace, object space, ... ? */
@@ -425,7 +426,7 @@
/* falloff_type */
#define TEX_PD_FALLOFF_STD 0
#define TEX_PD_FALLOFF_SMOOTH 1
-#define TEX_PD_FALLOFF_SHARP 2
+#define TEX_PD_FALLOFF_SOFT 2
#define TEX_PD_FALLOFF_CONSTANT 3
#define TEX_PD_FALLOFF_ROOT 4
@@ -441,8 +442,7 @@
/* noise_influence */
#define TEX_PD_NOISE_STATIC 0
#define TEX_PD_NOISE_VEL 1
-#define TEX_PD_NOISE_ANGVEL 2
-#define TEX_PD_NOISE_TIME 3
+#define TEX_PD_NOISE_TIME 2
#endif
Modified: branches/sim_physics/source/blender/render/intern/source/pointdensity.c
===================================================================
--- branches/sim_physics/source/blender/render/intern/source/pointdensity.c 2008-10-22 00:26:19 UTC (rev 17160)
+++ branches/sim_physics/source/blender/render/intern/source/pointdensity.c 2008-10-22 01:31:46 UTC (rev 17161)
@@ -107,10 +107,6 @@
pd->point_data[i*3 + 0] = state.vel[0];
pd->point_data[i*3 + 1] = state.vel[1];
pd->point_data[i*3 + 2] = state.vel[2];
- } else if (pd->noise_influence == TEX_PD_NOISE_ANGVEL) {
- pd->point_data[i*3 + 0] = state.ave[0];
- pd->point_data[i*3 + 1] = state.ave[1];
- pd->point_data[i*3 + 2] = state.ave[2];
}
}
}
@@ -252,6 +248,7 @@
float squared_radius;
float *point_data;
float *vec;
+ float softness;
short falloff_type;
} PointDensityRangeData;
@@ -265,8 +262,8 @@
density = dist;
else if (pdr->falloff_type == TEX_PD_FALLOFF_SMOOTH)
density = 3.0f*dist*dist - 2.0f*dist*dist*dist;
- else if (pdr->falloff_type == TEX_PD_FALLOFF_SHARP)
- density = dist*dist;
+ else if (pdr->falloff_type == TEX_PD_FALLOFF_SOFT)
+ density = pow(dist, pdr->softness);
else if (pdr->falloff_type == TEX_PD_FALLOFF_CONSTANT)
density = pdr->squared_radius;
else if (pdr->falloff_type == TEX_PD_FALLOFF_ROOT)
@@ -302,6 +299,7 @@
pdr.point_data = pd->point_data;
pdr.falloff_type = pd->falloff_type;
pdr.vec = vec;
+ pdr.softness = pd->falloff_softness;
noise_fac = pd->noise_fac * 0.5f; /* better default */
if (pd->flag & TEX_PD_TURBULENCE) {
@@ -329,13 +327,16 @@
texres->tin = density;
- //texres->tr = vec[0];
- //texres->tg = vec[1];
- //texres->tb = vec[2];
+
+ BRICONT;
+
return TEX_INT;
/*
+ texres->tr = vec[0];
+ texres->tg = vec[1];
+ texres->tb = vec[2];
BRICONTRGB;
texres->ta = 1.0;
Modified: branches/sim_physics/source/blender/src/buttons_shading.c
===================================================================
--- branches/sim_physics/source/blender/src/buttons_shading.c 2008-10-22 00:26:19 UTC (rev 17160)
+++ branches/sim_physics/source/blender/src/buttons_shading.c 2008-10-22 01:31:46 UTC (rev 17161)
@@ -738,7 +738,7 @@
short yco=PANEL_YMAX;
block= uiNewBlock(&curarea->uiblocks, "texture_panel_pointdensity", UI_EMBOSS, UI_HELV, curarea->win);
- if(uiNewPanel(curarea, block, "Point Density", "Texture", PANELX, PANELY, PANELW, PANELH)==0) return;
+ if(uiNewPanel(curarea, block, "Point Density", "Texture", PANELX, PANELY, PANELW, PANELH+25)==0) return;
uiSetButLock(tex->id.lib!=0, ERROR_LIBDATA_MESSAGE);
if(tex->pd==NULL) {
@@ -758,8 +758,14 @@
uiDefBut(block, LABEL, B_NOP, "Falloff:",
X2CLM1, yco-=BUTH, BUTW2, BUTH, 0, 0, 0, 0, 0, "");
- uiDefButS(block, MENU, B_REDR, "Standard %x0|Smooth %x1|Sharp %x2|Constant %x3|Root %x4",
+ uiBlockBeginAlign(block);
+ uiDefButS(block, MENU, B_REDR, "Standard %x0|Smooth %x1|Soft %x2|Constant %x3|Root %x4",
X2CLM1, yco-=BUTH, BUTW2, BUTH, &pd->falloff_type, 0.0, 0.0, 0, 0, "Falloff type");
+ if (pd->falloff_type == TEX_PD_FALLOFF_SOFT) {
+ uiDefButF(block, NUM, B_REDR, "Softness: ",
+ X2CLM1, yco-=BUTH, BUTW2, BUTH, &(pd->falloff_softness), 1.0, 1024.0, 10, 2, "The intensity of the falloff");
+ }
+ uiBlockEndAlign(block);
yco -= YSPACE;
@@ -782,7 +788,7 @@
yco -= YSPACE;
if (pd->source == TEX_PD_PSYS) {
- uiDefButS(block, MENU, B_REDR, "Noise Influence %t|Static %x0|Velocity %x1|Angular Velocity %x2",
+ uiDefButS(block, MENU, B_REDR, "Noise Influence %t|Static %x0|Velocity %x1",
X2CLM1, yco-=BUTH, BUTW2, BUTH, &(pd->noise_influence), 0.0, 0.0, 0, 0, "Noise Influence");
}
}
More information about the Bf-blender-cvs
mailing list