[Bf-blender-cvs] [091ef60] openvdb: Initial support for rendering vdb file sequences.

Kévin Dietrich noreply at git.blender.org
Fri Jun 5 14:07:10 CEST 2015


Commit: 091ef60e48b5b7fa6567d243f2f938c8874ff671
Author: Kévin Dietrich
Date:   Tue May 19 20:41:41 2015 +0200
Branches: openvdb
https://developer.blender.org/rB091ef60e48b5b7fa6567d243f2f938c8874ff671

Initial support for rendering vdb file sequences.

===================================================================

M	intern/cycles/blender/blender_shader.cpp
M	source/blender/editors/space_node/drawnode.c
M	source/blender/makesdna/DNA_node_types.h
M	source/blender/makesrna/intern/rna_nodetree.c

===================================================================

diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp
index 8096f46..8bb7378 100644
--- a/intern/cycles/blender/blender_shader.cpp
+++ b/intern/cycles/blender/blender_shader.cpp
@@ -742,6 +742,18 @@ static ShaderNode *add_node(Scene *scene,
 		vdb_node->filename = b_vdb_node.filename();
 		vdb_node->sampling = b_vdb_node.sampling();
 
+		/* TODO(kevin) */
+		if(b_vdb_node.source() == 1) {
+			string filename = b_vdb_node.filename();
+			string basename = filename.substr(0, filename.size() - 8);
+			stringstream ss;
+			ss << b_scene.frame_current();
+			string frame = ss.str();
+			frame.insert(frame.begin(), 4 - frame.size(), '0');
+
+			vdb_node->filename = ustring::format("%s%s.vdb", basename, frame);
+		}
+
 		BL::Node::outputs_iterator b_output;
 
 		for(b_vdb_node.outputs.begin(b_output); b_output != b_vdb_node.outputs.end(); ++b_output) {
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c
index b2939ea..3851e69 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -972,6 +972,7 @@ static void node_shader_buts_openvdb(uiLayout *layout, bContext *C, PointerRNA *
 
 	uiItemR(layout, ptr, "filename", 0, "", 0);
 	uiItemR(layout, ptr, "sampling", 0, "", 0);
+	uiItemR(layout, ptr, "source", 0, "", 0);
 
 	UNUSED_VARS(C);
 }
diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h
index 32afee7..e77ee28 100644
--- a/source/blender/makesdna/DNA_node_types.h
+++ b/source/blender/makesdna/DNA_node_types.h
@@ -857,7 +857,7 @@ typedef struct NodeShaderUVMap {
 
 typedef struct NodeShaderOpenVDB {
 	char filename[1024];
-	int sampling;
+	short sampling, source;
 } NodeShaderOpenVDB;
 
 enum {
@@ -865,6 +865,11 @@ enum {
 	NODE_VDB_SAMPLE_BOX   = 1,
 };
 
+enum {
+	NODE_VDB_SRC_FILE = 0,
+	NODE_VDB_SRC_SEQ  = 1,
+};
+
 typedef struct NodeSunBeams {
 	float source[2];
 
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 6cf9715..f0d2bd1 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -3902,6 +3902,12 @@ static void def_sh_openvdb(StructRNA *srna)
 		{0, NULL, 0, NULL, NULL}
 	};
 
+	static const EnumPropertyItem prop_openvdb_source[] = {
+		{NODE_VDB_SRC_FILE, "FILE", 0, "Single File", "Single vdb file"},
+		{NODE_VDB_SRC_SEQ, "SEQUENCE", 0, "File Sequence", "Multiple vdb files, as a sequence"},
+		{0, NULL, 0, NULL, NULL}
+	};
+
 	RNA_def_struct_sdna_from(srna, "NodeShaderOpenVDB", "storage");
 
 	prop = RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH);
@@ -3913,6 +3919,11 @@ static void def_sh_openvdb(StructRNA *srna)
 	RNA_def_property_ui_text(prop, "Sampling", "Grid interpolation");
 	RNA_def_property_update(prop, 0, "rna_Node_update");
 
+	prop = RNA_def_property(srna, "source", PROP_ENUM, PROP_NONE);
+	RNA_def_property_enum_items(prop, prop_openvdb_source);
+	RNA_def_property_ui_text(prop, "Source", "File Source");
+	RNA_def_property_update(prop, 0, "rna_Node_update");
+
 	RNA_def_struct_sdna_from(srna, "bNode", NULL);
 }




More information about the Bf-blender-cvs mailing list