[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42869] trunk/blender/intern/cycles/app: Cycles Test App:

Thomas Dinges blender at dingto.org
Sun Dec 25 14:34:28 CET 2011


Revision: 42869
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42869
Author:   dingto
Date:     2011-12-25 13:34:18 +0000 (Sun, 25 Dec 2011)
Log Message:
-----------
Cycles Test App:
* Added some new integrator parameters to the xml reading. 
* Added ability to specify window width/height, if not set it uses film/camera width/height. 
* Added back the xml exporter script from cycles branch, with modifications to hock up into the UI. To use it, copy the script into 2.61/scripts/startup.

Note: This is intended for developers for now, but the standalone Cycles app has potential to be used as benchmark for example. 

Modified Paths:
--------------
    trunk/blender/intern/cycles/app/cycles_test.cpp
    trunk/blender/intern/cycles/app/cycles_xml.cpp

Added Paths:
-----------
    trunk/blender/intern/cycles/app/io_export_cycles_xml.py

Modified: trunk/blender/intern/cycles/app/cycles_test.cpp
===================================================================
--- trunk/blender/intern/cycles/app/cycles_test.cpp	2011-12-25 11:36:26 UTC (rev 42868)
+++ trunk/blender/intern/cycles/app/cycles_test.cpp	2011-12-25 13:34:18 UTC (rev 42869)
@@ -109,12 +109,15 @@
 	options.scene = NULL;
 }
 
-static void scene_init()
+static void scene_init(int width, int height)
 {
 	options.scene = new Scene(options.scene_params);
 	xml_read_file(options.scene, options.filepath.c_str());
-	options.width = options.scene->camera->width;
-	options.height = options.scene->camera->height;
+	
+	if (width == 0 || height == 0) {
+		options.width = options.scene->camera->width;
+		options.height = options.scene->camera->height;
+	}
 }
 
 static void session_exit()
@@ -194,8 +197,8 @@
 
 static void options_parse(int argc, const char **argv)
 {
-	options.width= 1024;
-	options.height= 512;
+	options.width= 0;
+	options.height= 0;
 	options.filepath = "";
 	options.session = NULL;
 	options.quiet = false;
@@ -234,6 +237,8 @@
 		"--samples %d", &options.session_params.samples, "Number of samples to render",
 		"--output %s", &options.session_params.output_path, "File path to write output image",
 		"--threads %d", &options.session_params.threads, "CPU Rendering Threads",
+		"--width  %d", &options.width, "Window width in pixel",
+		"--height %d", &options.height, "Window height in pixel",
 		"--help", &help, "Print help message",
 		NULL);
 	
@@ -287,7 +292,7 @@
 	}
 
 	/* load scene */
-	scene_init();
+	scene_init(options.width, options.height);
 }
 
 CCL_NAMESPACE_END

Modified: trunk/blender/intern/cycles/app/cycles_xml.cpp
===================================================================
--- trunk/blender/intern/cycles/app/cycles_xml.cpp	2011-12-25 11:36:26 UTC (rev 42868)
+++ trunk/blender/intern/cycles/app/cycles_xml.cpp	2011-12-25 13:34:18 UTC (rev 42869)
@@ -257,7 +257,18 @@
 
 	xml_read_int(&integrator->min_bounce, node, "min_bounce");
 	xml_read_int(&integrator->max_bounce, node, "max_bounce");
+	
+	xml_read_int(&integrator->max_diffuse_bounce, node, "max_diffuse_bounce");
+	xml_read_int(&integrator->max_glossy_bounce, node, "max_glossy_bounce");
+	xml_read_int(&integrator->max_transmission_bounce, node, "max_transmission_bounce");
+	
+	xml_read_int(&integrator->transparent_min_bounce, node, "transparent_min_bounce");
+	xml_read_int(&integrator->transparent_max_bounce, node, "transparent_max_bounce");
+	
+	xml_read_bool(&integrator->transparent_shadows, node, "transparent_shadows");
 	xml_read_bool(&integrator->no_caustics, node, "no_caustics");
