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