[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54300] trunk/blender/source/blender: Compositor "Relative" option for Translate node, same as for other nodes this

Brecht Van Lommel brechtvanlommel at pandora.be
Mon Feb 4 17:12:42 CET 2013


Revision: 54300
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54300
Author:   blendix
Date:     2013-02-04 16:12:42 +0000 (Mon, 04 Feb 2013)
Log Message:
-----------
Compositor "Relative" option for Translate node, same as for other nodes this
makes it possible to specify an offset relative to the render resolution (so 0.5
is half the image rather than giving the number of pixels). It's a bit late but
it's a trivial change and needed for 4k mango render.

Modified Paths:
--------------
    trunk/blender/source/blender/compositor/nodes/COM_TranslateNode.cpp
    trunk/blender/source/blender/compositor/operations/COM_TranslateOperation.cpp
    trunk/blender/source/blender/compositor/operations/COM_TranslateOperation.h
    trunk/blender/source/blender/editors/space_node/drawnode.c
    trunk/blender/source/blender/makesdna/DNA_node_types.h
    trunk/blender/source/blender/makesrna/intern/rna_nodetree.c

Modified: trunk/blender/source/blender/compositor/nodes/COM_TranslateNode.cpp
===================================================================
--- trunk/blender/source/blender/compositor/nodes/COM_TranslateNode.cpp	2013-02-04 16:12:37 UTC (rev 54299)
+++ trunk/blender/source/blender/compositor/nodes/COM_TranslateNode.cpp	2013-02-04 16:12:42 UTC (rev 54300)
@@ -38,10 +38,18 @@
 	OutputSocket *outputSocket = this->getOutputSocket(0);
 	TranslateOperation *operation = new TranslateOperation();
 
-	bNode *editorNode = this->getbNode();
-	NodeTranslateData *data = (NodeTranslateData *)editorNode->storage;
+	bNode *bnode = this->getbNode();
+	NodeTranslateData *data = (NodeTranslateData *)bnode->storage;
 	operation->setWrapping(data->wrap_axis);
 
+	if (data->relative) {
+		const RenderData *rd = context->getRenderData();
+		float fx = rd->xsch * rd->size / 100.0f;
+		float fy = rd->ysch * rd->size / 100.0f;
+
+		operation->setFactorXY(fx, fy);
+	}
+
 	inputSocket->relinkConnections(operation->getInputSocket(0), 0, graph);
 	inputXSocket->relinkConnections(operation->getInputSocket(1), 1, graph);
 	inputYSocket->relinkConnections(operation->getInputSocket(2), 2, graph);

Modified: trunk/blender/source/blender/compositor/operations/COM_TranslateOperation.cpp
===================================================================
--- trunk/blender/source/blender/compositor/operations/COM_TranslateOperation.cpp	2013-02-04 16:12:37 UTC (rev 54299)
+++ trunk/blender/source/blender/compositor/operations/COM_TranslateOperation.cpp	2013-02-04 16:12:42 UTC (rev 54300)
@@ -34,6 +34,8 @@
 	this->m_inputXOperation = NULL;
 	this->m_inputYOperation = NULL;
 	this->m_isDeltaSet = false;
+	this->m_factorX = 1.0f;
+	this->m_factorY = 1.0f;
 }
 void TranslateOperation::initExecution()
 {
@@ -180,3 +182,10 @@
 	while (originalYPos < 0) originalYPos += this->m_height;
 	return fmodf(originalYPos, this->getHeight());
 }
+
+float TranslateOperation::setFactorXY(float factorX, float factorY)
+{
+	m_factorX = factorX;
+	m_factorY = factorY;
+}
+

Modified: trunk/blender/source/blender/compositor/operations/COM_TranslateOperation.h
===================================================================
--- trunk/blender/source/blender/compositor/operations/COM_TranslateOperation.h	2013-02-04 16:12:37 UTC (rev 54299)
+++ trunk/blender/source/blender/compositor/operations/COM_TranslateOperation.h	2013-02-04 16:12:42 UTC (rev 54300)
@@ -35,6 +35,8 @@
 	bool m_isDeltaSet;
 	float m_relativeOffsetX;
 	float m_relativeOffsetY;
+	float m_factorX;
+	float m_factorY;
 	char m_wrappingType;
 public:
 	TranslateOperation();
@@ -44,8 +46,8 @@
 	void initExecution();
 	void deinitExecution();
 
-	float getDeltaX() { return this->m_deltaX; }
-	float getDeltaY() { return this->m_deltaY; }
+	float getDeltaX() { return this->m_deltaX * this->m_factorX; }
+	float getDeltaY() { return this->m_deltaY * this->m_factorY; }
 	
 	inline void ensureDelta() {
 		if (!this->m_isDeltaSet) {
@@ -61,6 +63,8 @@
 	void setWrapping(char wrapping_type);
 	float getWrappedOriginalXPos(float x);
 	float getWrappedOriginalYPos(float y);
+
+	float setFactorXY(float factorX, float factorY);
 };
 
 #endif

Modified: trunk/blender/source/blender/editors/space_node/drawnode.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/drawnode.c	2013-02-04 16:12:37 UTC (rev 54299)
+++ trunk/blender/source/blender/editors/space_node/drawnode.c	2013-02-04 16:12:42 UTC (rev 54300)
@@ -2381,6 +2381,7 @@
 
 static void node_composit_buts_translate(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
 {
+	uiItemR(layout, ptr, "use_relative", 0, NULL, ICON_NONE);
 	uiItemR(layout, ptr, "wrap_axis", 0, NULL, ICON_NONE);
 }
 

Modified: trunk/blender/source/blender/makesdna/DNA_node_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_node_types.h	2013-02-04 16:12:37 UTC (rev 54299)
+++ trunk/blender/source/blender/makesdna/DNA_node_types.h	2013-02-04 16:12:42 UTC (rev 54300)
@@ -712,7 +712,9 @@
 } NodeTrackPosData;
 
 typedef struct NodeTranslateData {
-	char wrap_axis, pad[7];
+	char wrap_axis;
+	char relative;
+	char pad[6];
 } NodeTranslateData;
 
 

Modified: trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_nodetree.c	2013-02-04 16:12:37 UTC (rev 54299)
+++ trunk/blender/source/blender/makesrna/intern/rna_nodetree.c	2013-02-04 16:12:42 UTC (rev 54300)
@@ -4239,6 +4239,11 @@
 
 	RNA_def_struct_sdna_from(srna, "NodeTranslateData", "storage");
 
+	prop = RNA_def_property(srna, "use_relative", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_sdna(prop, NULL, "relative", 1);
+	RNA_def_property_ui_text(prop, "Relative", "Use relative (percent) values to define blur radius");
+	RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
+
 	prop = RNA_def_property(srna, "wrap_axis", PROP_ENUM, PROP_NONE);
 	RNA_def_property_enum_sdna(prop, NULL, "wrap_axis");
 	RNA_def_property_enum_items(prop, translate_items);




More information about the Bf-blender-cvs mailing list