[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41461] branches/soc-2011-carrot/source/ blender/blenkernel/intern/dynamicpaint.c: Dynamic Paint:
Miika Hamalainen
miika.hamalainen at kolumbus.fi
Wed Nov 2 12:32:22 CET 2011
Revision: 41461
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41461
Author: miikah
Date: 2011-11-02 11:32:22 +0000 (Wed, 02 Nov 2011)
Log Message:
-----------
Dynamic Paint:
* Some fixes and tweaking for the previous commit.
Modified Paths:
--------------
branches/soc-2011-carrot/source/blender/blenkernel/intern/dynamicpaint.c
Modified: branches/soc-2011-carrot/source/blender/blenkernel/intern/dynamicpaint.c
===================================================================
--- branches/soc-2011-carrot/source/blender/blenkernel/intern/dynamicpaint.c 2011-11-02 09:13:04 UTC (rev 41460)
+++ branches/soc-2011-carrot/source/blender/blenkernel/intern/dynamicpaint.c 2011-11-02 11:32:22 UTC (rev 41461)
@@ -2794,25 +2794,28 @@
/* Add paint */
if (!(paintFlags & MOD_DPAINT_ERASE)) {
- float wetness, mix[4];
+ float mix[4];
float temp_alpha = (*paintAlpha) * ((paintFlags & MOD_DPAINT_ABS_ALPHA) ? 1.0f : (*timescale));
/* mix brush color with wet layer color */
blendColors(pPoint->e_color, pPoint->e_alpha, paintColor, temp_alpha, mix);
copy_v3_v3(pPoint->e_color, mix);
- /* alpha */
+ /* mix wetness and alpha depending on selected alpha mode */
if (paintFlags & MOD_DPAINT_ABS_ALPHA) {
+ /* update values to the brush level unless theyre higher already */
if (pPoint->e_alpha < (*paintAlpha)) pPoint->e_alpha = (*paintAlpha);
+ if (pPoint->wetness < (*paintWetness)) pPoint->wetness = (*paintWetness);
}
else {
+ float wetness = (*paintWetness);
+ CLAMP(wetness, 0.0f, 1.0f);
pPoint->e_alpha = mix[3];
+ pPoint->wetness = pPoint->wetness*(1.0f-wetness) + wetness;
}
- /* only increase wetness if it's below paint level */
- wetness = (*paintWetness) * pPoint->e_alpha;
- CLAMP(wetness, 0.0f, 1.0f);
- if (pPoint->wetness < wetness) pPoint->wetness = wetness;
+ if (pPoint->wetness<MIN_WETNESS) pPoint->wetness = MIN_WETNESS;
+
pPoint->state = DPAINT_PAINT_NEW;
}
/* Erase paint */
@@ -2879,6 +2882,7 @@
{
PaintSurfaceData *sData = surface->data;
float strength = influence * brush->alpha;
+ CLAMP(strength, 0.0f, 1.0f);
/* Sample velocity colorband if required */
if (brush->flags & (MOD_DPAINT_VELOCITY_ALPHA|MOD_DPAINT_VELOCITY_COLOR|MOD_DPAINT_VELOCITY_DEPTH)) {
@@ -2904,7 +2908,6 @@
float paintWetness = brush->wetness * strength;
float paintAlpha = strength;
- if (paintAlpha > 1.0f) paintAlpha = 1.0f;
dynamicPaint_mixPaintColors(surface, index, brush->flags, paint, &paintAlpha, &paintWetness, ×cale);
@@ -4363,7 +4366,7 @@
if (surface->type == MOD_DPAINT_SURFACE_T_PAINT) {
PaintPoint *pPoint = &((PaintPoint*)sData->type_data)[index];
/* drying */
- if (pPoint->wetness > MIN_WETNESS) {
+ if (pPoint->wetness >= MIN_WETNESS) {
int i;
float dry_ratio, f_color[4];
float p_wetness = pPoint->wetness;
More information about the Bf-blender-cvs
mailing list