Revision: 47228
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47228
Author:   nazgul
Date:     2012-05-30 14:39:20 +0000 (Wed, 30 May 2012)
Log Message:
-----------
Several small fixes to nodes:

- Code formation fix in keying node
- Fixed crash when creating keying screen for frame where there's no movie
- Attempt to improve keying node to handle alpha on hair better

Modified Paths:
--------------
    
branches/soc-2011-tomato/source/blender/compositor/operations/COM_KeyingOperation.cpp
    
branches/soc-2011-tomato/source/blender/compositor/operations/COM_KeyingScreenOperation.cpp

Modified: 
branches/soc-2011-tomato/source/blender/compositor/operations/COM_KeyingOperation.cpp
===================================================================
--- 
branches/soc-2011-tomato/source/blender/compositor/operations/COM_KeyingOperation.cpp
       2012-05-30 14:33:24 UTC (rev 47227)
+++ 
branches/soc-2011-tomato/source/blender/compositor/operations/COM_KeyingOperation.cpp
       2012-05-30 14:39:20 UTC (rev 47228)
@@ -47,7 +47,7 @@
        float mid = pixel[0] + pixel[1] + pixel[2] - min - max;
        float val = (1.0f - screen_balance) * min + screen_balance * mid;
 
-       return max - val;
+       return (max - val) * (1.0f - val) * (1.0f - val);
 }
 
 KeyingOperation::KeyingOperation(): NodeOperation()
@@ -92,7 +92,7 @@
        if (primary_channel != screen_primary_channel) {
                /* different main channel means pixel is on foreground */
                color[0] = 1.0f;
-        }
+       }
         else if (saturation >= screen_saturation) {
                /* saturation of main channel is more than screen, definitely a 
background */
                color[0] = 0.0f;
@@ -102,7 +102,7 @@
 
                distance = 1.0f - saturation / screen_saturation;
 
-               color[0] = distance;
+               color[0] = distance * distance;
 
                if (color[0] < this->clipBlack)
                        color[0] = 0.0f;
@@ -110,5 +110,5 @@
                        color[0] = 1.0f;
                else
                        color[0] = (color[0] - this->clipBlack) / 
(this->clipWhite - this->clipBlack);
-        }
+       }
 }

Modified: 
branches/soc-2011-tomato/source/blender/compositor/operations/COM_KeyingScreenOperation.cpp
===================================================================
--- 
branches/soc-2011-tomato/source/blender/compositor/operations/COM_KeyingScreenOperation.cpp
 2012-05-30 14:33:24 UTC (rev 47227)
+++ 
branches/soc-2011-tomato/source/blender/compositor/operations/COM_KeyingScreenOperation.cpp
 2012-05-30 14:39:20 UTC (rev 47228)
@@ -102,11 +102,14 @@
        if (!sites_total)
                return NULL;
 
-       triangulation = (TriangulationData *) 
MEM_callocN(sizeof(TriangulationData), "keying screen triangulation data");
-
        BKE_movieclip_user_set_frame(&user, framenumber);
        ibuf = BKE_movieclip_get_ibuf(movieClip, &user);
 
+       if (!ibuf)
+               return NULL;
+
+       triangulation = (TriangulationData *) 
MEM_callocN(sizeof(TriangulationData), "keying screen triangulation data");
+
        sites = (VoronoiSite *) MEM_callocN(sizeof(VoronoiSite) * sites_total, 
"keyingscreen voronoi sites");
        track = (MovieTrackingTrack *) tracksbase->first;
        i = 0;

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to