Revision: 41611
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41611
Author:   nazgul
Date:     2011-11-07 12:56:05 +0000 (Mon, 07 Nov 2011)
Log Message:
-----------
Camera tracking integration
===========================

Rest of changes from camera tracking gsoc project.

This commit includes:

- New compositor nodes:
  * Movie Clip input node
  * Movie Undistortion node
  * Transformation node
  * 2D stabilization node

- Slight changes in existing node to prevent code duplication

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_node.h
    trunk/blender/source/blender/blenkernel/intern/node.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/blenloader/intern/writefile.c
    trunk/blender/source/blender/editors/space_node/drawnode.c
    trunk/blender/source/blender/editors/space_node/node_edit.c
    trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
    trunk/blender/source/blender/makesrna/intern/rna_nodetree_types.h
    trunk/blender/source/blender/nodes/CMakeLists.txt
    trunk/blender/source/blender/nodes/NOD_composite.h
    trunk/blender/source/blender/nodes/composite/node_composite_tree.c
    trunk/blender/source/blender/nodes/composite/node_composite_util.h
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_image.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_scale.c

Added Paths:
-----------
    
trunk/blender/source/blender/nodes/composite/nodes/node_composite_movieclip.c
    
trunk/blender/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c
    
trunk/blender/source/blender/nodes/composite/nodes/node_composite_stabilize2d.c
    
trunk/blender/source/blender/nodes/composite/nodes/node_composite_transform.c

Modified: trunk/blender/source/blender/blenkernel/BKE_node.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_node.h  2011-11-07 12:55:18 UTC 
(rev 41610)
+++ trunk/blender/source/blender/blenkernel/BKE_node.h  2011-11-07 12:56:05 UTC 
(rev 41611)
@@ -567,6 +567,10 @@
 #define CMP_NODE_COLOR_MATTE 259
 #define CMP_NODE_COLORBALANCE 260
 #define CMP_NODE_HUECORRECT 261
+#define CMP_NODE_MOVIECLIP     262
+#define CMP_NODE_STABILIZE2D   263
+#define CMP_NODE_TRANSFORM     264
+#define CMP_NODE_MOVIEDISTORTION       265
 
 #define CMP_NODE_GLARE         301
 #define CMP_NODE_TONEMAP       302

Modified: trunk/blender/source/blender/blenkernel/intern/node.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/node.c       2011-11-07 
12:55:18 UTC (rev 41610)
+++ trunk/blender/source/blender/blenkernel/intern/node.c       2011-11-07 
12:56:05 UTC (rev 41611)
@@ -1790,6 +1790,7 @@
        register_node_type_cmp_value(ntypelist);
        register_node_type_cmp_rgb(ntypelist);
        register_node_type_cmp_curve_time(ntypelist);
+       register_node_type_cmp_movieclip(ntypelist);
        
        register_node_type_cmp_composite(ntypelist);
        register_node_type_cmp_viewer(ntypelist);
@@ -1854,6 +1855,9 @@
        register_node_type_cmp_glare(ntypelist);
        register_node_type_cmp_tonemap(ntypelist);
        register_node_type_cmp_lensdist(ntypelist);
+       register_node_type_cmp_transform(ntypelist);
+       register_node_type_cmp_stabilize2d(ntypelist);
+       register_node_type_cmp_moviedistortion(ntypelist);
 }
 
 static void registerShaderNodes(ListBase *ntypelist) 

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c   2011-11-07 
12:55:18 UTC (rev 41610)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c   2011-11-07 
12:56:05 UTC (rev 41611)
@@ -1254,6 +1254,7 @@
 void blo_make_movieclip_pointer_map(FileData *fd, Main *oldmain)
 {
        MovieClip *clip= oldmain->movieclip.first;
+       Scene *sce= oldmain->scene.first;
 
        fd->movieclipmap= oldnewmap_new();
 
@@ -1264,6 +1265,15 @@
                if(clip->tracking.camera.intrinsics)
                        oldnewmap_insert(fd->movieclipmap, 
clip->tracking.camera.intrinsics, clip->tracking.camera.intrinsics, 0);
        }
+
+       for(; sce; sce= sce->id.next) {
+               if(sce->nodetree) {
+                       bNode *node;
+                       for(node= sce->nodetree->nodes.first; node; node= 
node->next)
+                               if(node->type==CMP_NODE_MOVIEDISTORTION)
+                                       oldnewmap_insert(fd->movieclipmap, 
node->storage, node->storage, 0);
+               }
+       }
 }
 
 /* set old main movie clips caches to zero if it has been restored */
@@ -1272,6 +1282,7 @@
 {
        OldNew *entry= fd->movieclipmap->entries;
        MovieClip *clip= oldmain->movieclip.first;
+       Scene *sce= oldmain->scene.first;
        int i;
 
        /* used entries were restored, so we put them to zero */
@@ -1284,6 +1295,15 @@
                clip->cache= newmclipadr(fd, clip->cache);
                clip->tracking.camera.intrinsics= newmclipadr(fd, 
clip->tracking.camera.intrinsics);
        }
