[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12259] trunk/blender/source/blender:
Ken Hughes
khughes at pacific.edu
Sun Oct 14 22:58:57 CEST 2007
Revision: 12259
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12259
Author: khughes
Date: 2007-10-14 22:58:57 +0200 (Sun, 14 Oct 2007)
Log Message:
-----------
Tools
-----
Bugfix #7493: boolean difference operator was being applied in the wrong
order (difference modifier worked correctly).
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/modifier.c
trunk/blender/source/blender/src/booleanops.c
Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c 2007-10-14 10:23:09 UTC (rev 12258)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c 2007-10-14 20:58:57 UTC (rev 12259)
@@ -4907,7 +4907,7 @@
/* we do a quick sanity check */
if(((Mesh *)ob->data)->totface > 3
&& bmd->object && ((Mesh *)bmd->object->data)->totface > 3) {
- DerivedMesh *result = NewBooleanDerivedMesh(ob, bmd->object,
+ DerivedMesh *result = NewBooleanDerivedMesh(bmd->object, ob,
1 + bmd->operation);
/* if new mesh returned, return it; otherwise there was
Modified: trunk/blender/source/blender/src/booleanops.c
===================================================================
--- trunk/blender/source/blender/src/booleanops.c 2007-10-14 10:23:09 UTC (rev 12258)
+++ trunk/blender/source/blender/src/booleanops.c 2007-10-14 20:58:57 UTC (rev 12259)
@@ -449,8 +449,8 @@
float map_mat[4][4];
DerivedMesh *dm = NULL;
- Mesh *me1 = get_mesh(ob);
- Mesh *me2 = get_mesh(ob_select);
+ Mesh *me1 = get_mesh(ob_select);
+ Mesh *me2 = get_mesh(ob);
if (me1 == NULL || me2 == NULL) return 0;
if (!me1->totface || !me2->totface) return 0;
@@ -458,9 +458,9 @@
// we map the final object back into ob's local coordinate space. For this
// we need to compute the inverse transform from global to ob (inv_mat),
// and the transform from ob to ob_select for use in interpolation (map_mat)
+ Mat4Invert(inv_mat, ob->obmat);
+ Mat4MulMat4(map_mat, ob_select->obmat, inv_mat);
Mat4Invert(inv_mat, ob_select->obmat);
- Mat4MulMat4(map_mat, ob->obmat, inv_mat);
- Mat4Invert(inv_mat, ob->obmat);
{
// interface with the boolean module:
@@ -484,8 +484,8 @@
default : op_type = e_csg_intersection;
}
- BuildMeshDescriptors(ob, 0, &fd_1, &vd_1);
- BuildMeshDescriptors(ob_select, me1->totface, &fd_2, &vd_2);
+ BuildMeshDescriptors(ob_select, 0, &fd_1, &vd_1);
+ BuildMeshDescriptors(ob, me1->totface, &fd_2, &vd_2);
bool_op = CSG_NewBooleanFunction();
@@ -500,7 +500,7 @@
// iterate through results of operation and insert
// into new object
dm = ConvertCSGDescriptorsToDerivedMesh(
- &fd_o, &vd_o, inv_mat, map_mat, mat, totmat, ob, ob_select);
+ &fd_o, &vd_o, inv_mat, map_mat, mat, totmat, ob_select, ob);
// free up the memory
CSG_FreeVertexDescriptor(&vd_o);
@@ -540,7 +540,7 @@
}
/* create a new blender mesh object - using 'base' as a template */
- ob_new= AddNewBlenderMesh(base);
+ ob_new= AddNewBlenderMesh(base_select);
me_new= ob_new->data;
DM_to_mesh(dm, me_new);
More information about the Bf-blender-cvs
mailing list