From 4b1f3a7819ff535f8eb6fdd97b02951c32306f2d Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Tue, 1 Sep 2015 17:45:16 +0200 Subject: Fix T45931: Blender Fails to generate previews. Root of the issue was, preview generator was filling ID preview with unsigned int, when RNA only knows of signed integers (and thus generates a python exception when converting uint outside of int range)... Using the brand new and much simple float pixels accessor to PreviewImage now. Why this was working perfectly OK (it seems...) under Linux, and why error (py exception) was so badly and misleadingly reported on Windows, remains pitch black mystery to me. --- release/scripts/modules/bl_previews_utils/bl_previews_render.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'release') diff --git a/release/scripts/modules/bl_previews_utils/bl_previews_render.py b/release/scripts/modules/bl_previews_utils/bl_previews_render.py index 27922c6c5c5..627a6ab2d3d 100644 --- a/release/scripts/modules/bl_previews_utils/bl_previews_render.py +++ b/release/scripts/modules/bl_previews_utils/bl_previews_render.py @@ -304,11 +304,8 @@ def do_previews(do_objects, do_groups, do_scenes, do_data_intern): image = bpy.data.images[render_context.image, None] item = getattr(bpy.data, item_container)[item_name, None] image.reload() - # Note: we could use struct module here, but not quite sure it'd give any advantage really... - pix = tuple((round(r * 255)) + (round(g * 255) << 8) + (round(b * 255) << 16) + (round(a * 255) << 24) - for r, g, b, a in zip(*[iter(image.pixels)] * 4)) item.preview.image_size = (RENDER_PREVIEW_SIZE, RENDER_PREVIEW_SIZE) - item.preview.image_pixels = pix + item.preview.image_pixels_float[:] = image.pixels # And now, main code! do_save = True -- cgit v1.2.3