+
+       for(; sce; sce= sce->id.next) {
+               if(sce->nodetree) {
+                       bNode *node;
+                       for(node= sce->nodetree->nodes.first; node; node= 
node->next)
+                               if(node->type==CMP_NODE_MOVIEDISTORTION)
+                                       node->storage= newmclipadr(fd, 
node->storage);
+               }
+       }
 }
 
 
@@ -2273,7 +2293,11 @@
                link_list(fd, &node->inputs);
                link_list(fd, &node->outputs);
                
-               node->storage= newdataadr(fd, node->storage);
+               if(node->type == CMP_NODE_MOVIEDISTORTION) {
+                       node->storage= newmclipadr(fd, node->storage);
+               } else
+                       node->storage= newdataadr(fd, node->storage);
+
                if(node->storage) {
                        /* could be handlerized at some point */
                        if(ntree->type==NTREE_SHADER && 
(node->type==SH_NODE_CURVE_VEC || node->type==SH_NODE_CURVE_RGB))

Modified: trunk/blender/source/blender/blenloader/intern/writefile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/writefile.c  2011-11-07 
12:55:18 UTC (rev 41610)
+++ trunk/blender/source/blender/blenloader/intern/writefile.c  2011-11-07 
12:56:05 UTC (rev 41611)
@@ -711,6 +711,8 @@
                                write_curvemapping(wd, node->storage);
                        else if(ntree->type==NTREE_TEXTURE && 
(node->type==TEX_NODE_CURVE_RGB || node->type==TEX_NODE_CURVE_TIME) )
                                write_curvemapping(wd, node->storage);
+                       else if(ntree->type==NTREE_COMPOSIT && 
node->type==CMP_NODE_MOVIEDISTORTION)
+                               /* pass */ ;
                        else
                                writestruct(wd, DATA, 
node->typeinfo->storagename, 1, node->storage);
                }

Modified: trunk/blender/source/blender/editors/space_node/drawnode.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/drawnode.c  2011-11-07 
12:55:18 UTC (rev 41610)
+++ trunk/blender/source/blender/editors/space_node/drawnode.c  2011-11-07 
12:56:05 UTC (rev 41611)
@@ -1679,6 +1679,40 @@
        uiItemR(layout, ptr, "mode", 0, "", ICON_NONE);
 }
 
+static void node_composit_buts_movieclip(uiLayout *layout, bContext *C, 
PointerRNA *ptr)
+{
+       uiTemplateID(layout, C, ptr, "clip", NULL, "CLIP_OT_open", NULL);
+}
+
+static void node_composit_buts_stabilize2d(uiLayout *layout, bContext *C, 
PointerRNA *ptr)
+{
+       bNode *node= ptr->data;
+
+       uiTemplateID(layout, C, ptr, "clip", NULL, "CLIP_OT_open", NULL);
+
+       if(!node->id)
+               return;
+
+       uiItemR(layout, ptr, "filter_type", 0, "", 0);
+}
+
+static void node_composit_buts_transform(uiLayout *layout, bContext 
*UNUSED(C), PointerRNA *ptr)
+{
+       uiItemR(layout, ptr, "filter_type", 0, "", 0);
+}
+
+static void node_composit_buts_moviedistortion(uiLayout *layout, bContext *C, 
PointerRNA *ptr)
+{
+       bNode *node= ptr->data;
+
+       uiTemplateID(layout, C, ptr, "clip", NULL, "CLIP_OT_open", NULL);
+
+       if(!node->id)
+               return;
+
+       uiItemR(layout, ptr, "distortion_type", 0, "", 0);
+}
+
 /* only once called */
 static void node_composit_set_butfunc(bNodeType *ntype)
 {
@@ -1829,6 +1863,20 @@
                case CMP_NODE_SEPYCCA:
                        ntype->uifunc=node_composit_buts_ycc;
                        break;
+               case CMP_NODE_MOVIECLIP:
+                       ntype->uifunc= node_composit_buts_movieclip;
+                       break;
+               case CMP_NODE_STABILIZE2D:
+                       ntype->uifunc= node_composit_buts_stabilize2d;
+                       break;
+               case CMP_NODE_TRANSFORM:
+                       ntype->uifunc= node_composit_buts_transform;
+                       break;
+               case CMP_NODE_MOVIEDISTORTION:
+                       ntype->uifunc= node_composit_buts_moviedistortion;
+                       break;
+               default:
+                       ntype->uifunc= NULL;
        }
        if (ntype->uifuncbut == NULL) ntype->uifuncbut = ntype->uifunc;
 

