Commit: 9e1d3268922864772760b7d50ea36b9477efdc70
Author: Dalai Felinto
Date:   Thu Sep 4 21:03:03 2014 +0200
Branches: multiview
https://developer.blender.org/rB9e1d3268922864772760b7d50ea36b9477efdc70

Image Node supporting individual images as views

===================================================================

M       source/blender/compositor/nodes/COM_ImageNode.cpp
M       source/blender/compositor/operations/COM_ImageOperation.cpp
M       source/blender/compositor/operations/COM_ImageOperation.h

===================================================================

diff --git a/source/blender/compositor/nodes/COM_ImageNode.cpp 
b/source/blender/compositor/nodes/COM_ImageNode.cpp
index d8685ca..8473810 100644
--- a/source/blender/compositor/nodes/COM_ImageNode.cpp
+++ b/source/blender/compositor/nodes/COM_ImageNode.cpp
@@ -157,6 +157,8 @@ void ImageNode::convertToOperations(NodeConverter 
&converter, const CompositorCo
                        operation->setImage(image);
                        operation->setImageUser(imageuser);
                        operation->setFramenumber(framenumber);
+                       operation->setRenderData(context.getRenderData());
+                       operation->setViewName(context.getViewName());
                        converter.addOperation(operation);
                        
                        if (outputStraightAlpha) {
diff --git a/source/blender/compositor/operations/COM_ImageOperation.cpp 
b/source/blender/compositor/operations/COM_ImageOperation.cpp
index 2733c48..87dcc9c 100644
--- a/source/blender/compositor/operations/COM_ImageOperation.cpp
+++ b/source/blender/compositor/operations/COM_ImageOperation.cpp
@@ -25,6 +25,7 @@
 #include "BLI_listbase.h"
 #include "DNA_image_types.h"
 #include "BKE_image.h"
+#include "BKE_scene.h"
 #include "BLI_math.h"
 
 extern "C" {
@@ -48,6 +49,8 @@ BaseImageOperation::BaseImageOperation() : NodeOperation()
        this->m_framenumber = 0;
        this->m_depthBuffer = NULL;
        this->m_numberOfChannels = 0;
+       this->m_rd = NULL;
+       this->m_viewName = NULL;
 }
 ImageOperation::ImageOperation() : BaseImageOperation()
 {
@@ -65,8 +68,12 @@ ImageDepthOperation::ImageDepthOperation() : 
BaseImageOperation()
 ImBuf *BaseImageOperation::getImBuf()
 {
        ImBuf *ibuf;
-       
-       ibuf = BKE_image_acquire_ibuf(this->m_image, this->m_imageUser, NULL);
+       ImageUser iuser = *this->m_imageUser;
+
+       /* local changes to the original ImageUser */
+       iuser.multi_index = BKE_scene_view_get_id(this->m_rd, this->m_viewName);
+
+       ibuf = BKE_image_acquire_ibuf(this->m_image, &iuser, NULL);
        if (ibuf == NULL || (ibuf->rect == NULL && ibuf->rect_float == NULL)) {
                BKE_image_release_ibuf(this->m_image, ibuf, NULL);
                return NULL;
diff --git a/source/blender/compositor/operations/COM_ImageOperation.h 
b/source/blender/compositor/operations/COM_ImageOperation.h
index 206f150..7522255 100644
--- a/source/blender/compositor/operations/COM_ImageOperation.h
+++ b/source/blender/compositor/operations/COM_ImageOperation.h
@@ -49,7 +49,9 @@ protected:
        int m_imagewidth;
        int m_framenumber;
        int m_numberOfChannels;
-       
+       const RenderData *m_rd;
+       const char *m_viewName;
+
        BaseImageOperation();
        /**
         * Determine the output resolution. The resolution is retrieved from 
the Renderer
@@ -64,7 +66,8 @@ public:
        void deinitExecution();
        void setImage(Image *image) { this->m_image = image; }
        void setImageUser(ImageUser *imageuser) { this->m_imageUser = 
imageuser; }
-
+       void setRenderData(const RenderData *rd) { this->m_rd = rd; }
+       void setViewName(const char *viewName) { this->m_viewName = viewName; }
        void setFramenumber(int framenumber) { this->m_framenumber = 
framenumber; }
 };
 class ImageOperation : public BaseImageOperation {

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to