[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43468] trunk/blender: misc small changes and bmesh support for testing script

Campbell Barton ideasman42 at gmail.com
Tue Jan 17 19:01:16 CET 2012


Revision: 43468
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43468
Author:   campbellbarton
Date:     2012-01-17 18:01:16 +0000 (Tue, 17 Jan 2012)
Log Message:
-----------
misc small changes and bmesh support for testing script

Modified Paths:
--------------
    trunk/blender/intern/cycles/blender/addon/enums.py
    trunk/blender/intern/cycles/blender/addon/ui.py
    trunk/blender/source/blender/editors/sculpt_paint/paint_image.c
    trunk/blender/source/blender/makesrna/intern/rna_userdef.c
    trunk/blender/source/tests/bl_mesh_modifiers.py

Modified: trunk/blender/intern/cycles/blender/addon/enums.py
===================================================================
--- trunk/blender/intern/cycles/blender/addon/enums.py	2012-01-17 17:57:20 UTC (rev 43467)
+++ trunk/blender/intern/cycles/blender/addon/enums.py	2012-01-17 18:01:16 UTC (rev 43468)
@@ -21,8 +21,8 @@
 from . import engine
 
 devices = (
-	("CPU", "CPU", "Use CPU for rendering"),
-	("GPU", "GPU Compute", "Use GPU compute device for rendering, configured in user preferences"))
+    ("CPU", "CPU", "Use CPU for rendering"),
+    ("GPU", "GPU Compute", "Use GPU compute device for rendering, configured in user preferences"))
 
 feature_set = (
     ("SUPPORTED", "Supported", "Only use finished and supported features"),

Modified: trunk/blender/intern/cycles/blender/addon/ui.py
===================================================================
--- trunk/blender/intern/cycles/blender/addon/ui.py	2012-01-17 17:57:20 UTC (rev 43467)
+++ trunk/blender/intern/cycles/blender/addon/ui.py	2012-01-17 18:01:16 UTC (rev 43468)
@@ -149,6 +149,7 @@
         sub.prop(cscene, "debug_use_spatial_splits")
         sub.prop(cscene, "use_cache")
 
+
 class CyclesRender_PT_layers(CyclesButtonsPanel, Panel):
     bl_label = "Layers"
     bl_options = {'DEFAULT_CLOSED'}
@@ -708,7 +709,7 @@
     scene = context.scene
     layout = self.layout
 
-    if scene.render.engine == "CYCLES":
+    if scene.render.engine == 'CYCLES':
         cscene = scene.cycles
 
         layout.prop(cscene, "feature_set")
@@ -719,6 +720,7 @@
         elif device_type == 'OPENCL' and cscene.feature_set == 'EXPERIMENTAL':
             layout.prop(cscene, "device")
 
+
 def draw_pause(self, context):
     layout = self.layout
     scene = context.scene
@@ -726,7 +728,7 @@
     if scene.render.engine == "CYCLES":
         view = context.space_data
 
-        if view.viewport_shade == "RENDERED":
+        if view.viewport_shade == 'RENDERED':
             cscene = scene.cycles
             layout.prop(cscene, "preview_pause", icon="PAUSE", text="")
 

Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_image.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_image.c	2012-01-17 17:57:20 UTC (rev 43467)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_image.c	2012-01-17 18:01:16 UTC (rev 43468)
@@ -4650,7 +4650,8 @@
 	int ret;
 	Object *obedit = CTX_data_edit_object(C);
 	SpaceImage *sima= CTX_wm_space_image(C);
-	ToolSettings *toolsettings = CTX_data_scene(C)->toolsettings;
+	Scene *scene = CTX_data_scene(C);
+	ToolSettings *toolsettings = scene->toolsettings;
 
 	if(!uv_sculpt_brush(C) || !obedit || obedit->type != OB_MESH)
 		return 0;
@@ -5162,7 +5163,7 @@
 		float pixel_size;
 		float alpha= 0.5f;
 
-		ts = CTX_data_scene(C)->toolsettings;
+		ts = scene->toolsettings;
 
 		if(use_zoom && !ts->use_uv_sculpt){
 			pixel_size = MAX2(size * zoomx, size * zoomy);
@@ -5202,14 +5203,16 @@
 
 static void toggle_paint_cursor(bContext *C, int enable)
 {
-	ToolSettings *settings= CTX_data_scene(C)->toolsettings;
+	wmWindowManager *wm= CTX_wm_manager(C);
+	Scene *scene = CTX_data_scene(C);
+	ToolSettings *settings= scene->toolsettings;
 
 	if(settings->imapaint.paintcursor && !enable) {
-		WM_paint_cursor_end(CTX_wm_manager(C), settings->imapaint.paintcursor);
+		WM_paint_cursor_end(wm, settings->imapaint.paintcursor);
 		settings->imapaint.paintcursor = NULL;
 	}
 	else if(enable)
-		settings->imapaint.paintcursor= WM_paint_cursor_activate(CTX_wm_manager(C), image_paint_poll, brush_drawcursor, NULL);
+		settings->imapaint.paintcursor= WM_paint_cursor_activate(wm, image_paint_poll, brush_drawcursor, NULL);
 }
 
 /* enable the paint cursor if it isn't already.

Modified: trunk/blender/source/blender/makesrna/intern/rna_userdef.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_userdef.c	2012-01-17 17:57:20 UTC (rev 43467)
+++ trunk/blender/source/blender/makesrna/intern/rna_userdef.c	2012-01-17 18:01:16 UTC (rev 43468)
@@ -2945,7 +2945,7 @@
 
 	prop= RNA_def_property(srna, "use_16bit_textures", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "use_16bit_textures", 1);
-	RNA_def_property_ui_text(prop, "16 Bit Float Textures", "Use 16 bit per component texture for float images.");
+	RNA_def_property_ui_text(prop, "16 Bit Float Textures", "Use 16 bit per component texture for float images");
 	RNA_def_property_update(prop, 0, "rna_userdef_gl_use_16bit_textures");
 
 	prop= RNA_def_property(srna, "use_vertex_buffer_objects", PROP_BOOLEAN, PROP_NONE);

Modified: trunk/blender/source/tests/bl_mesh_modifiers.py
===================================================================
--- trunk/blender/source/tests/bl_mesh_modifiers.py	2012-01-17 17:57:20 UTC (rev 43467)
+++ trunk/blender/source/tests/bl_mesh_modifiers.py	2012-01-17 18:01:16 UTC (rev 43468)
@@ -31,11 +31,12 @@
 import math
 
 USE_QUICK_RENDER = False
+IS_BMESH = hasattr(__import__("bpy").types, "LoopColors")
 
-
 # -----------------------------------------------------------------------------
 # utility funcs
 
+
 def render_gl(context, filepath, shade):
 
     def ctx_viewport_shade(context, shade):
@@ -61,15 +62,16 @@
 
     ctx_viewport_shade(context, shade)
 
+    #~ # stop to inspect!
+    #~ if filepath == "test_cube_shell_solidify_subsurf_wp_wire":
+        #~ assert(0)
+    #~ else:
+        #~ return
+
     bpy.ops.render.opengl(write_still=True,
                           view_context=True)
 
 
-    # stop to inspect!
-    #~ if filepath == "test_cube_like_subsurf_single_wp_wire":
-        #~ assert(0)
-
-
 def render_gl_all_modes(context, obj, filepath=""):
 
     assert(obj != None)
@@ -201,8 +203,12 @@
         mesh.show_normal_vertex = True
 
         # lame!
-        for face in mesh.faces:
-            face.use_smooth = True
+        if IS_BMESH:
+            for poly in mesh.polygons:
+                poly.use_smooth = True
+        else:
+            for face in mesh.faces:
+                face.use_smooth = True
 
 
 def defaults_modifier(mod):
@@ -213,6 +219,18 @@
 # -----------------------------------------------------------------------------
 # models (utils)
 
+
+if IS_BMESH:
+    def mesh_bmesh_poly_elems(poly, elems):
+        vert_start = poly.loop_start
+        vert_total = poly.loop_total
+        return elems[vert_start:vert_start + vert_total]
+
+    def mesh_bmesh_poly_vertices(poly):
+        return [loop.vertex_index
+                for loop in mesh_bmesh_poly_elems(poly, poly.id_data.loops)]
+
+
 def mesh_bounds(mesh):
     xmin = ymin = zmin = +100000000.0
     xmax = ymax = zmax = -100000000.0
@@ -231,24 +249,68 @@
 
 
 def mesh_uv_add(obj):
+
+    uvs = ((0.0, 0.0),
+           (0.0, 1.0),
+           (1.0, 1.0),
+           (1.0, 0.0))
+
     uv_lay = obj.data.uv_textures.new()
-    for uv in uv_lay.data:
-        uv.uv1 = 0.0, 0.0
-        uv.uv2 = 0.0, 1.0
-        uv.uv3 = 1.0, 1.0
-        uv.uv4 = 1.0, 0.0
 
+    if IS_BMESH:
+        # XXX, odd that we need to do this. until uvs and texface
+        # are separated we will need to keep it
+        uv_loops = obj.data.uv_loop_layers[-1]
+        uv_list = uv_loops.data[:]
+        for poly in obj.data.polygons:
+            poly_uvs = mesh_bmesh_poly_elems(poly, uv_list)
+            for i, c in enumerate(poly_uvs):
+                c.uv = uvs[i % 4]
+    else:
+        for uv in uv_lay.data:
+            uv.uv1 = uvs[0]
+            uv.uv2 = uvs[1]
+            uv.uv3 = uvs[2]
+            uv.uv4 = uvs[3]
+
     return uv_lay
 
 
 def mesh_vcol_add(obj, mode=0):
+
+    colors = ((0.0, 0.0, 0.0),  # black
+              (1.0, 0.0, 0.0),  # red
+              (0.0, 1.0, 0.0),  # green
+              (0.0, 0.0, 1.0),  # blue
+              (1.0, 1.0, 0.0),  # yellow
+              (0.0, 1.0, 1.0),  # cyan
+              (1.0, 0.0, 1.0),  # magenta
+              (1.0, 1.0, 1.0),  # white
+              )
+
+    def colors_get(i):
+        return colors[i % len(colors)]
+
     vcol_lay = obj.data.vertex_colors.new()
-    for col in vcol_lay.data:
-        col.color1 = 1.0, 0.0, 0.0
-        col.color2 = 0.0, 1.0, 0.0
-        col.color3 = 0.0, 0.0, 1.0
-        col.color4 = 0.0, 0.0, 0.0
 
+    mesh = obj.data
+
+    if IS_BMESH:
+        col_list = vcol_lay.data[:]
+        for poly in mesh.polygons:
+            face_verts = mesh_bmesh_poly_vertices(poly)
+            poly_cols = mesh_bmesh_poly_elems(poly, col_list)
+            for i, c in enumerate(poly_cols):
+                c.color = colors[i % 4]
+    else:
+        for i, col in enumerate(vcol_lay.data):
+            face_verts = mesh.faces[i].vertices
+            col.color1 = colors_get(face_verts[0])
+            col.color2 = colors_get(face_verts[1])
+            col.color3 = colors_get(face_verts[2])
+            if len(face_verts) == 4:
+                col.color4 = colors_get(face_verts[3])
+
     return vcol_lay
 
 
@@ -364,13 +426,19 @@
     # no nice way to add hooks from py api yet
     # assume object mode, hook first face!
     mesh = obj.data
-    
+
     if use_vgroup:
         for v in mesh.vertices:
             v.select = True
     else:
         for v in mesh.vertices:
             v.select = False
+
+        if IS_BMESH:
+            face_verts = mesh_bmesh_poly_vertices(mesh.polygons[0])
+        else:
+            face_verts = mesh.faces[0].vertices[:]
+
         for i in mesh.faces[0].vertices:
             mesh.vertices[i].select = True
 
@@ -406,7 +474,11 @@
     defaults_modifier(mod)
 
     # ensure we display some faces
-    totface = len(obj.data.faces)
+    if IS_BMESH:
+        totface = len(obj.data.polygons)
+    else:
+        totface = len(obj.data.faces)
+
     mod.frame_start = totface // 2
     mod.frame_duration = totface
 



More information about the Bf-blender-cvs mailing list