[Bf-blender-cvs] [ebdedf8] multiview: Merge remote-tracking branch 'origin/master' into multiview
Dalai Felinto
noreply at git.blender.org
Wed Feb 4 14:38:24 CET 2015
Commit: ebdedf8a9646edf6b4cd5122b601213651c947ec
Author: Dalai Felinto
Date: Wed Feb 4 11:19:01 2015 -0200
Branches: multiview
https://developer.blender.org/rBebdedf8a9646edf6b4cd5122b601213651c947ec
Merge remote-tracking branch 'origin/master' into multiview
The conflict solving included a change in openexr_api.cpp (to have
COMBINED always on head) that I'm not sure I should go ahead with.
So this little bit may be reverted later.
Conflicts:
intern/cycles/blender/blender_camera.cpp
source/blender/blenkernel/BKE_sequencer.h
source/blender/blenkernel/intern/image.c
source/blender/blenkernel/intern/sequencer.c
source/blender/blenkernel/intern/writeframeserver.c
source/blender/editors/include/ED_view3d.h
source/blender/editors/sculpt_paint/paint_image_proj.c
source/blender/editors/space_sequencer/sequencer_edit.c
source/blender/imbuf/IMB_imbuf_types.h
source/blender/imbuf/intern/openexr/openexr_api.cpp
source/blender/makesdna/DNA_image_types.h
source/blender/makesrna/intern/rna_image.c
source/blender/render/intern/source/render_result.c
source/blender/windowmanager/intern/wm_files.c
===================================================================
===================================================================
diff --cc intern/cycles/blender/blender_camera.cpp
index f30b992,16f555c..74151c3
--- a/intern/cycles/blender/blender_camera.cpp
+++ b/intern/cycles/blender/blender_camera.cpp
@@@ -521,7 -520,26 +525,27 @@@ static void blender_camera_view_subset(
*cam_box = cam * (1.0f/cam_aspect);
}
-static void blender_camera_border_subset(BL::RenderSettings b_render,
++static void blender_camera_border_subset(BL::RenderEngine b_engine,
++ BL::RenderSettings b_render,
+ BL::Scene b_scene,
+ BL::SpaceView3D b_v3d,
+ BL::RegionView3D b_rv3d,
+ BL::Object b_ob,
+ int width, int height,
+ const BoundBox2D &border,
+ BoundBox2D *result)
+ {
+ /* Determine camera viewport subset. */
+ BoundBox2D view_box, cam_box;
- blender_camera_view_subset(b_render, b_scene, b_ob, b_v3d, b_rv3d, width, height,
++ blender_camera_view_subset(b_engine, b_render, b_scene, b_ob, b_v3d, b_rv3d, width, height,
+ &view_box, &cam_box);
+
+ /* Determine viewport subset matching given border. */
+ cam_box = cam_box.make_relative_to(view_box);
+ *result = cam_box.subset(border);
+ }
+
-static void blender_camera_border(BlenderCamera *bcam, BL::RenderSettings b_render, BL::Scene b_scene, BL::SpaceView3D b_v3d,
+static void blender_camera_border(BlenderCamera *bcam, BL::RenderEngine b_engine, BL::RenderSettings b_render, BL::Scene b_scene, BL::SpaceView3D b_v3d,
BL::RegionView3D b_rv3d, int width, int height)
{
bool is_camera_view;
@@@ -551,20 -566,36 +572,38 @@@
if(!b_ob)
return;
+ /* Determine camera border inside the viewport. */
+ BoundBox2D full_border;
- blender_camera_border_subset(b_render,
++ blender_camera_border_subset(b_engine,
++ b_render,
+ b_scene,
+ b_v3d,
+ b_rv3d,
+ b_ob,
+ width, height,
+ full_border,
+ &bcam->viewport_camera_border);
+
+ if(!b_render.use_border()) {
+ return;
+ }
+
bcam->border.left = b_render.border_min_x();
bcam->border.right = b_render.border_max_x();
bcam->border.bottom = b_render.border_min_y();
bcam->border.top = b_render.border_max_y();
- /* determine camera viewport subset */
- BoundBox2D view_box, cam_box;
-
- blender_camera_view_subset(b_engine, b_render, b_scene, b_ob, b_v3d, b_rv3d, width, height,
- &view_box, &cam_box);
-
- /* determine viewport subset matching camera border */
- cam_box = cam_box.make_relative_to(view_box);
- bcam->border = cam_box.subset(bcam->border).clamp();
+ /* Determine viewport subset matching camera border. */
- blender_camera_border_subset(b_render,
++ blender_camera_border_subset(b_engine,
++ b_render,
+ b_scene,
+ b_v3d,
+ b_rv3d,
+ b_ob,
+ width, height,
+ bcam->border,
+ &bcam->border);
+ bcam->border.clamp();
}
void BlenderSync::sync_view(BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d, int width, int height)
diff --cc release/scripts/startup/bl_ui/space_sequencer.py
index c03f02e,834973a..121902c
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@@ -1076,39 -1094,9 +1094,39 @@@ class SEQUENCER_PT_grease_pencil_tools(
bl_region_type = 'UI'
# NOTE: this is just a wrapper around the generic GP tools panel
- # It contains access to some essential tools usually found only in
- # toolbar, which doesn't exist here...
+ # It contains access to some essential tools usually found only in
+ # toolbar, which doesn't exist here...
+class SEQUENCER_PT_stereo_3d(SequencerButtonsPanel, Panel):
+ bl_label = "Stereoscopy"
+ bl_options = {'DEFAULT_CLOSED'}
+
+ @classmethod
+ def poll(cls, context):
+ if not cls.has_sequencer(context):
+ return False
+
+ strip = act_strip(context)
+ if not strip:
+ return False
+
+ return (strip.type in {'IMAGE', 'MOVIE'} and
+ context.scene.render.use_multiview)
+
+ def draw(self, context):
+ layout = self.layout
+
+ strip = act_strip(context)
+
+ col = layout
+ col.label(text="Views Format:")
+ col.row().prop(strip, "views_format", expand=True)
+
+ box = col.box()
+ box.active = strip.views_format == 'STEREO_3D'
+ box.template_image_stereo_3d(strip.stereo_3d_format)
+
+
if __name__ == "__main__": # only for live edit.
bpy.utils.register_module(__name__)
diff --cc source/blender/blenkernel/BKE_sequencer.h
index c698f9f,6b9c4fa..8663c4c
--- a/source/blender/blenkernel/BKE_sequencer.h
+++ b/source/blender/blenkernel/BKE_sequencer.h
@@@ -239,7 -237,7 +240,7 @@@ struct StripElem *BKE_sequencer_give_st
void BKE_sequencer_update_changed_seq_and_deps(struct Scene *scene, struct Sequence *changed_seq, int len_change, int ibuf_change);
bool BKE_sequencer_input_have_to_preprocess(const SeqRenderData *context, struct Sequence *seq, float cfra);
- void BKE_sequencer_proxy_rebuild_context(struct Main *bmain, struct Scene *scene, struct Sequence *seq, ListBase *queue);
-struct SeqIndexBuildContext *BKE_sequencer_proxy_rebuild_context(struct Main *bmain, struct Scene *scene, struct Sequence *seq, struct GSet *file_list);
++void BKE_sequencer_proxy_rebuild_context(struct Main *bmain, struct Scene *scene, struct Sequence *seq, struct GSet *file_list, ListBase *queue);
void BKE_sequencer_proxy_rebuild(struct SeqIndexBuildContext *context, short *stop, short *do_update, float *progress);
void BKE_sequencer_proxy_rebuild_finish(struct SeqIndexBuildContext *context, bool stop);
diff --cc source/blender/blenkernel/intern/image.c
index 294b65a,b405e0a..8d7ddd4
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@@ -1003,31 -858,9 +1003,31 @@@ void BKE_image_memorypack(Scene *scene
IMB_freeImBuf(ibuf);
}
+void BKE_image_packfiles(ReportList *reports, Image *ima, const char *basepath)
+{
+ const size_t totfiles = image_num_files(ima);
+
+ if (totfiles == 1) {
+ ImagePackedFile *imapf = MEM_mallocN(sizeof(ImagePackedFile), "Image packed file");
+ BLI_addtail(&ima->packedfiles, imapf);
+ imapf->packedfile = newPackedFile(reports, ima->name, basepath);
+ BLI_strncpy(imapf->filepath, ima->name, sizeof(imapf->filepath));
+ }
+ else {
+ ImageView *iv;
+ for (iv = ima->views.first; iv; iv = iv->next) {
+ ImagePackedFile *imapf = MEM_mallocN(sizeof(ImagePackedFile), "Image packed file");
+ BLI_addtail(&ima->packedfiles, imapf);
+
+ imapf->packedfile = newPackedFile(reports, iv->filepath, basepath);
+ BLI_strncpy(imapf->filepath, iv->filepath, sizeof(imapf->filepath));
+ }
+ }
+}
+
void BKE_image_tag_time(Image *ima)
{
- ima->lastused = (int)PIL_check_seconds_timer();
+ ima->lastused = PIL_check_seconds_timer_i();
}
#if 0
@@@ -3174,74 -2594,46 +3174,79 @@@ static ImBuf *image_load_sequence_multi
static ImBuf *image_load_movie_file(Image *ima, ImageUser *iuser, int frame)
{
- struct ImBuf *ibuf = NULL;
-
- ima->lastframe = frame;
-
- if (ima->anim == NULL) {
- char str[FILE_MAX];
+ struct ImBuf **ibuf_arr;
+ struct ImBuf *r_ibuf;
+ const bool is_multiview = (ima->flag & IMA_IS_MULTIVIEW) != 0;
+ const size_t totfiles = image_num_files(ima);
+ const size_t totviews = is_multiview ? BLI_listbase_count(&ima->views) : 1;
+ size_t i;
+ ImageAnim *ia;
+
+ ibuf_arr = MEM_mallocN(sizeof(ImBuf *) * totviews, "Image Views (movie) Imbufs");
+
+ if ((BKE_image_has_anim(ima) == false) ||
+ totfiles != BLI_listbase_count_ex(&ima->anims, totfiles + 1))
+ {
+ int flags = IB_rect;
+ image_free_anims(ima);
+
+ if (ima->flag & IMA_DEINTERLACE) {
+ flags |= IB_animdeinterlace;
+ }
+
- BKE_image_user_file_path(iuser, ima, str);
+ for (i = 0; i < totfiles; i++) {
+ char str[FILE_MAX];
+ ImageUser iuser_t;
+
+ /* allocate the ImageAnim */
+ ia = MEM_mallocN(sizeof(ImageAnim), "Image Anim");
+ BLI_addtail(&ima->anims, ia);
+
+ if (iuser)
+ iuser_t = *iuser;
+ else
+ iuser_t.framenr = ima->lastframe;
+
+ iuser_t.view = i;
+
+ BKE_image_user_file_path(&iuser_t, ima, str);
- /* FIXME: make several stream accessible in image editor, too*/
- ima->anim = openanim(str, flags, 0, ima->colorspace_settings.name);
+ /* FIXME: make several stream accessible in image editor, too*/
- ia->anim = openanim(str, IB_rect, 0, ima->colorspace_settings.name);
++ ia->anim = openanim(str, flags, 0, ima->colorspace_settings.name);
- /* let's initialize this user */
- if (ima->anim && iuser && iuser->frames == 0)
- iuser->frames = IMB_anim_get_duration(ima->anim,
- IMB_TC_RECORD_RUN);
+ /* let's initialize this user */
+ if (ia->anim && iuser && iuser->frames == 0)
+ iuser->frames = IMB_anim_get_duration(ia->anim,
- IMB_TC_RECORD_RUN);
++ IMB_TC_RECORD_RUN);
+ }
}
- if (ima->anim) {
- int dur = IMB_anim_get_duration(ima->anim,
- IMB_TC_RECORD_RUN);
- int fra = frame - 1;
+ if (BKE_image_has_anim(ima)) {
+ for (i = 0, ia = ima->anims.first; ia; ia = ia->next, i++) {
+ int dur = IMB_anim_get_duration(ia->anim,
+ IMB_TC_RECORD_RUN);
+ int fra = frame - 1;
+
+ if (fra < 0) fra = 0;
+ if (fra > (dur - 1)) fra = dur - 1;
+ ibuf_arr[i] = IMB_makeSingleUser(
+
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list