[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45584] trunk/blender/source/blender: Fix loading external MDisps, BMesh merge bug.
Nicholas Bishop
nicholasbishop at gmail.com
Fri Apr 13 07:39:27 CEST 2012
Revision: 45584
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45584
Author: nicholasbishop
Date: 2012-04-13 05:39:27 +0000 (Fri, 13 Apr 2012)
Log Message:
-----------
Fix loading external MDisps, BMesh merge bug.
* When converting mfaces to mpolys, load external MDisp data in, add
CustomDataExternal struct to loopdata if needed.
* Fix multires modifier's filepath RNA functions to use ldata rather
than fdata.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/mesh.c
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/makesrna/intern/rna_modifier.c
Modified: trunk/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c 2012-04-13 04:02:26 UTC (rev 45583)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c 2012-04-13 05:39:27 UTC (rev 45584)
@@ -1978,6 +1978,11 @@
float (*disps)[3] = fd->disps;
int i, tot = mf->v4 ? 4 : 3;
int side, corners;
+
+ if (CustomData_external_test(&me->fdata, CD_MDISPS)) {
+ CustomData_external_add(&me->ldata, &me->id, CD_MDISPS,
+ me->totloop, me->fdata.external->filename);
+ }
corners = multires_mdisp_corners(fd);
@@ -2042,6 +2047,9 @@
CustomData_to_bmeshpoly(&mesh->fdata, &mesh->pdata, &mesh->ldata,
mesh->totloop, mesh->totpoly);
+ /* ensure external data is transferred */
+ CustomData_external_read(&mesh->fdata, &mesh->id, CD_MASK_MDISPS, mesh->totface);
+
eh = BLI_edgehash_new();
/*build edge hash*/
Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c 2012-04-13 04:02:26 UTC (rev 45583)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2012-04-13 05:39:27 UTC (rev 45584)
@@ -3708,7 +3708,14 @@
/*check if we need to convert mfaces to mpolys*/
if (me->totface && !me->totpoly) {
+ /* temporarily switch main so that reading from
+ external CustomData works */
+ Main *gmain = G.main;
+ G.main = main;
+
BKE_mesh_convert_mfaces_to_mpolys(me);
+
+ G.main = gmain;
}
/*
Modified: trunk/blender/source/blender/makesrna/intern/rna_modifier.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_modifier.c 2012-04-13 04:02:26 UTC (rev 45583)
+++ trunk/blender/source/blender/makesrna/intern/rna_modifier.c 2012-04-13 05:39:27 UTC (rev 45584)
@@ -490,7 +490,7 @@
static void rna_MultiresModifier_filepath_get(PointerRNA *ptr, char *value)
{
Object *ob = (Object*)ptr->id.data;
- CustomDataExternal *external = ((Mesh*)ob->data)->fdata.external;
+ CustomDataExternal *external = ((Mesh*)ob->data)->ldata.external;
BLI_strncpy(value, (external)? external->filename: "", sizeof(external->filename));
}
@@ -498,7 +498,7 @@
static void rna_MultiresModifier_filepath_set(PointerRNA *ptr, const char *value)
{
Object *ob = (Object*)ptr->id.data;
- CustomDataExternal *external = ((Mesh*)ob->data)->fdata.external;
+ CustomDataExternal *external = ((Mesh*)ob->data)->ldata.external;
if (external && strcmp(external->filename, value)) {
BLI_strncpy(external->filename, value, sizeof(external->filename));
@@ -509,7 +509,7 @@
static int rna_MultiresModifier_filepath_length(PointerRNA *ptr)
{
Object *ob = (Object*)ptr->id.data;
- CustomDataExternal *external = ((Mesh*)ob->data)->fdata.external;
+ CustomDataExternal *external = ((Mesh*)ob->data)->ldata.external;
return strlen((external)? external->filename: "");
}
More information about the Bf-blender-cvs
mailing list