[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