- split {curve,lattice,armature}_deform_verts out of mesh_deform

- removed mesh_deform (merge into mesh_modifier)
 - switch python lattice_apply function to use object_apply_deform,
   this isn't exactly equivalent but the python system shouldn't
   have been calling that deep into the kernel anyway.

New feature: Modifier stack
 - added Object.modifiers (list of ModifierData elements)
 - added DNA_modifier_types.h
     o contains type definition for the file data for the various
       modifier types
 - added BKE_modifier.h
     o contains modifierType_get_info (access to modifier type registry)
     o structs and defines for runtime modifier usage
 - updated mesh_calc_modifiers to evaluate modifier stack (note that
   for the time being it also evaluates the old style modifiers so files
   should load and work as normal).
 - add file handling modifier code (todo: don't replicate on object copy)
 - add modifier stack UI code (lives in object panel)


Only real new feature at the moment is that you can apply lattices and
curves *after* a subdivision surface which was never possible before.

Todo:
 - DEP graph updating does not work correctly yet, so you generally have
   to tab cycle to see results.
 - editmode calculation does not use modifier stack.
 - bug fixes (there must be a few in there somewhere)
This commit is contained in:
Daniel Dunbar
2005-07-19 20:14:17 +00:00
parent f1763b2f08
commit 1df154d140
17 changed files with 830 additions and 103 deletions

View File

@@ -705,26 +705,12 @@ static PyObject *Lattice_applyDeform( BPy_Lattice * self, PyObject *args )
* method is needed. Or for users who actually want to apply the
* deformation n times. */
if((self->Lattice == par->data)) {
if ((base->object->type != OB_MESH) || forced) {
if (base->object->type==OB_MESH) {
Mesh *me = base->object->data;
float (*vcos)[3] = malloc(sizeof(*vcos)*me->totvert);
int a;
for (a=0; a<me->totvert; a++) {
VECCOPY(vcos[a], me->mvert[a].co);
}
mesh_deform( base->object, vcos );
for (a=0; a<me->totvert; a++) {
VECCOPY(me->mvert[a].co, vcos[a]);
}
free(vcos);
} else {
object_deform( base->object );
}
}
/* I do not know what to do with this function
* at the moment given the changing modifier system.
* Calling into the modifier system in the first place
* isn't great... -zr
*/
object_apply_deform(base->object);
}
}
base = base->next;