Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-05-09 14:50:16 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-05-09 14:50:16 +0400
commit00460458d0cb06d3358c08621b45cb7c8b4548d3 (patch)
treee23d134a4c89e49f32c5680827c42555e3a1a3be
parenta1fafec360ba20740c1c9d56f05f121423a7edfe (diff)
blender 2.63a: merge last bunch of fixes for 'a' release
This merges commits form trunk: 46423, 46424, 46450, 46439, 46445, 46449, 46453, 46454 Changes checked up to rev46454
-rw-r--r--intern/dualcon/intern/Projections.h18
-rw-r--r--source/blender/blenkernel/intern/movieclip.c2
-rw-r--r--source/blender/blenkernel/intern/node.c6
-rw-r--r--source/blender/blenkernel/intern/tracking.c8
-rw-r--r--source/blender/blenloader/intern/readfile.c26
-rw-r--r--source/blender/collada/GeometryExporter.cpp2
-rw-r--r--source/blender/collada/InstanceWriter.cpp2
-rw-r--r--source/blender/editors/space_view3d/drawobject.c4
-rw-r--r--source/blender/makesrna/intern/rna_nodetree.c3
-rw-r--r--source/blender/render/intern/source/pipeline.c33
10 files changed, 72 insertions, 32 deletions
diff --git a/intern/dualcon/intern/Projections.h b/intern/dualcon/intern/Projections.h
index 18533b218ff..1477dd9dccf 100644
--- a/intern/dualcon/intern/Projections.h
+++ b/intern/dualcon/intern/Projections.h
@@ -788,17 +788,17 @@ public:
LONG proj0 = cubeProj[i][0] ;
LONG proj1 = cubeProj[i][0] + cubeProj[i][edgeInd + 1] ;
LONG proj2 = inherit->trigProj[i][1] ;
+ LONG d = proj1 - proj0;
+ double alpha;
- // double alpha = (double)( ( proj2 - proj0 ) * cubeProj[edgeInd][edgeInd + 1] ) / (double)( proj1 - proj0 ) ;
- double alpha = (double)( ( proj2 - proj0 ) ) / (double)( proj1 - proj0 ) ;
-
- if ( alpha < 0 )
- {
- alpha = 0.5 ;
+ if (d == 0) {
+ alpha = 0.5;
}
- else if ( alpha > 1 )
- {
- alpha = 0.5 ;
+ else {
+ alpha = (double)((proj2 - proj0)) / (double)d;
+
+ if (alpha < 0 || alpha > 1)
+ alpha = 0.5;
}
diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c
index 9a640bcb8eb..7eee478def4 100644
--- a/source/blender/blenkernel/intern/movieclip.c
+++ b/source/blender/blenkernel/intern/movieclip.c
@@ -1038,7 +1038,7 @@ void BKE_movieclip_update_scopes(MovieClip *clip, MovieClipUser *user, MovieClip
scopes->track_disabled = FALSE;
- if (ibuf && ibuf->rect) {
+ if (ibuf && (ibuf->rect || ibuf->rect_float)) {
ImBuf *tmpibuf;
MovieTrackingMarker undist_marker = *marker;
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index 2fb3f81b147..0fac497850f 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -339,15 +339,15 @@ bNode *nodeAddNode(bNodeTree *ntree, struct bNodeTemplate *ntemp)
node_add_sockets_from_type(ntree, node, ntype);
- if (ntype->initfunc!=NULL)
- ntype->initfunc(ntree, node, ntemp);
-
/* initialize the node name with the node label */
BLI_strncpy(node->name, nodeLabel(node), NODE_MAXSTR);
nodeUniqueName(ntree, node);
BLI_addtail(&ntree->nodes, node);
+ if (ntype->initfunc!=NULL)
+ ntype->initfunc(ntree, node, ntemp);
+
ntree->update |= NTREE_UPDATE_NODES;
return node;
diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c
index baabd4d8ac0..2d5d47e8dd0 100644
--- a/source/blender/blenkernel/intern/tracking.c
+++ b/source/blender/blenkernel/intern/tracking.c
@@ -1166,7 +1166,13 @@ static ImBuf *get_area_imbuf(ImBuf *ibuf, MovieTrackingTrack *track, MovieTracki
x1 = x-(int)(w * (-min[0] / (max[0] - min[0])));
y1 = y-(int)(h * (-min[1] / (max[1] - min[1])));
- tmpibuf = IMB_allocImBuf(w+margin*2, h+margin*2, 32, IB_rect);
+ if (ibuf->rect_float)
+ tmpibuf = IMB_allocImBuf(w + margin * 2, h + margin * 2, 32, IB_rectfloat);
+ else
+ tmpibuf = IMB_allocImBuf(w + margin * 2, h + margin * 2, 32, IB_rect);
+
+ tmpibuf->profile = ibuf->profile;
+
IMB_rectcpy(tmpibuf, ibuf, 0, 0, x1 - margin, y1 - margin, w + margin * 2, h + margin * 2);
if (pos != NULL) {
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 044e874b4a6..4adcf6add2a 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -7706,10 +7706,15 @@ static void do_versions_nodetree_multi_file_output_format_2_62_1(Scene *sce, bNo
bNodeSocket *old_image = BLI_findlink(&node->inputs, 0);
bNodeSocket *old_z = BLI_findlink(&node->inputs, 1);
bNodeSocket *sock;
+ char basepath[FILE_MAXDIR];
+ char filename[FILE_MAXFILE];
node->storage= nimf;
- BLI_strncpy(nimf->base_path, old_data->name, sizeof(nimf->base_path));
+ /* split off filename from the old path, to be used as socket sub-path */
+ BLI_split_dirfile(old_data->name, basepath, filename, sizeof(basepath), sizeof(filename));
+
+ BLI_strncpy(nimf->base_path, basepath, sizeof(nimf->base_path));
nimf->format = old_data->im_format;
/* if z buffer is saved, change the image type to multilayer exr.
@@ -7717,21 +7722,32 @@ static void do_versions_nodetree_multi_file_output_format_2_62_1(Scene *sce, bNo
* i'm just assuming here that IRIZ means IRIS with z buffer ...
*/
if (ELEM(old_data->im_format.imtype, R_IMF_IMTYPE_IRIZ, R_IMF_IMTYPE_OPENEXR)) {
+ char sockpath[FILE_MAX];
+
nimf->format.imtype = R_IMF_IMTYPE_MULTILAYER;
- sock = ntreeCompositOutputFileAddSocket(ntree, node, old_image->name, &nimf->format);
+
+ BLI_snprintf(sockpath, sizeof(sockpath), "%s_Image", filename);
+ sock = ntreeCompositOutputFileAddSocket(ntree, node, sockpath, &nimf->format);
+ /* XXX later do_versions copies path from socket name, need to set this explicitely */
+ BLI_strncpy(sock->name, sockpath, sizeof(sock->name));
if (old_image->link) {
old_image->link->tosock = sock;
sock->link = old_image->link;
}
- sock = ntreeCompositOutputFileAddSocket(ntree, node, old_z->name, &nimf->format);
+
+ BLI_snprintf(sockpath, sizeof(sockpath), "%s_Z", filename);
+ sock = ntreeCompositOutputFileAddSocket(ntree, node, sockpath, &nimf->format);
+ /* XXX later do_versions copies path from socket name, need to set this explicitely */
+ BLI_strncpy(sock->name, sockpath, sizeof(sock->name));
if (old_z->link) {
old_z->link->tosock = sock;
sock->link = old_z->link;
}
}
else {
- /* saves directly to base path, which is the old image output path */
- sock = ntreeCompositOutputFileAddSocket(ntree, node, "", &nimf->format);
+ sock = ntreeCompositOutputFileAddSocket(ntree, node, filename, &nimf->format);
+ /* XXX later do_versions copies path from socket name, need to set this explicitely */
+ BLI_strncpy(sock->name, filename, sizeof(sock->name));
if (old_image->link) {
old_image->link->tosock = sock;
sock->link = old_image->link;
diff --git a/source/blender/collada/GeometryExporter.cpp b/source/blender/collada/GeometryExporter.cpp
index ca112abc0af..3c1c9cb6d6b 100644
--- a/source/blender/collada/GeometryExporter.cpp
+++ b/source/blender/collada/GeometryExporter.cpp
@@ -177,7 +177,7 @@ void GeometryExporter::createPolylist(short material_index,
// sets material name
if (ma) {
std::ostringstream ostr;
- ostr << translate_id(id_name(ma)) << material_index+1;
+ ostr << translate_id(id_name(ma));
polylist.setMaterial(ostr.str());
}
diff --git a/source/blender/collada/InstanceWriter.cpp b/source/blender/collada/InstanceWriter.cpp
index a605bdeefcc..f83289ff5f5 100644
--- a/source/blender/collada/InstanceWriter.cpp
+++ b/source/blender/collada/InstanceWriter.cpp
@@ -52,7 +52,7 @@ void InstanceWriter::add_material_bindings(COLLADASW::BindMaterial& bind_materia
std::string matid(get_material_id(ma));
matid = translate_id(matid);
std::ostringstream ostr;
- ostr << translate_id(id_name(ma)) << a+1;
+ ostr << translate_id(id_name(ma));
COLLADASW::InstanceMaterial im(ostr.str(), COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, matid));
// create <bind_vertex_input> for each uv map
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index bb10e781f8f..2b58b627447 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -6544,8 +6544,10 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
zbufoff = 1;
dt = OB_SOLID;
}
- else if (ob->mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT))
+
+ if (ob->mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT)) {
dt = OB_PAINT;
+ }
glEnable(GL_DEPTH_TEST);
}
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 58fd936819b..38b12604d5e 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -742,7 +742,8 @@ static bNodeLink *rna_NodeTree_link_new(bNodeTree *ntree, ReportList *reports,
ret = nodeAddLink(ntree, fromnode, fromsock, tonode, tosock);
if (ret) {
- nodeUpdate(ntree, tonode);
+ if (tonode)
+ nodeUpdate(ntree, tonode);
ntreeUpdateTree(ntree);
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index a4a244daf43..0398204e62b 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -1803,6 +1803,28 @@ static int check_valid_camera(Scene *scene, Object *camera_override)
return 1;
}
+static int node_tree_has_composite_output(bNodeTree *ntree)
+{
+ bNode *node;
+
+ for (node = ntree->nodes.first; node; node = node->next) {
+ if (node->type == CMP_NODE_COMPOSITE) {
+ return TRUE;
+ }
+ else if (node->type == NODE_GROUP) {
+ if (node_tree_has_composite_output((bNodeTree *)node->id))
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static int check_composite_output(Scene *scene)
+{
+ return node_tree_has_composite_output(scene->nodetree);
+}
+
int RE_is_rendering_allowed(Scene *scene, Object *camera_override, ReportList *reports)
{
SceneRenderLayer *srl;
@@ -1837,19 +1859,12 @@ int RE_is_rendering_allowed(Scene *scene, Object *camera_override, ReportList *r
if (scene->r.scemode & R_DOCOMP) {
if (scene->use_nodes) {
- bNodeTree *ntree= scene->nodetree;
- bNode *node;
-
- if (ntree==NULL) {
+ if (!scene->nodetree) {
BKE_report(reports, RPT_ERROR, "No Nodetree in Scene");
return 0;
}
- for (node= ntree->nodes.first; node; node= node->next)
- if (node->type==CMP_NODE_COMPOSITE)
- break;
-
- if (node==NULL) {
+ if (!check_composite_output(scene)) {
BKE_report(reports, RPT_ERROR, "No Render Output Node in Scene");
return 0;
}