+	
+	xml_read_int(&integrator->seed, node, "seed");
 }
 
 /* Camera */

Added: trunk/blender/intern/cycles/app/io_export_cycles_xml.py
===================================================================
--- trunk/blender/intern/cycles/app/io_export_cycles_xml.py	                        (rev 0)
+++ trunk/blender/intern/cycles/app/io_export_cycles_xml.py	2011-12-25 13:34:18 UTC (rev 42869)
@@ -0,0 +1,143 @@
+#
+# Copyright 2011, Blender Foundation.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+
+# XML exporter for generating test files, not intended for end users
+
+import os
+import xml.etree.ElementTree as etree
+import xml.dom.minidom as dom
+
+import bpy
+from bpy_extras.io_utils import ExportHelper
+from bpy.props import PointerProperty, StringProperty
+
+def strip(root):
+    root.text = None
+    root.tail = None
+
+    for elem in root:
+        strip(elem)
+
+def write(node, fname):
+    strip(node)
+
+    s = etree.tostring(node)
+    s = dom.parseString(s).toprettyxml()
+
+    f = open(fname, "w")
+    f.write(s)
+    
+class CyclesXMLSettings(bpy.types.PropertyGroup):
+    @classmethod
+    def register(cls):
+        bpy.types.Scene.cycles_xml = PointerProperty(
+                                        type=cls,
+                                        name="Cycles XML export Settings",
+                                        description="Cycles XML export settings")
+        cls.filepath = StringProperty(
+                        name='Filepath',
+                        description='Filepath for the .xml file',
+                        maxlen=256,
+                        default='',
+                        subtype='FILE_PATH')
+                        
+    @classmethod
+    def unregister(cls):
+        del bpy.types.Scene.cycles_xml
+        
+# User Interface Drawing Code
+class RenderButtonsPanel():
+    bl_space_type = 'PROPERTIES'
+    bl_region_type = 'WINDOW'
+    bl_context = "render"
+
+    @classmethod
+    def poll(self, context):
+        rd = context.scene.render
+        return rd.engine == 'CYCLES'
+
+
+class PHYSICS_PT_fluid_export(RenderButtonsPanel, bpy.types.Panel):
+    bl_label = "Cycles XML Exporter"
+
+    def draw(self, context):
+        layout = self.layout
+        
+        cycles = context.scene.cycles_xml
+        
+        #layout.prop(cycles, "filepath")
+        layout.operator("export_mesh.cycles_xml")
+
+        
+# Export Operator
+class ExportCyclesXML(bpy.types.Operator, ExportHelper):
+    bl_idname = "export_mesh.cycles_xml"
+    bl_label = "Export Cycles XML"
+
+    filename_ext = ".xml"
+
+    @classmethod
+    def poll(cls, context):
+        return context.active_object != None
+
+    def execute(self, context):
+        filepath = bpy.path.ensure_ext(self.filepath, ".xml")
+
+        # get mesh
+        scene = context.scene
+        object = context.active_object
+
+        if not object:
+            raise Exception("No active object")
+
+        mesh = object.to_mesh(scene, True, 'PREVIEW')
+
+        if not mesh:
+            raise Exception("No mesh data in active object")
+
+        # generate mesh node
+        nverts = ""
+        verts = ""
+        P = ""
+
+        for v in mesh.vertices:
+            P += "%f %f %f  " % (v.co[0], v.co[1], v.co[2])
+
+        for i, f in enumerate(mesh.faces):
+            nverts += str(len(f.vertices)) + " "
+
+            for v in f.vertices:
+                verts += str(v) + " "
+            verts += " "
+
+        node = etree.Element('mesh', attrib={'nverts': nverts, 'verts': verts, 'P': P})
+        
+        # write to file
+        write(node, filepath)
+
+        return {'FINISHED'}
+
+def register():
+    bpy.utils.register_module(__name__)
+
+def unregister():
+    bpy.utils.unregister_module(__name__)
+
+if __name__ == "__main__":
+    register()
+




More information about the Bf-blender-cvs mailing list