Modified: trunk/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_edit.c 2011-11-07 
12:55:18 UTC (rev 41610)
+++ trunk/blender/source/blender/editors/space_node/node_edit.c 2011-11-07 
12:56:05 UTC (rev 41611)
@@ -2207,8 +2207,14 @@
                ED_node_set_active(bmain, snode->edittree, node);
                
                if(snode->nodetree->type==NTREE_COMPOSIT) {
-                       if(ELEM4(node->type, CMP_NODE_R_LAYERS, 
CMP_NODE_COMPOSITE, CMP_NODE_DEFOCUS, CMP_NODE_OUTPUT_FILE))
+                       if(ELEM4(node->type, CMP_NODE_R_LAYERS, 
CMP_NODE_COMPOSITE, CMP_NODE_DEFOCUS, CMP_NODE_OUTPUT_FILE)) {
                                node->id = &scene->id;
+                       }
+                       else if(ELEM3(node->type, CMP_NODE_MOVIECLIP, 
CMP_NODE_MOVIEDISTORTION, CMP_NODE_STABILIZE2D)) {
+                               if(G.main->movieclip.first == 
G.main->movieclip.last) {
+                                       node->id= G.main->movieclip.first;
+                               }
+                       }
                        
                        ntreeCompositForceHidden(snode->edittree, scene);
                }

Modified: trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_nodetree.c 2011-11-07 
12:55:18 UTC (rev 41610)
+++ trunk/blender/source/blender/makesrna/intern/rna_nodetree.c 2011-11-07 
12:56:05 UTC (rev 41611)
@@ -2414,7 +2414,85 @@
        RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
 }
 
+static void def_cmp_movieclip(StructRNA *srna)
+{
+       PropertyRNA *prop;
 
+       prop = RNA_def_property(srna, "clip", PROP_POINTER, PROP_NONE);
+       RNA_def_property_pointer_sdna(prop, NULL, "id");
+       RNA_def_property_struct_type(prop, "MovieClip");
+       RNA_def_property_flag(prop, PROP_EDITABLE);
+       RNA_def_property_ui_text(prop, "Movie Clip", "");
+       RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+
+       RNA_def_struct_sdna_from(srna, "MovieClipUser", "storage");
+}
+
+static void def_cmp_stabilize2d(StructRNA *srna)
+{
+       PropertyRNA *prop;
+
+       static EnumPropertyItem filter_type_items[] = {
+               {0, "NEAREST",   0, "Nearest",   ""},
+               {1, "BILINEAR",   0, "Bilinear",   ""},
+               {2, "BICUBIC", 0, "Bicubic", ""},
+               {0, NULL, 0, NULL, NULL}};
+
+       prop = RNA_def_property(srna, "clip", PROP_POINTER, PROP_NONE);
+       RNA_def_property_pointer_sdna(prop, NULL, "id");
+       RNA_def_property_struct_type(prop, "MovieClip");
+       RNA_def_property_flag(prop, PROP_EDITABLE);
+       RNA_def_property_ui_text(prop, "Movie Clip", "");
+       RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+
+       prop = RNA_def_property(srna, "filter_type", PROP_ENUM, PROP_NONE);
+       RNA_def_property_enum_sdna(prop, NULL, "custom1");
+       RNA_def_property_enum_items(prop, filter_type_items);
+       RNA_def_property_ui_text(prop, "Filter", "Method to use to filter 
stabilization");
+       RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+}
+
+static void def_cmp_moviedistortion(StructRNA *srna)
+{
+       PropertyRNA *prop;
+
+       static EnumPropertyItem distortion_type_items[] = {
+               {0, "UNDISTORT",   0, "Undistort",   ""},
+               {1, "DISTORT", 0, "Distort", ""},
+               {0, NULL, 0, NULL, NULL}};
+
+       prop = RNA_def_property(srna, "clip", PROP_POINTER, PROP_NONE);
+       RNA_def_property_pointer_sdna(prop, NULL, "id");
+       RNA_def_property_struct_type(prop, "MovieClip");
+       RNA_def_property_flag(prop, PROP_EDITABLE);
+       RNA_def_property_ui_text(prop, "Movie Clip", "");
+       RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+
+       prop = RNA_def_property(srna, "distortion_type", PROP_ENUM, PROP_NONE);
+       RNA_def_property_enum_sdna(prop, NULL, "custom1");
+       RNA_def_property_enum_items(prop, distortion_type_items);
+       RNA_def_property_ui_text(prop, "Distortion", "Distortion to use to 
filter image");
+       RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+}
+
+static void dev_cmd_transform(StructRNA *srna)
+{
+       PropertyRNA *prop;
+
+       static EnumPropertyItem filter_type_items[] = {
+               {0, "NEAREST",   0, "Nearest",   ""},
+               {1, "BILINEAR",   0, "Bilinear",   ""},

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to