[Bf-blender-cvs] [f94a460] master: [msvc/make.bat] Detect spaces in the build path and error out.
Commit: f94a460397a86beb9f71e665e8f484fa4e10ebdc Author: lazydodo Date: Tue Nov 1 15:30:12 2016 -0600 Branches: master https://developer.blender.org/rBf94a460397a86beb9f71e665e8f484fa4e10ebdc [msvc/make.bat] Detect spaces in the build path and error out. === M make.bat === diff --git a/make.bat b/make.bat index c7f2dbb..74148e5 100644 --- a/make.bat +++ b/make.bat @@ -4,6 +4,11 @@ REM This is for users who like to configure & build Blender with a single comman setlocal ENABLEEXTENSIONS set BLENDER_DIR=%~dp0 +set BLENDER_DIR_NOSPACES=%BLENDER_DIR: =% +if not "%BLENDER_DIR%"=="%BLENDER_DIR_NOSPACES%" ( + echo There are spaces detected in the build path "%BLENDER_DIR%", this is currently not supported, exiting + goto EOF +) set BUILD_DIR=%BLENDER_DIR%..\build_windows set BUILD_TYPE=Release rem reset all variables so they do not get accidentally get carried over from previous builds ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [13ee9b8] master: Change frame for animations should not bein the UNDO stack
Commit: 13ee9b8ebe08ee95478f51537f10e9a1b1e4d863 Author: Dalai Felinto Date: Tue Nov 1 22:09:42 2016 +0100 Branches: master https://developer.blender.org/rB13ee9b8ebe08ee95478f51537f10e9a1b1e4d863 Change frame for animations should not bein the UNDO stack Request from Hjalti Hjalmarsson for the animation work. Basically a common part of the workflow of animation is to change the pose, scrub back and forth a few times and roll back the changes when unsatisfied. However if you go back and forth too many times the UNDO stack would be full, and it would not be possible to bring back the previous pose. I'm leaving clip_editor change frames as it is for now. But we can probably change the behaviour there as well. === M source/blender/editors/animation/anim_ops.c === diff --git a/source/blender/editors/animation/anim_ops.c b/source/blender/editors/animation/anim_ops.c index 262ce0b..d789906 100644 --- a/source/blender/editors/animation/anim_ops.c +++ b/source/blender/editors/animation/anim_ops.c @@ -263,7 +263,7 @@ static void ANIM_OT_change_frame(wmOperatorType *ot) ot->poll = change_frame_poll; /* flags */ - ot->flag = OPTYPE_BLOCKING | OPTYPE_UNDO | OPTYPE_GRAB_CURSOR; + ot->flag = OPTYPE_BLOCKING | OPTYPE_GRAB_CURSOR; /* rna */ ot->prop = RNA_def_int(ot->srna, "frame", 0, MINAFRAME, MAXFRAME, "Frame", "", MINAFRAME, MAXFRAME); ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [f8a1255] pbr-viewport: Fix left over from merge
Commit: f8a1255464951af1c720d1d928314827b46e2c98 Author: Dalai Felinto Date: Tue Nov 1 22:00:47 2016 +0100 Branches: pbr-viewport https://developer.blender.org/rBf8a1255464951af1c720d1d928314827b46e2c98 Fix left over from merge Linux did not mind with them, but luckily Linux is more strict === M source/blender/gpu/intern/gpu_framebuffer.c M source/blender/gpu/intern/gpu_pbr.c M source/blender/gpu/intern/gpu_probe.c === diff --git a/source/blender/gpu/intern/gpu_framebuffer.c b/source/blender/gpu/intern/gpu_framebuffer.c index 5aa7641..5201e9b 100644 --- a/source/blender/gpu/intern/gpu_framebuffer.c +++ b/source/blender/gpu/intern/gpu_framebuffer.c @@ -442,7 +442,7 @@ void GPU_framebuffer_hiz_construction(GPUFrameBuffer* fb, GPUTexture *tex, const lowermip_uniform = GPU_shader_get_uniform(shader, "lowermip"); lowermipsize_uniform = GPU_shader_get_uniform(shader, "lowermipsize"); - GPU_framebuffer_texture_attach(fb, tex, 0, NULL); + GPU_framebuffer_texture_attach(fb, tex, 0); GPU_texture_bind_as_framebuffer(tex); bindcode = GPU_texture_opengl_bindcode(tex); diff --git a/source/blender/gpu/intern/gpu_pbr.c b/source/blender/gpu/intern/gpu_pbr.c index de22739..c0330ad 100644 --- a/source/blender/gpu/intern/gpu_pbr.c +++ b/source/blender/gpu/intern/gpu_pbr.c @@ -103,7 +103,7 @@ static GPUScreenBuffer *gpu_scenebuf_create(int width, int height, bool depth_on return NULL; } - if (!GPU_framebuffer_texture_attach(buf->fb, buf->tex, 0, NULL)) { + if (!GPU_framebuffer_texture_attach(buf->fb, buf->tex, 0)) { GPU_scenebuf_free(buf); return NULL; } @@ -121,7 +121,7 @@ static GPUScreenBuffer *gpu_scenebuf_create(int width, int height, bool depth_on return NULL; } - if (!GPU_framebuffer_texture_attach(buf->fb, buf->depth, 0, NULL)) { + if (!GPU_framebuffer_texture_attach(buf->fb, buf->depth, 0)) { GPU_scenebuf_free(buf); return NULL; } @@ -132,7 +132,7 @@ static GPUScreenBuffer *gpu_scenebuf_create(int width, int height, bool depth_on return NULL; } - if (!GPU_framebuffer_texture_attach(buf->fb, buf->tex, 0, NULL)) { + if (!GPU_framebuffer_texture_attach(buf->fb, buf->tex, 0)) { GPU_scenebuf_free(buf); return NULL; } @@ -222,14 +222,14 @@ void GPU_scenebuf_filter_texture(GPUScreenBuffer* buf) GPU_generate_mipmap(GL_TEXTURE_2D); GPU_texture_unbind(buf->depth); GPU_framebuffer_hiz_construction(buf->downsamplingfb, buf->depth, false); - GPU_framebuffer_texture_attach(buf->fb, buf->depth, 0, NULL); + GPU_framebuffer_texture_attach(buf->fb, buf->depth, 0); } else { GPU_texture_bind(buf->tex, 0); GPU_generate_mipmap(GL_TEXTURE_2D); GPU_texture_unbind(buf->tex); GPU_framebuffer_hiz_construction(buf->downsamplingfb, buf->tex, true); - GPU_framebuffer_texture_attach(buf->fb, buf->tex, 0, NULL); + GPU_framebuffer_texture_attach(buf->fb, buf->tex, 0); } GPU_framebuffer_restore(); diff --git a/source/blender/gpu/intern/gpu_probe.c b/source/blender/gpu/intern/gpu_probe.c index e1f5583..23e2ecd 100644 --- a/source/blender/gpu/intern/gpu_probe.c +++ b/source/blender/gpu/intern/gpu_probe.c @@ -152,7 +152,7 @@ static void gpu_probe_from_blender(Scene *scene, World *wo, Object *ob, GPUProbe return; } - if (!GPU_framebuffer_cubeface_attach(probe->fb, probe->tex, 0, 0, NULL)) { + if (!GPU_framebuffer_cubeface_attach(probe->fb, probe->tex, 0, 0)) { gpu_probe_buffers_free(probe); return; } @@ -164,7 +164,7 @@ static void gpu_probe_from_blender(Scene *scene, World *wo, Object *ob, GPUProbe return; } - if (!GPU_framebuffer_texture_attach(probe->fb, probe->depthtex, 0, NULL)) { + if (!GPU_framebuffer_texture_attach(probe->fb, probe->depthtex, 0)) { gpu_probe_buffers_free(probe); return; } @@ -188,7 +188,7 @@ static void gpu_probe_from_blender(Scene *scene, World *wo, Object *ob, GPUProbe return; } - if (!GPU_framebuffer_texture_attach(probe->fbsh, probe->shtex, 0, NULL)) { + if
[Bf-blender-cvs] [a34cad2] temp-sybren-poselib: "Fix" desapearing previews issue.
Commit: a34cad20061bd05ca39de428cf00c5a06a5be3f5 Author: Bastien Montagne Date: Tue Nov 1 18:28:15 2016 +0100 Branches: temp-sybren-poselib https://developer.blender.org/rBa34cad20061bd05ca39de428cf00c5a06a5be3f5 "Fix" desapearing previews issue. More like a hack than anything else, need to figure out the correct way to do that yet (in an efficient way), have the feeling a function would work better somehow... === M release/scripts/startup/bl_operators/poselib.py M release/scripts/startup/bl_ui/properties_data_armature.py === diff --git a/release/scripts/startup/bl_operators/poselib.py b/release/scripts/startup/bl_operators/poselib.py index c7c1184..19ab616 100644 --- a/release/scripts/startup/bl_operators/poselib.py +++ b/release/scripts/startup/bl_operators/poselib.py @@ -116,10 +116,12 @@ class POSELIB_OT_render_previews(Operator): fname = os.path.join(plib.pose_previews_dir, '%s.png' % marker.name) bpy.data.images['Render Result'].save_render(bpy.path.abspath(fname)) im = bpy.data.images.load(fname) -im.scale(128, 128) +im.scale(16, 16) marker.preview_frame_index = plib_index -plib.preview.image_frames_float[plib_index][:] = im.pixels -plib.preview.icon_frames_float[plib_index][:] = im.pixels +pix = [list(f) for f in plib.preview.image_frames_float] +pix[plib_index][:] = im.pixels +plib.preview.image_frames_float[:] = pix +plib.preview.icon_frames_float[:] = pix def invoke(self, context, event): wm = context.window_manager @@ -130,7 +132,7 @@ class POSELIB_OT_render_previews(Operator): self.plib_index = 0 plib = context.object.pose_library -plib.preview.icon_size = plib.preview.image_size = (128, 128) +plib.preview.icon_size = plib.preview.image_size = (16, 16) plib.preview.frames_number = len(plib.pose_markers) for pmrk in plib.pose_markers: pmrk.preview_frame_index = 0 diff --git a/release/scripts/startup/bl_ui/properties_data_armature.py b/release/scripts/startup/bl_ui/properties_data_armature.py index e8ca99d..0921fec 100644 --- a/release/scripts/startup/bl_ui/properties_data_armature.py +++ b/release/scripts/startup/bl_ui/properties_data_armature.py @@ -269,7 +269,7 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, Panel): for marker in poselib.pose_markers: col.label(marker.name, icon_value=poselib.preview.icon_id, icon_frame=marker.preview_frame_index) -layout.template_icon_view(poselib, 'pose_previews', show_labels=True) +#~ layout.template_icon_view(poselib, 'pose_previews', show_labels=True) layout.prop(poselib, "pose_previews_dir") col.operator_context = 'INVOKE_DEFAULT' ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [d0a3ceb] temp-sybren-poselib: Add first version of poselib previews using new multi-preview ID stuff.
Commit: d0a3ceb170a9eed74bc6116272b4aa69788320e5 Author: Bastien Montagne Date: Tue Nov 1 18:08:34 2016 +0100 Branches: temp-sybren-poselib https://developer.blender.org/rBd0a3ceb170a9eed74bc6116272b4aa69788320e5 Add first version of poselib previews using new multi-preview ID stuff. *Neraly* working, for some reason setting floats values for one frame erase all other frames... Will check that tomorrow. === M release/scripts/startup/bl_operators/poselib.py M release/scripts/startup/bl_ui/properties_data_armature.py === diff --git a/release/scripts/startup/bl_operators/poselib.py b/release/scripts/startup/bl_operators/poselib.py index c0b7cb8..c7c1184 100644 --- a/release/scripts/startup/bl_operators/poselib.py +++ b/release/scripts/startup/bl_operators/poselib.py @@ -115,6 +115,11 @@ class POSELIB_OT_render_previews(Operator): bpy.ops.render.render() fname = os.path.join(plib.pose_previews_dir, '%s.png' % marker.name) bpy.data.images['Render Result'].save_render(bpy.path.abspath(fname)) +im = bpy.data.images.load(fname) +im.scale(128, 128) +marker.preview_frame_index = plib_index +plib.preview.image_frames_float[plib_index][:] = im.pixels +plib.preview.icon_frames_float[plib_index][:] = im.pixels def invoke(self, context, event): wm = context.window_manager @@ -124,6 +129,12 @@ class POSELIB_OT_render_previews(Operator): self.timer = self.wm.event_timer_add(0.01, context.window) self.plib_index = 0 +plib = context.object.pose_library +plib.preview.icon_size = plib.preview.image_size = (128, 128) +plib.preview.frames_number = len(plib.pose_markers) +for pmrk in plib.pose_markers: +pmrk.preview_frame_index = 0 + return {'RUNNING_MODAL'} def _finish(self, context): diff --git a/release/scripts/startup/bl_ui/properties_data_armature.py b/release/scripts/startup/bl_ui/properties_data_armature.py index 00c688c..e8ca99d 100644 --- a/release/scripts/startup/bl_ui/properties_data_armature.py +++ b/release/scripts/startup/bl_ui/properties_data_armature.py @@ -266,6 +266,9 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, Panel): layout.prop(pose_marker_active, "camera", text='Camera for %s' % pose_marker_active.name) +for marker in poselib.pose_markers: +col.label(marker.name, icon_value=poselib.preview.icon_id, icon_frame=marker.preview_frame_index) + layout.template_icon_view(poselib, 'pose_previews', show_labels=True) layout.prop(poselib, "pose_previews_dir") col.operator_context = 'INVOKE_DEFAULT' ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [0eb37ab] temp-sybren-poselib: Merge branch 'multi_previews_id' into temp-sybren-poselib
Commit: 0eb37ab49e43861b31af676341407a7be30a5785 Author: Bastien Montagne Date: Tue Nov 1 17:23:45 2016 +0100 Branches: temp-sybren-poselib https://developer.blender.org/rB0eb37ab49e43861b31af676341407a7be30a5785 Merge branch 'multi_previews_id' into temp-sybren-poselib === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [8a6c575] temp-sybren-poselib: PoseLIb preview: add a 'preview frame index' member to markers.
Commit: 8a6c575c8be79b9c2fc918c764a40ac90b66917c Author: Bastien Montagne Date: Tue Nov 1 16:16:44 2016 +0100 Branches: temp-sybren-poselib https://developer.blender.org/rB8a6c575c8be79b9c2fc918c764a40ac90b66917c PoseLIb preview: add a 'preview frame index' member to markers. That way we don't have to move preview images around when reordering markers (aka poses)! === M source/blender/makesdna/DNA_scene_types.h M source/blender/makesrna/intern/rna_timeline.c === diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index 9b0781e..94e38ab 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -985,11 +985,12 @@ typedef enum StereoViews { /* *** */ /* Markers */ -typedef struct TimeMarker { +typedef struct TimeMarker { struct TimeMarker *next, *prev; int frame; char name[64]; - unsigned int flag; + unsigned short flag; + unsigned short preview_frame_index; struct Object *camera; } TimeMarker; diff --git a/source/blender/makesrna/intern/rna_timeline.c b/source/blender/makesrna/intern/rna_timeline.c index 2c51e41..c1c39cf 100644 --- a/source/blender/makesrna/intern/rna_timeline.c +++ b/source/blender/makesrna/intern/rna_timeline.c @@ -70,6 +70,12 @@ static void rna_def_timeline_marker(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Select", "Marker selection state"); RNA_def_property_update(prop, 0, "rna_TimelineMarker_update"); + prop = RNA_def_property(srna, "preview_frame_index", PROP_INT, PROP_UNSIGNED); + RNA_def_property_range(prop, 0, USHRT_MAX); + RNA_def_property_ui_text(prop, "Preview Frame", +"The frame index in the Action/Scene data-block previews matching that marker"); + RNA_def_property_update(prop, 0, "rna_TimelineMarker_update"); + #ifdef DURIAN_CAMERA_SWITCH prop = RNA_def_property(srna, "camera", PROP_POINTER, PROP_NONE); RNA_def_property_struct_type(prop, "Object"); ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [d12bd5f] multi_previews_id: Merge branch 'master' into multi_previews_id
Commit: d12bd5f7a4dcc7868c390bb61cfbf0f9a84cf710 Author: Bastien Montagne Date: Tue Nov 1 16:47:29 2016 +0100 Branches: multi_previews_id https://developer.blender.org/rBd12bd5f7a4dcc7868c390bb61cfbf0f9a84cf710 Merge branch 'master' into multi_previews_id === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [9c96cfd] multi_previews_id: Add multi-frame float access in RNA.
Commit: 9c96cfd8797994dea11616f9a08db913f8b2214c Author: Bastien Montagne Date: Tue Nov 1 17:23:04 2016 +0100 Branches: multi_previews_id https://developer.blender.org/rB9c96cfd8797994dea11616f9a08db913f8b2214c Add multi-frame float access in RNA. === M source/blender/makesrna/intern/rna_ID.c === diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c index 31c62af..b2a5489 100644 --- a/source/blender/makesrna/intern/rna_ID.c +++ b/source/blender/makesrna/intern/rna_ID.c @@ -681,6 +681,84 @@ static void rna_ImagePreview_pixels_float_set(PointerRNA *ptr, const float *valu prv_img->flag[size] |= PRV_USER_EDITED; } +static int rna_ImagePreview_frames_float_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION], enum eIconSizes size) +{ + ID *id = ptr->id.data; + PreviewImage *prv_img = (PreviewImage *)ptr->data; + + BLI_assert(sizeof(unsigned int) == 4); + + if (id != NULL) { + BLI_assert(prv_img == BKE_previewimg_id_ensure(id)); + } + + BKE_previewimg_ensure(prv_img, size); + + length[0] = prv_img->num_frames ? prv_img->num_frames : 1; + length[1] = prv_img->w[size] * prv_img->h[size] * 4; + + return length[0] * length[1]; +} + +static void rna_ImagePreview_frames_float_get(PointerRNA *ptr, float *values, enum eIconSizes size) +{ + ID *id = ptr->id.data; + PreviewImage *prv_img = (PreviewImage *)ptr->data; + + BLI_assert(sizeof(unsigned int) == 4); + + if (prv_img->num_frames == 0) { + rna_ImagePreview_pixels_float_get(ptr, values, size); + return; + } + + if (id != NULL) { + BLI_assert(prv_img == BKE_previewimg_id_ensure(id)); + } + + BKE_previewimg_ensure(prv_img, size); + + int i; + unsigned char *data = (unsigned char *)prv_img->rect[size]; + ptrdiff_t copy_stride = prv_img->w[size] * prv_img->h[size] * 4; + ptrdiff_t stride = copy_stride + 4; + for (i = 0; i < prv_img->num_frames; i++, data += stride, values += copy_stride) { + size_t j; + for (j = 0; j < copy_stride; j++) { + values[j] = data[j] * (1.0f / 255.0f); + } + } +} + +static void rna_ImagePreview_frames_float_set(PointerRNA *ptr, const float *values, enum eIconSizes size) +{ + ID *id = ptr->id.data; + PreviewImage *prv_img = (PreviewImage *)ptr->data; + + BLI_assert(sizeof(unsigned int) == 4); + + if (prv_img->num_frames == 0) { + rna_ImagePreview_pixels_float_set(ptr, values, size); + return; + } + + if (id != NULL) { + BLI_assert(prv_img == BKE_previewimg_id_ensure(id)); + } + + int i; + unsigned char *data = (unsigned char *)prv_img->rect[size]; + ptrdiff_t copy_stride = prv_img->w[size] * prv_img->h[size] * 4; + ptrdiff_t stride = copy_stride + 4; + for (i = 0; i < prv_img->num_frames; i++, data += stride, values += copy_stride) { + size_t j; + for (j = 0; j < copy_stride; j++) { + data[j] = FTOCHAR(values[j]); + } + } + prv_img->flag[size] |= PRV_USER_EDITED; +} + static void rna_ImagePreview_is_image_custom_set(PointerRNA *ptr, int value) { @@ -742,6 +820,21 @@ static void rna_ImagePreview_image_pixels_float_set(PointerRNA *ptr, const float rna_ImagePreview_pixels_float_set(ptr, values, ICON_SIZE_PREVIEW); } +static int rna_ImagePreview_image_frames_float_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION]) +{ + return rna_ImagePreview_frames_float_get_length(ptr, length, ICON_SIZE_PREVIEW); +} + +static void rna_ImagePreview_image_frames_float_get(PointerRNA *ptr, float *values) +{ + rna_ImagePreview_frames_float_get(ptr, values, ICON_SIZE_PREVIEW); +} + +static void rna_ImagePreview_image_frames_float_set(PointerRNA *ptr, const float *values) +{ + rna_ImagePreview_frames_float_set(ptr, values, ICON_SIZE_PREVIEW); +} + static void rna_ImagePreview_is_icon_custom_set(PointerRNA *ptr, int value) { @@ -803,6 +896,21 @@ static void rna_ImagePreview_icon_pixels_float_set(PointerRNA *ptr, const float rna_ImagePreview_pixels_float_set(ptr, values, ICON_SIZE_ICON); } +static int rna_ImagePreview_icon_frames_float_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION]) +{ + return rna_ImagePreview_frames_float_get_length(ptr, length, ICON_SIZE_ICON); +} + +static void rna_ImagePreview_icon_frames_float_get(PointerRNA *ptr, float *values) +{ + rna_ImagePreview_frames_float_get(ptr, values, ICON_SIZE_ICON); +} + +static void rna_ImagePreview_icon_frames_float_set(PointerRNA *ptr, const float *values) +{ +
[Bf-blender-cvs] [14094a1] cycles_split_kernel: Cycles: Fix crash caused by freeing unallocated kernel globals
Commit: 14094a110b28f22b5bc09f347c0fc18d53096add Author: Mai Lavelle Date: Tue Nov 1 16:23:36 2016 +0100 Branches: cycles_split_kernel https://developer.blender.org/rB14094a110b28f22b5bc09f347c0fc18d53096add Cycles: Fix crash caused by freeing unallocated kernel globals === M intern/cycles/device/device_cpu.cpp === diff --git a/intern/cycles/device/device_cpu.cpp b/intern/cycles/device/device_cpu.cpp index be52fae..ee14f78 100644 --- a/intern/cycles/device/device_cpu.cpp +++ b/intern/cycles/device/device_cpu.cpp @@ -664,6 +664,10 @@ protected: inline void thread_kernel_globals_free(KernelGlobals *kg) { + if(!kg) { + return; + } + if(kg->transparent_shadow_intersections != NULL) { free(kg->transparent_shadow_intersections); } ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [467d52e] temp-sybren-poselib: Added full rendering for preview images.
Commit: 467d52e0fcb8991365f89573b13eb7f0972f0f93 Author: Sybren A. Stüvel Date: Tue Nov 1 16:18:41 2016 +0100 Branches: temp-sybren-poselib https://developer.blender.org/rB467d52e0fcb8991365f89573b13eb7f0972f0f93 Added full rendering for preview images. This really requires subprocessing to another Blender for faster rendering; will come later after other improvements. === M release/scripts/startup/bl_operators/poselib.py M release/scripts/startup/bl_ui/properties_data_armature.py === diff --git a/release/scripts/startup/bl_operators/poselib.py b/release/scripts/startup/bl_operators/poselib.py index 87d7293..c0b7cb8 100644 --- a/release/scripts/startup/bl_operators/poselib.py +++ b/release/scripts/startup/bl_operators/poselib.py @@ -109,7 +109,10 @@ class POSELIB_OT_render_previews(Operator): bpy.ops.poselib.apply_pose(pose_index=plib_index) -bpy.ops.render.opengl(view_context=False) +if self.render_method == 'OPENGL': +bpy.ops.render.opengl(view_context=False) +else: +bpy.ops.render.render() fname = os.path.join(plib.pose_previews_dir, '%s.png' % marker.name) bpy.data.images['Render Result'].save_render(bpy.path.abspath(fname)) diff --git a/release/scripts/startup/bl_ui/properties_data_armature.py b/release/scripts/startup/bl_ui/properties_data_armature.py index b98eaf8..00c688c 100644 --- a/release/scripts/startup/bl_ui/properties_data_armature.py +++ b/release/scripts/startup/bl_ui/properties_data_armature.py @@ -268,9 +268,11 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, Panel): layout.template_icon_view(poselib, 'pose_previews', show_labels=True) layout.prop(poselib, "pose_previews_dir") - col.operator_context = 'INVOKE_DEFAULT' -layout.operator("poselib.render_previews") + +row = layout.row(align=True) +row.operator("poselib.render_previews", text='Render OGL').render_method='OPENGL' +row.operator("poselib.render_previews", text='Render Full').render_method='FULL' # TODO: this panel will soon be deprecated too ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [21b73c4] temp-sybren-poselib: Use view_context=False to use active camera instead of viewport.
Commit: 21b73c42176ea1f0af49ee6424ff083e9837ea3b Author: Sybren A. Stüvel Date: Tue Nov 1 15:57:07 2016 +0100 Branches: temp-sybren-poselib https://developer.blender.org/rB21b73c42176ea1f0af49ee6424ff083e9837ea3b Use view_context=False to use active camera instead of viewport. === M release/scripts/startup/bl_operators/poselib.py === diff --git a/release/scripts/startup/bl_operators/poselib.py b/release/scripts/startup/bl_operators/poselib.py index 0579470..87d7293 100644 --- a/release/scripts/startup/bl_operators/poselib.py +++ b/release/scripts/startup/bl_operators/poselib.py @@ -109,9 +109,9 @@ class POSELIB_OT_render_previews(Operator): bpy.ops.poselib.apply_pose(pose_index=plib_index) -fname = '%s.png' % marker.name -context.scene.render.filepath = os.path.join(plib.pose_previews_dir, fname) -bpy.ops.render.opengl(write_still=True) +bpy.ops.render.opengl(view_context=False) +fname = os.path.join(plib.pose_previews_dir, '%s.png' % marker.name) +bpy.data.images['Render Result'].save_render(bpy.path.abspath(fname)) def invoke(self, context, event): wm = context.window_manager @@ -120,10 +120,8 @@ class POSELIB_OT_render_previews(Operator): self.wm = context.window_manager self.timer = self.wm.event_timer_add(0.01, context.window) self.plib_index = 0 -self.orig_filepath = context.scene.render.filepath return {'RUNNING_MODAL'} def _finish(self, context): self.wm.event_timer_remove(self.timer) -context.scene.render.filepath = self.orig_filepath ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [038370a] temp-sybren-poselib: Removed pep8 compliance note.
Commit: 038370a811061a8385c231bd0dc38bedd5f73928 Author: Sybren A. Stüvel Date: Tue Nov 1 15:12:19 2016 +0100 Branches: temp-sybren-poselib https://developer.blender.org/rB038370a811061a8385c231bd0dc38bedd5f73928 Removed pep8 compliance note. === M release/scripts/startup/bl_operators/poselib.py === diff --git a/release/scripts/startup/bl_operators/poselib.py b/release/scripts/startup/bl_operators/poselib.py index 3d3e4f4..0579470 100644 --- a/release/scripts/startup/bl_operators/poselib.py +++ b/release/scripts/startup/bl_operators/poselib.py @@ -16,8 +16,6 @@ # # # END GPL LICENSE BLOCK # -# - if "bpy" in locals(): from importlib import reload if "anim_utils" in locals(): ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [dbfc1e5] temp-sybren-poselib: Merge branch 'multi_previews_id' into temp-sybren-poselib
Commit: dbfc1e5b0e072785af146b14b82f3f44722853e6 Author: Sybren A. Stüvel Date: Tue Nov 1 15:19:57 2016 +0100 Branches: temp-sybren-poselib https://developer.blender.org/rBdbfc1e5b0e072785af146b14b82f3f44722853e6 Merge branch 'multi_previews_id' into temp-sybren-poselib === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [16b2602] multi_previews_id: Revert "Applied my work from temp-sybren-poselib branch."
Commit: 16b2602791114d6d55e6d2c7098e23403518bbe5 Author: Sybren A. Stüvel Date: Tue Nov 1 15:19:15 2016 +0100 Branches: multi_previews_id https://developer.blender.org/rB16b2602791114d6d55e6d2c7098e23403518bbe5 Revert "Applied my work from temp-sybren-poselib branch." This reverts commit ffb0ed305d87d236787163abbe33a921d3eaecf6. === M release/scripts/startup/bl_operators/__init__.py D release/scripts/startup/bl_operators/poselib.py M release/scripts/startup/bl_ui/__init__.py M release/scripts/startup/bl_ui/properties_data_armature.py M source/blender/blenkernel/intern/anim_sys.c M source/blender/editors/armature/pose_lib.c M source/blender/editors/armature/pose_transform.c M source/blender/makesrna/intern/rna_timeline.c === diff --git a/release/scripts/startup/bl_operators/__init__.py b/release/scripts/startup/bl_operators/__init__.py index 01c954d..a696410 100644 --- a/release/scripts/startup/bl_operators/__init__.py +++ b/release/scripts/startup/bl_operators/__init__.py @@ -39,7 +39,6 @@ _modules = [ "object", "object_randomize_transform", "object_quick_effects", -"poselib", "presets", "rigidbody", "screen_play_rendered_anim", diff --git a/release/scripts/startup/bl_operators/poselib.py b/release/scripts/startup/bl_operators/poselib.py deleted file mode 100644 index 0579470..000 --- a/release/scripts/startup/bl_operators/poselib.py +++ /dev/null @@ -1,129 +0,0 @@ -# # BEGIN GPL LICENSE BLOCK # -# -# 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. -# -# # END GPL LICENSE BLOCK # - -if "bpy" in locals(): -from importlib import reload -if "anim_utils" in locals(): -reload(anim_utils) -del reload - - -import bpy -from bpy.types import Operator -from bpy.props import ( -IntProperty, -BoolProperty, -EnumProperty, -StringProperty, -) - - -class POSELIB_OT_render_previews(Operator): -"""Renders a preview image for each pose in the pose library. - -TODO: the viewport used for OpenGL rendering is more or less random. -""" - -import logging as __logging - -bl_idname = "poselib.render_previews" -bl_label = "Render pose previews" -bl_description = "Renders a preview image for each pose in the pose library" - -log = __logging.getLogger('bpy.ops.%s' % bl_idname) - -render_method = EnumProperty( -items=[ -('OPENGL', 'OpenGL render', 'Use the OpenGL viewport render'), -('FULL', 'Full render', 'Use the same render engine as the scene'), -], -default='OPENGL' -) - -plib_index = 0 - -@classmethod -def poll(cls, context): -"""Running only makes sense if there are any poses in the library.""" -plib = context.object and context.object.pose_library -return bool(plib and plib.pose_markers) - -def execute(self, context): -return {'PASS_THROUGH'} - -def modal(self, context, event): -if event.type == 'ESC': -self._finish(context) -self.report({'INFO'}, 'Canceled rendering pose library previews') -return {'CANCELLED'} - -if event.type != 'TIMER': -return {'PASS_THROUGH'} - -plib = context.object.pose_library - -pose_count = len(plib.pose_markers) -if self.plib_index >= pose_count: -self._finish(context) -self.report({'INFO'}, 'Done rendering pose library previews') -return {'FINISHED'} - -self.render_pose(context, plib, self.plib_index) -self.plib_index += 1 - -return {'RUNNING_MODAL'} - -def render_pose(self, context, plib, plib_index): -import os.path - -marker = plib.pose_markers[plib_index] -self.log.info('Rendering pose %s at frame %i', marker.name, marker.frame) - -context.scene.frame_set(marker.frame) -switch_to = None -if marker.camera: -switch_to = marker.camera -else: -cams = [m.camera for m in context.scene.timeline_markers -if m.frame == marker.frame and m.camera] -
[Bf-blender-cvs] [ffb0ed3] multi_previews_id: Applied my work from temp-sybren-poselib branch.
Commit: ffb0ed305d87d236787163abbe33a921d3eaecf6 Author: Sybren A. Stüvel Date: Tue Nov 1 15:14:15 2016 +0100 Branches: multi_previews_id https://developer.blender.org/rBffb0ed305d87d236787163abbe33a921d3eaecf6 Applied my work from temp-sybren-poselib branch. Still a bit rough. For example, the viewport used for OpenGL rendering is more or less randomly chosen from the current screen. === M release/scripts/startup/bl_operators/__init__.py A release/scripts/startup/bl_operators/poselib.py M release/scripts/startup/bl_ui/__init__.py M release/scripts/startup/bl_ui/properties_data_armature.py M source/blender/blenkernel/intern/anim_sys.c M source/blender/editors/armature/pose_lib.c M source/blender/editors/armature/pose_transform.c M source/blender/makesrna/intern/rna_timeline.c === diff --git a/release/scripts/startup/bl_operators/__init__.py b/release/scripts/startup/bl_operators/__init__.py index a696410..01c954d 100644 --- a/release/scripts/startup/bl_operators/__init__.py +++ b/release/scripts/startup/bl_operators/__init__.py @@ -39,6 +39,7 @@ _modules = [ "object", "object_randomize_transform", "object_quick_effects", +"poselib", "presets", "rigidbody", "screen_play_rendered_anim", diff --git a/release/scripts/startup/bl_operators/poselib.py b/release/scripts/startup/bl_operators/poselib.py new file mode 100644 index 000..0579470 --- /dev/null +++ b/release/scripts/startup/bl_operators/poselib.py @@ -0,0 +1,129 @@ +# # BEGIN GPL LICENSE BLOCK # +# +# 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. +# +# # END GPL LICENSE BLOCK # + +if "bpy" in locals(): +from importlib import reload +if "anim_utils" in locals(): +reload(anim_utils) +del reload + + +import bpy +from bpy.types import Operator +from bpy.props import ( +IntProperty, +BoolProperty, +EnumProperty, +StringProperty, +) + + +class POSELIB_OT_render_previews(Operator): +"""Renders a preview image for each pose in the pose library. + +TODO: the viewport used for OpenGL rendering is more or less random. +""" + +import logging as __logging + +bl_idname = "poselib.render_previews" +bl_label = "Render pose previews" +bl_description = "Renders a preview image for each pose in the pose library" + +log = __logging.getLogger('bpy.ops.%s' % bl_idname) + +render_method = EnumProperty( +items=[ +('OPENGL', 'OpenGL render', 'Use the OpenGL viewport render'), +('FULL', 'Full render', 'Use the same render engine as the scene'), +], +default='OPENGL' +) + +plib_index = 0 + +@classmethod +def poll(cls, context): +"""Running only makes sense if there are any poses in the library.""" +plib = context.object and context.object.pose_library +return bool(plib and plib.pose_markers) + +def execute(self, context): +return {'PASS_THROUGH'} + +def modal(self, context, event): +if event.type == 'ESC': +self._finish(context) +self.report({'INFO'}, 'Canceled rendering pose library previews') +return {'CANCELLED'} + +if event.type != 'TIMER': +return {'PASS_THROUGH'} + +plib = context.object.pose_library + +pose_count = len(plib.pose_markers) +if self.plib_index >= pose_count: +self._finish(context) +self.report({'INFO'}, 'Done rendering pose library previews') +return {'FINISHED'} + +self.render_pose(context, plib, self.plib_index) +self.plib_index += 1 + +return {'RUNNING_MODAL'} + +def render_pose(self, context, plib, plib_index): +import os.path + +marker = plib.pose_markers[plib_index] +self.log.info('Rendering pose %s at frame %i', marker.name, marker.frame) + +context.scene.frame_set(marker.frame) +switch_to = None +if marker.camera: +switch_to = marker.camera +else: +cams = [m.camera for m in context.scene.timeline_markers +
[Bf-blender-cvs] [8d50467] temp-sybren-poselib: Added a little note about some hackyness.
Commit: 8d5046760a6992bbfc9ed1e89b64ffdc006ff80b Author: Sybren A. Stüvel Date: Tue Nov 1 15:11:44 2016 +0100 Branches: temp-sybren-poselib https://developer.blender.org/rB8d5046760a6992bbfc9ed1e89b64ffdc006ff80b Added a little note about some hackyness. === M release/scripts/startup/bl_operators/poselib.py === diff --git a/release/scripts/startup/bl_operators/poselib.py b/release/scripts/startup/bl_operators/poselib.py index 4a75f5f..3d3e4f4 100644 --- a/release/scripts/startup/bl_operators/poselib.py +++ b/release/scripts/startup/bl_operators/poselib.py @@ -36,12 +36,17 @@ from bpy.props import ( class POSELIB_OT_render_previews(Operator): -"Renders a preview image for each pose in the pose library" +"""Renders a preview image for each pose in the pose library. + +TODO: the viewport used for OpenGL rendering is more or less random. +""" import logging as __logging bl_idname = "poselib.render_previews" bl_label = "Render pose previews" +bl_description = "Renders a preview image for each pose in the pose library" + log = __logging.getLogger('bpy.ops.%s' % bl_idname) render_method = EnumProperty( @@ -54,7 +59,6 @@ class POSELIB_OT_render_previews(Operator): plib_index = 0 - @classmethod def poll(cls, context): """Running only makes sense if there are any poses in the library.""" ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [0648fb6] temp-sybren-poselib: Merge branch 'master' into temp-sybren-poselib
Commit: 0648fb6ee521bc93e8eed1ccfe207d435970f170 Author: Sybren A. Stüvel Date: Tue Nov 1 14:57:12 2016 +0100 Branches: temp-sybren-poselib https://developer.blender.org/rB0648fb6ee521bc93e8eed1ccfe207d435970f170 Merge branch 'master' into temp-sybren-poselib === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [4e95a90] master: Add 'copy array' for rna buttons
Commit: 4e95a9069e6fcbbdac10898e83dce8f993eb6518 Author: Bastien Montagne Date: Tue Nov 1 14:59:12 2016 +0100 Branches: master https://developer.blender.org/rB4e95a9069e6fcbbdac10898e83dce8f993eb6518 Add 'copy array' for rna buttons ctrl-alt-c/v allows to copy/paste whole RNA array, e.g. location, rotation, etc., from UI buttons. Request from Andy at the studio. === M source/blender/editors/interface/interface_handlers.c === diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 029..f3eeadb 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -2219,7 +2219,7 @@ static void ui_but_drop(bContext *C, const wmEvent *event, uiBut *but, uiHandleB /* *** copy and paste */ /* c = copy, v = paste */ -static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data, char mode) +static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data, const char mode, const bool copy_array) { int buf_paste_len = 0; const char *buf_paste = ""; @@ -2255,6 +2255,46 @@ static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data, if (but->poin == NULL && but->rnapoin.data == NULL) { /* pass */ } + else if (copy_array && but->rnapoin.data && but->rnaprop && +ELEM(RNA_property_subtype(but->rnaprop), PROP_COLOR, PROP_TRANSLATION, PROP_DIRECTION, + PROP_VELOCITY, PROP_ACCELERATION, PROP_MATRIX, PROP_EULER, PROP_QUATERNION, PROP_AXISANGLE, + PROP_XYZ, PROP_XYZ_LENGTH, PROP_COLOR_GAMMA, PROP_COORDS)) + { + float values[4]; + int array_length = RNA_property_array_length(>rnapoin, but->rnaprop); + + if (mode == 'c') { + char buf_copy[UI_MAX_DRAW_STR]; + + if (array_length == 4) { +values[3] = RNA_property_float_get_index(>rnapoin, but->rnaprop, 3); + } + else { + values[3] = 0.0f; + } + ui_but_v3_get(but, values); + + BLI_snprintf(buf_copy, sizeof(buf_copy), "[%f, %f, %f, %f]", values[0], values[1], values[2], values[3]); + WM_clipboard_text_set(buf_copy, 0); + } + else { + if (sscanf(buf_paste, "[%f, %f, %f, %f]", [0], [1], [2], [3]) >= array_length) { + button_activate_state(C, but, BUTTON_STATE_NUM_EDITING); + + ui_but_v3_set(but, values); + if (but->rnaprop && array_length == 4) { + RNA_property_float_set_index(>rnapoin, but->rnaprop, 3, values[3]); + } + data->value = values[but->rnaindex]; + + button_activate_state(C, but, BUTTON_STATE_EXIT); + } + else { + WM_report(RPT_ERROR, "Paste expected 4 numbers, formatted: '[n, n, n, n]'"); + show_report = true; + } + } + } else if (mode == 'c') { /* Get many decimal places, then strip trailing zeros. * note: too high values start to give strange results */ @@ -6965,7 +7005,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, const wmEvent * if ((data->state == BUTTON_STATE_HIGHLIGHT) || (event->type == EVT_DROP)) { /* handle copy-paste */ if (ELEM(event->type, CKEY, VKEY) && event->val == KM_PRESS && - IS_EVENT_MOD(event, ctrl, oskey) && !event->shift && !event->alt) + IS_EVENT_MOD(event, ctrl, oskey) && !event->shift) { /* Specific handling for listrows, we try to find their overlapping tex button. */ if (but->type == UI_BTYPE_LISTROW) { @@ -6975,7 +7015,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, const wmEvent * data = but->active; } } -
[Bf-blender-cvs] [7c9bb24] temp-sybren-poselib: Explicitly switch to camera from either pose or scene marker.
Commit: 7c9bb240f9752abcaab7aa3fe26cb808b844b085 Author: Sybren A. Stüvel Date: Fri Oct 14 11:13:35 2016 +0200 Branches: temp-sybren-poselib https://developer.blender.org/rB7c9bb240f9752abcaab7aa3fe26cb808b844b085 Explicitly switch to camera from either pose or scene marker. === M release/scripts/startup/bl_operators/poselib.py === diff --git a/release/scripts/startup/bl_operators/poselib.py b/release/scripts/startup/bl_operators/poselib.py index 44c77ed..4a75f5f 100644 --- a/release/scripts/startup/bl_operators/poselib.py +++ b/release/scripts/startup/bl_operators/poselib.py @@ -93,6 +93,18 @@ class POSELIB_OT_render_previews(Operator): self.log.info('Rendering pose %s at frame %i', marker.name, marker.frame) context.scene.frame_set(marker.frame) +switch_to = None +if marker.camera: +switch_to = marker.camera +else: +cams = [m.camera for m in context.scene.timeline_markers +if m.frame == marker.frame and m.camera] +if cams: +switch_to = cams[0] +if switch_to is not None: +self.log.info('Switching camera to %s', switch_to) +context.scene.camera = switch_to + bpy.ops.poselib.apply_pose(pose_index=plib_index) fname = '%s.png' % marker.name ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [0621b2a] temp-sybren-poselib: Merge branch 'master' into temp-sybren-poselib
Commit: 0621b2ab45da19c15615674d8a9913879773bad9 Author: Sybren A. Stüvel Date: Fri Oct 7 15:35:19 2016 +0200 Branches: temp-sybren-poselib https://developer.blender.org/rB0621b2ab45da19c15615674d8a9913879773bad9 Merge branch 'master' into temp-sybren-poselib === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [10c91c2] temp-sybren-poselib: More poselib stuff
Commit: 10c91c29c52b10b194e6123aeccb9f5173d6f0fd Author: Sybren A. Stüvel Date: Tue Oct 11 10:24:25 2016 +0200 Branches: temp-sybren-poselib https://developer.blender.org/rB10c91c29c52b10b194e6123aeccb9f5173d6f0fd More poselib stuff === M release/scripts/startup/bl_operators/poselib.py M release/scripts/startup/bl_ui/__init__.py M release/scripts/startup/bl_ui/properties_data_armature.py === diff --git a/release/scripts/startup/bl_operators/poselib.py b/release/scripts/startup/bl_operators/poselib.py index d74b2c0..44c77ed 100644 --- a/release/scripts/startup/bl_operators/poselib.py +++ b/release/scripts/startup/bl_operators/poselib.py @@ -89,13 +89,13 @@ class POSELIB_OT_render_previews(Operator): def render_pose(self, context, plib, plib_index): import os.path -frame = plib.pose_markers[plib_index].frame -self.log.info('Rendering pose %i at frame %i', plib_index, frame) +marker = plib.pose_markers[plib_index] +self.log.info('Rendering pose %s at frame %i', marker.name, marker.frame) -context.scene.frame_set(frame) +context.scene.frame_set(marker.frame) bpy.ops.poselib.apply_pose(pose_index=plib_index) -fname = '%03d.png' % (plib_index+1) +fname = '%s.png' % marker.name context.scene.render.filepath = os.path.join(plib.pose_previews_dir, fname) bpy.ops.render.opengl(write_still=True) diff --git a/release/scripts/startup/bl_ui/__init__.py b/release/scripts/startup/bl_ui/__init__.py index 1dfca22..4d5c4aa 100644 --- a/release/scripts/startup/bl_ui/__init__.py +++ b/release/scripts/startup/bl_ui/__init__.py @@ -139,6 +139,20 @@ def register(): default={'OFFICIAL', 'COMMUNITY'}, options={'ENUM_FLAG'}, ) + +# properties_data_armature.py +from . import properties_data_armature +bpy.types.Action.pose_previews = EnumProperty( +items=properties_data_armature.pose_preview_items, +update=properties_data_armature.update_pose) +bpy.types.Action.pose_previews_dir = StringProperty( +name='Thumbnail Path', +subtype='DIR_PATH', +default='', +# update=filepath_update +) + + # done... @@ -148,6 +162,10 @@ def unregister(): from . import properties_data_armature properties_data_armature.unload_custom_icons() +del bpy.types.Object.pose_previews +if properties_data_armature.previews: +bpy.utils.previews.remove(properties_data_armature.previews) + # Define a default UIList, when a list does not need any custom drawing... # Keep in sync with its #defined name in UI_interface.h diff --git a/release/scripts/startup/bl_ui/properties_data_armature.py b/release/scripts/startup/bl_ui/properties_data_armature.py index aaa80fb..b98eaf8 100644 --- a/release/scripts/startup/bl_ui/properties_data_armature.py +++ b/release/scripts/startup/bl_ui/properties_data_armature.py @@ -161,59 +161,54 @@ class DATA_PT_bone_groups(ArmatureButtonsPanel, Panel): sub.operator("pose.group_deselect", text="Deselect") -class POSELIB_UL_poses(bpy.types.UIList): -# The draw_item function is called for each item of the collection that is visible in the list. -# data is the RNA object containing the collection, -# item is the currently drawn item of the collection, -# icon is the "computed" icon for the item (as an integer, because some objects like materials or textures -# have custom icons ID, which are not available as enum items). -# active_data is the RNA object containing the active property for the collection (i.e. integer pointing to the -# active item of the collection). -# active_propname is the name of the active property (use 'getattr(active_data, active_propname)'). -# index is index of the current item in the collection. -# flt_flag is the result of the filtering process for this item. -# Note: as index and flt_flag are optional arguments, you do not have to use/declare them here if you don't -# need them. -def draw_item(self, context, layout, data, item, icon, active_data, active_propname): -if self.layout_type != 'GRID': -super().draw_item(context, layout, data, item, icon, active_data, active_propname) - -if icon == 17: -if icons is None: load_custom_icons() -icon = icons['POSE_NOT_HERE'].icon_id - -col = layout.column(align=True) -col.alignment = 'CENTER' -col.label(text='', icon_value=icon) -col.label(text=item.name) - - -icons = None - -def load_custom_icons(): -global icons - -if icons is not None: -# Already loaded -return - -import bpy.utils.previews -import blender_cloud +previews = None + + +def
[Bf-blender-cvs] [6b531ea] temp-sybren-poselib: Merge branch 'master' into temp-sybren-poselib
Commit: 6b531ea5db1b5d18aaf9b1812da93c566e936061 Author: Sybren A. Stüvel Date: Thu Oct 13 17:30:38 2016 +0200 Branches: temp-sybren-poselib https://developer.blender.org/rB6b531ea5db1b5d18aaf9b1812da93c566e936061 Merge branch 'master' into temp-sybren-poselib === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [98a5aa9] temp-sybren-poselib: Merge branch 'master' into temp-sybren-poselib
Commit: 98a5aa96cd3a0c38ecba5dbea8e7135f14ef945c Author: Sybren A. Stüvel Date: Fri Oct 14 13:01:36 2016 +0200 Branches: temp-sybren-poselib https://developer.blender.org/rB98a5aa96cd3a0c38ecba5dbea8e7135f14ef945c Merge branch 'master' into temp-sybren-poselib === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [91b7900] temp-sybren-poselib: Fix
Commit: 91b79007d0cf1cee9720a34fc28800f3a4e2b37a Author: Sybren A. Stüvel Date: Fri Oct 14 11:13:22 2016 +0200 Branches: temp-sybren-poselib https://developer.blender.org/rB91b79007d0cf1cee9720a34fc28800f3a4e2b37a Fix === M release/scripts/startup/bl_ui/__init__.py === diff --git a/release/scripts/startup/bl_ui/__init__.py b/release/scripts/startup/bl_ui/__init__.py index 4d5c4aa..56d3ece 100644 --- a/release/scripts/startup/bl_ui/__init__.py +++ b/release/scripts/startup/bl_ui/__init__.py @@ -160,7 +160,6 @@ def unregister(): bpy.utils.unregister_module(__name__) from . import properties_data_armature -properties_data_armature.unload_custom_icons() del bpy.types.Object.pose_previews if properties_data_armature.previews: ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [b65d0a7] temp-sybren-poselib: Merge branch 'master' into temp-sybren-poselib
Commit: b65d0a7702a8710e4759541f04eb674e6742a7c7 Author: Sybren A. Stüvel Date: Thu Oct 20 11:30:10 2016 +0200 Branches: temp-sybren-poselib https://developer.blender.org/rBb65d0a7702a8710e4759541f04eb674e6742a7c7 Merge branch 'master' into temp-sybren-poselib === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [607b8ae] multi_previews_id: Merge branch 'master' into multi_previews_id
Commit: 607b8aee086625f8f45ca4f47939c27f8b81000e Author: Bastien Montagne Date: Tue Nov 1 14:50:41 2016 +0100 Branches: multi_previews_id https://developer.blender.org/rB607b8aee086625f8f45ca4f47939c27f8b81000e Merge branch 'master' into multi_previews_id === === diff --cc source/blender/editors/interface/interface_templates.c index 3077464,bdad667..e7ec323 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@@ -3908,9 -3910,10 +3910,10 @@@ void uiTemplateCacheFile(uiLayout *layo uiItemR(row, , "frame", 0, "Frame", ICON_NONE); row = uiLayoutRow(layout, false); - uiItemL(row, IFACE_("Manual Transform:"), ICON_NONE); + uiItemL(row, IFACE_("Manual Transform:"), ICON_NONE, 0); row = uiLayoutRow(layout, false); + uiLayoutSetEnabled(row, (sbuts->mainb == BCONTEXT_CONSTRAINT)); uiItemR(row, , "scale", 0, "Scale", ICON_NONE); /* TODO: unused for now, so no need to expose. */ diff --cc source/blender/makesdna/DNA_ID.h index 9f7b420,feeb2d5..944fa2e --- a/source/blender/makesdna/DNA_ID.h +++ b/source/blender/makesdna/DNA_ID.h @@@ -189,11 -191,8 +196,10 @@@ typedef struct PreviewImage struct GPUTexture *gputexture[2]; int icon_id; /* Used by previews outside of ID context. */ + /* Number of frames stored in each rect (0 means 'old format', rect is only w * h integers). */ + unsigned short num_frames; + - char pad; - char use_deferred; /* for now a mere bool, if we add more deferred loading methods we can switch to bitflag. */ + short tag; /* Runtime data. */ - char pad[2]; } PreviewImage; #define PRV_DEFERRED_DATA(prv) \ ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [1ee43c5] master: Fix T49856: Blender 2.78 crashes after loading data from a blendfile
Commit: 1ee43c5aef03c1a3218163d9450545fdb9ad4482 Author: Bastien Montagne Date: Tue Nov 1 13:39:31 2016 +0100 Branches: master https://developer.blender.org/rB1ee43c5aef03c1a3218163d9450545fdb9ad4482 Fix T49856: Blender 2.78 crashes after loading data from a blendfile Issue here was that py API code was keeping references (pointers) to the liniked data-blocks, which can actually be duplicated and then deleted during the 'make local' process... Would have like to find a better way than passing optional GHash to get the oldid->newid mapping, but could not think of a better idea. === M source/blender/blenkernel/BKE_library.h M source/blender/blenkernel/intern/blender_copybuffer.c M source/blender/blenkernel/intern/library.c M source/blender/editors/object/object_relations.c M source/blender/python/intern/bpy_library_load.c M source/blender/windowmanager/intern/wm_files_link.c === diff --git a/source/blender/blenkernel/BKE_library.h b/source/blender/blenkernel/BKE_library.h index 0d82de0..79373e3 100644 --- a/source/blender/blenkernel/BKE_library.h +++ b/source/blender/blenkernel/BKE_library.h @@ -39,6 +39,7 @@ extern "C" { #include "BLI_compiler_attrs.h" struct BlendThumbnail; +struct GHash; struct ListBase; struct ID; struct ImBuf; @@ -125,7 +126,8 @@ void BKE_id_ui_prefix(char name[66 + 1], const struct ID *id); void BKE_library_free(struct Library *lib); void BKE_library_make_local( -struct Main *bmain, const struct Library *lib, const bool untagged_only, const bool set_fake); +struct Main *bmain, const struct Library *lib, struct GHash *old_to_new_ids, +const bool untagged_only, const bool set_fake); /* use when "" is given to new_id() */ diff --git a/source/blender/blenkernel/intern/blender_copybuffer.c b/source/blender/blenkernel/intern/blender_copybuffer.c index a4c2812..e57524a 100644 --- a/source/blender/blenkernel/intern/blender_copybuffer.c +++ b/source/blender/blenkernel/intern/blender_copybuffer.c @@ -101,7 +101,7 @@ bool BKE_copybuffer_read(Main *bmain_dst, const char *libname, ReportList *repor IMB_colormanagement_check_file_config(bmain_dst); /* Append, rather than linking. */ Library *lib = BLI_findstring(_dst->library, libname, offsetof(Library, filepath)); - BKE_library_make_local(bmain_dst, lib, true, false); + BKE_library_make_local(bmain_dst, lib, NULL, true, false); /* Important we unset, otherwise these object wont * link into other scenes from this blend file. */ @@ -150,7 +150,7 @@ bool BKE_copybuffer_paste(bContext *C, const char *libname, const short flag, Re /* append, rather than linking */ lib = BLI_findstring(>library, libname, offsetof(Library, filepath)); - BKE_library_make_local(bmain, lib, true, false); + BKE_library_make_local(bmain, lib, NULL, true, false); /* important we unset, otherwise these object wont * link into other scenes from this blend file */ diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 1461215..622f79d 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -73,6 +73,7 @@ #include "BLI_blenlib.h" #include "BLI_utildefines.h" +#include "BLI_ghash.h" #include "BLI_linklist.h" #include "BLI_memarena.h" @@ -1640,7 +1641,8 @@ void BKE_main_id_clear_newpoins(Main *bmain) * We'll probably need at some point a true dependency graph between datablocks, but for now this should work * good enough (performances is not a critical point here anyway). */ -void BKE_library_make_local(Main *bmain, const Library *lib, const bool untagged_only, const bool set_fake) +void BKE_library_make_local( +Main *bmain, const Library *lib, GHash *old_to_new_ids, const bool untagged_only, const bool set_fake) { ListBase *lbarray[MAX_LIBARRAY]; ID *id, *id_next; @@ -1712,6 +1714,9 @@ void BKE_library_make_local(Main *bmain, const Library *lib, const bool untagged BLI_assert(id->lib != NULL); BKE_libblock_remap(bmain, id, id->newid, ID_REMAP_SKIP_INDIRECT_USAGE); + if (old_to_new_ids) { + BLI_ghash_insert(old_to_new_ids, id, id->newid); + } } /* Third step: remove datablocks that have been copied to be localized and are no more used in the end... diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index d1232fd..16ee6f4 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -2235,7 +2235,7 @@ static int make_local_exec(bContext *C, wmOperator *op)
[Bf-blender-cvs] [bf1e9bc] master: Ceres: Update to the latest actual version
Commit: bf1e9bc613377a4a4d5dcf9f50e757a4feb0928f Author: Sergey Sharybin Date: Tue Nov 1 11:29:33 2016 +0100 Branches: master https://developer.blender.org/rBbf1e9bc613377a4a4d5dcf9f50e757a4feb0928f Ceres: Update to the latest actual version Brings all the fixes and improvements done in upstream within the last 13 months. === M extern/ceres/CMakeLists.txt M extern/ceres/ChangeLog M extern/ceres/bundle.sh M extern/ceres/files.txt M extern/ceres/include/ceres/cost_function_to_functor.h M extern/ceres/include/ceres/covariance.h M extern/ceres/include/ceres/dynamic_numeric_diff_cost_function.h M extern/ceres/include/ceres/gradient_checker.h M extern/ceres/include/ceres/internal/port.h M extern/ceres/include/ceres/iteration_callback.h M extern/ceres/include/ceres/jet.h M extern/ceres/include/ceres/local_parameterization.h M extern/ceres/include/ceres/numeric_diff_cost_function.h M extern/ceres/include/ceres/problem.h M extern/ceres/include/ceres/rotation.h M extern/ceres/include/ceres/solver.h M extern/ceres/include/ceres/version.h M extern/ceres/internal/ceres/compressed_row_jacobian_writer.cc M extern/ceres/internal/ceres/covariance.cc M extern/ceres/internal/ceres/covariance_impl.cc M extern/ceres/internal/ceres/covariance_impl.h A extern/ceres/internal/ceres/gradient_checker.cc M extern/ceres/internal/ceres/gradient_checking_cost_function.cc M extern/ceres/internal/ceres/gradient_checking_cost_function.h M extern/ceres/internal/ceres/gradient_problem_solver.cc A extern/ceres/internal/ceres/is_close.cc A extern/ceres/internal/ceres/is_close.h M extern/ceres/internal/ceres/line_search_minimizer.cc M extern/ceres/internal/ceres/local_parameterization.cc M extern/ceres/internal/ceres/map_util.h M extern/ceres/internal/ceres/parameter_block.h M extern/ceres/internal/ceres/problem.cc M extern/ceres/internal/ceres/problem_impl.cc M extern/ceres/internal/ceres/problem_impl.h M extern/ceres/internal/ceres/reorder_program.cc M extern/ceres/internal/ceres/residual_block.h M extern/ceres/internal/ceres/schur_complement_solver.cc M extern/ceres/internal/ceres/solver.cc M extern/ceres/internal/ceres/sparse_normal_cholesky_solver.cc M extern/ceres/internal/ceres/stringprintf.cc M extern/ceres/internal/ceres/trust_region_minimizer.cc M extern/ceres/internal/ceres/trust_region_minimizer.h A extern/ceres/internal/ceres/trust_region_step_evaluator.cc A extern/ceres/internal/ceres/trust_region_step_evaluator.h M extern/ceres/internal/ceres/trust_region_strategy.h === diff --git a/extern/ceres/CMakeLists.txt b/extern/ceres/CMakeLists.txt index 2ad8c54..a6e9cd9 100644 --- a/extern/ceres/CMakeLists.txt +++ b/extern/ceres/CMakeLists.txt @@ -73,10 +73,12 @@ set(SRC internal/ceres/file.cc internal/ceres/generated/partitioned_matrix_view_d_d_d.cc internal/ceres/generated/schur_eliminator_d_d_d.cc + internal/ceres/gradient_checker.cc internal/ceres/gradient_checking_cost_function.cc internal/ceres/gradient_problem.cc internal/ceres/gradient_problem_solver.cc internal/ceres/implicit_schur_complement.cc + internal/ceres/is_close.cc internal/ceres/iterative_schur_complement_solver.cc internal/ceres/lapack.cc internal/ceres/levenberg_marquardt_strategy.cc @@ -116,6 +118,7 @@ set(SRC internal/ceres/triplet_sparse_matrix.cc internal/ceres/trust_region_minimizer.cc internal/ceres/trust_region_preprocessor.cc + internal/ceres/trust_region_step_evaluator.cc internal/ceres/trust_region_strategy.cc internal/ceres/types.cc internal/ceres/wall_time.cc @@ -204,6 +207,7 @@ set(SRC internal/ceres/householder_vector.h internal/ceres/implicit_schur_complement.h internal/ceres/integral_types.h + internal/ceres/is_close.h internal/ceres/iterative_schur_complement_solver.h internal/ceres/lapack.h internal/ceres/levenberg_marquardt_strategy.h @@ -248,6 +252,7 @@ set(SRC internal/ceres/triplet_sparse_matrix.h internal/ceres/trust_region_minimizer.h internal/ceres/trust_region_preprocessor.h + internal/ceres/trust_region_step_evaluator.h internal/ceres/trust_region_strategy.h internal/ceres/visibility_based_preconditioner.h internal/ceres/wall_time.h diff --git a/extern/ceres/ChangeLog b/extern/ceres/ChangeLog index 0e6c195..ae8d42a 100644 --- a/extern/ceres/ChangeLog +++ b/extern/ceres/ChangeLog @@ -1,659 +1,588 @@ -commit aef9c9563b08d5f39eee1576af133a84749d1b48 -Author: Alessandro Gentilini