[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52309] trunk/blender/source/blender: Fix compositing normal node not properly showing vector XYZ values when opening

Brecht Van Lommel brechtvanlommel at pandora.be
Sat Nov 17 17:11:03 CET 2012


Revision: 52309
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52309
Author:   blendix
Date:     2012-11-17 16:11:02 +0000 (Sat, 17 Nov 2012)
Log Message:
-----------
Fix compositing normal node not properly showing vector XYZ values when opening
socket menu, and make the normal animatable.

Modified Paths:
--------------
    trunk/blender/source/blender/compositor/nodes/COM_NormalNode.cpp
    trunk/blender/source/blender/editors/interface/interface_layout.c
    trunk/blender/source/blender/editors/interface/interface_widgets.c
    trunk/blender/source/blender/editors/space_node/drawnode.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_normal.c

Modified: trunk/blender/source/blender/compositor/nodes/COM_NormalNode.cpp
===================================================================
--- trunk/blender/source/blender/compositor/nodes/COM_NormalNode.cpp	2012-11-17 16:10:47 UTC (rev 52308)
+++ trunk/blender/source/blender/compositor/nodes/COM_NormalNode.cpp	2012-11-17 16:11:02 UTC (rev 52309)
@@ -41,9 +41,14 @@
 	SetVectorOperation *operationSet = new SetVectorOperation();
 	bNodeSocket *insock = (bNodeSocket *)editorNode->outputs.first;
 	bNodeSocketValueVector *dval = (bNodeSocketValueVector *)insock->default_value;
-	operationSet->setX(dval->value[0]);
-	operationSet->setY(dval->value[1]);
-	operationSet->setZ(dval->value[2]);
+	float normal[3];
+
+	/* animation can break normalization, this restores it */
+	normalize_v3_v3(normal, dval->value);
+
+	operationSet->setX(normal[0]);
+	operationSet->setY(normal[1]);
+	operationSet->setZ(normal[2]);
 	operationSet->setW(0.0f);
 	
 	outputSocket->relinkConnections(operationSet->getOutputSocket(0));

Modified: trunk/blender/source/blender/editors/interface/interface_layout.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_layout.c	2012-11-17 16:10:47 UTC (rev 52308)
+++ trunk/blender/source/blender/editors/interface/interface_layout.c	2012-11-17 16:11:02 UTC (rev 52309)
@@ -430,7 +430,7 @@
 				but->type = NUMSLI;
 		}
 	}
-	else if (subtype == PROP_DIRECTION) {
+	else if (subtype == PROP_DIRECTION && !expand) {
 		uiDefButR_prop(block, BUT_NORMAL, 0, name, x, y, UI_UNIT_X * 3, UI_UNIT_Y * 3, ptr, prop, 0, 0, 0, -1, -1, NULL);
 	}
 	else {

Modified: trunk/blender/source/blender/editors/interface/interface_widgets.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_widgets.c	2012-11-17 16:10:47 UTC (rev 52308)
+++ trunk/blender/source/blender/editors/interface/interface_widgets.c	2012-11-17 16:11:02 UTC (rev 52309)
@@ -2623,6 +2623,11 @@
 	
 }
 
+static void widget_normal(uiBut *but, uiWidgetColors *wcol, rcti *rect, int UNUSED(state), int UNUSED(roundboxalign))
+{
+	ui_draw_but_NORMAL(but, wcol, rect);
+}
+
 static void widget_icon_has_anim(uiBut *UNUSED(but), uiWidgetColors *wcol, rcti *rect, int state, int UNUSED(roundboxalign))
 {
 	if (state & (UI_BUT_ANIMATED | UI_BUT_ANIMATED_KEY | UI_BUT_DRIVEN | UI_BUT_REDALERT)) {
@@ -3030,6 +3035,7 @@
 			break;
 			
 		case UI_WTYPE_NORMAL:
+			wt.custom = widget_normal;
 			break;
 
 		case UI_WTYPE_SCROLL:
@@ -3269,7 +3275,7 @@
 				break;
 				
 			case BUT_NORMAL:
-				ui_draw_but_NORMAL(but, &tui->wcol_regular, rect);
+				wt = widget_type(UI_WTYPE_NORMAL);
 				break;
 				
 			case BUT_IMAGE:

Modified: trunk/blender/source/blender/editors/space_node/drawnode.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/drawnode.c	2012-11-17 16:10:47 UTC (rev 52308)
+++ trunk/blender/source/blender/editors/space_node/drawnode.c	2012-11-17 16:11:02 UTC (rev 52309)
@@ -398,29 +398,15 @@
 	uiTemplateCurveMapping(layout, ptr, "mapping", 'c', 0, 0);
 }
 
-static void node_normal_cb(bContext *C, void *ntree_v, void *node_v)
-{
-	Main *bmain = CTX_data_main(C);
-
-	ED_node_generic_update(bmain, ntree_v, node_v);
-	WM_event_add_notifier(C, NC_NODE | NA_EDITED, ntree_v);
-}
-
 static void node_buts_normal(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
 {
-	uiBlock *block = uiLayoutAbsoluteBlock(layout);
-	bNodeTree *ntree = ptr->id.data;
-	bNode *node = ptr->data;
-	rctf *butr = &node->butr;
+	bNodeTree *ntree = (bNodeTree*)ptr->id.data;
+	bNode *node = (bNode*)ptr->data;
 	bNodeSocket *sock = node->outputs.first;     /* first socket stores normal */
-	float *nor = ((bNodeSocketValueVector *)sock->default_value)->value;
-	uiBut *bt;
-	
-	bt = uiDefButF(block, BUT_NORMAL, B_NODE_EXEC, "",
-	               (int)butr->xmin, (int)butr->xmin,
-	               (short)BLI_rctf_size_x(butr), (short)BLI_rctf_size_x(butr),
-	               nor, 0.0f, 1.0f, 0, 0, "");
-	uiButSetFunc(bt, node_normal_cb, ntree, node);
+	PointerRNA sockptr;
+
+	RNA_pointer_create(&ntree->id, &RNA_NodeSocket, sock, &sockptr);
+	uiItemR(layout, &sockptr, "default_value", 0, "", ICON_NONE);
 }
 #if 0 /* not used in 2.5x yet */
 static void node_browse_tex_cb(bContext *C, void *ntree_v, void *node_v)

Modified: trunk/blender/source/blender/nodes/composite/nodes/node_composite_normal.c
===================================================================
--- trunk/blender/source/blender/nodes/composite/nodes/node_composite_normal.c	2012-11-17 16:10:47 UTC (rev 52308)
+++ trunk/blender/source/blender/nodes/composite/nodes/node_composite_normal.c	2012-11-17 16:11:02 UTC (rev 52309)
@@ -40,7 +40,7 @@
 };
 
 static bNodeSocketTemplate cmp_node_normal_out[] = {
-	{	SOCK_VECTOR, 0, N_("Normal")},
+	{	SOCK_VECTOR, 0, N_("Normal"),	0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_DIRECTION},
 	{	SOCK_FLOAT, 0, N_("Dot")},
 	{	-1, 0, ""	}
 };




More information about the Bf-blender-cvs mailing list