Commit Graph

363 Commits

Author SHA1 Message Date
9030e5f686 - added eModifierTypeFlag_RequiresOriginalData for modifiers that
can only follow deform (for example, they store mesh vertex
   indices)
 - added ModifierType.foreachObjectLink for iterating over Object
   links inside modifier data (used for file load, relinking, etc)
 - switched various modifiers_ functions to take object argument
   instead of ListBase
 - added user editable name field to modifiers
 - bug fix, duplicate and make single user didn't relink object
   pointers in modifier data
 - added modifiers to outliner, needs icon
 - added armature, hook, and softbody modifiers (softbody doesn't
   do anything atm). added conversion of old hooks to modifiers.

NOTE-THE-FIRST: User name field is not initialized on loading 2.38 files
so if you have saved stuff with a cvs blender you will see blank names.

NOTE-THE-SECOND: Since modifiers aren't evaluated yet for non-Mesh
objects, hooks for lattices and curves are broken. Don't updated if
you actually, say, *use* Blender.

NOTE-THE-THIRD: Old hooks used a quirky weighting system during
deformation which can't be extended to modifiers. On the upside,
I doubt anyone relied on the old quirky system and the new system
makes much more sense. (Although the way falloff works is still
quite stupid I think).
2005-08-10 22:05:52 +00:00
8a58197cf3 - change modifier applyModifier[EM] function to not free derived argument
- added modifier_supportsMapping function
 - update CCG to set actual vertex normal (and not just
   interior face vertex normal, bla bla bla no one knows
   what this means nevermind).
 - renamed modifierType_get_info to modifierType_getInfo for
   consistency and to increase my commit line count.
 - update EditMeshDerivedMesh to calculate (and use new) normals
   when given deformed vertices
 - added
 - update editmode modifier calculation to also calculate a cage,
   not working 100% atm, in particular if a deformer follows a modifier
   that returns a DerivedMesh the cage is not accurate.
 - added ccg derivedmesh drawMapped{Vert,Face]NormalsEM functions
 - currently UI for selecting the cage mesh is rather irritating,
   will be updated
2005-08-03 04:04:05 +00:00
e8347e8b28 - Dupliframes mball didn't work anymore (should be added to scene_update)
- restored nicer drawing for duplicator wireframe. Draws before selected,
  so you can see the duplicated object better
2005-07-25 21:38:13 +00:00
259c7b6cad - added modifier_dependsOnTime to check if modifier needs updating
based on time change. would be nice if dep graph could handle this.
 - made dep check if modifiers need update on time change
 - fix render crash (access null)
 - added new Build Effect modifier type. compared to old one works as
   a full member of modifier system, means can apply subsurf, etc on
   it, reorder, what have you. and it is all nice and self contained.
 - removed old Build effect, old files convert to new style on load
 - couldn't help myself, added a randomize feature to build effect
 - removed Python BuildEffect support
2005-07-20 04:14:21 +00:00
d18600520e - added ModifierTypeInfo.updateDepgraph function, responsible for building
appropriate relations in dep graph (modifiers respond to scene changes
   correctly now)
 - update modifier buttons to trigger depgraph rebuild if needed
2005-07-19 23:04:34 +00:00
29855c895c Grms... removed too happily a part of depgraph yesterday. That fix was OK,
but doesn't make the removed code obsolete :)
Error was that transform on deformed objects didn't set recalc flags
2005-07-19 11:47:22 +00:00
d5ccd35f4c While checking old bugreports on the todo tracker, found weak issue in
current depgraph... that's when an object has multiple "parents", which
have different relation types. (one parent moves Object, the other
deforms). In that case the result was undefined.

Solved it nicely with the DAG building code, resulting in quicker flushing
of changes even.
Also noted a bug in the drawview.c 'object_handle_update' call, which
should not check for layers. The DAG flushing clears recalc flags for
invisible layers, if possible. Now need to write that @#!# doc!
2005-07-17 12:20:08 +00:00
542358265b Couple of small fixes;
- cleaned up 'version correction' a bit. There was code slowing down
  current files even (armatures were evaluated all, even when not in
  current layer, was added to make sure they get converted OK).
  Send me old files that crash now! :)
- on reading older files with path-constraints, a fix had to be added.
- error "badd call to addqueue' found when using header-less window for
  filewindow
2005-07-13 13:30:51 +00:00
3135b3ab83 Removed initializer str = "";
Seems to give issues in MSVC, and wasn't needed after all.

Further fixed dependencies in constraints between armatures and armatures.
It didn't update the other armature when the armature-object itself moved.
2005-07-13 08:56:07 +00:00
9cb84a662e Bug fix #2763
Depgraph missed proper relation from one armature bone to another armature
bone. Interesting rig setup for facial animation by Malefico! :)
http://projects.blender.org/tracker/index.php?func=detail&aid=2763&group_id=9&atid=125
2005-07-11 09:46:05 +00:00
28a1e8277b Result of 2 weeks of quiet coding work in Greece :)
Aim was to get a total refresh of the animation system. This
is needed because;
- we need to upgrade it with 21st century features
- current code is spaghetti/hack combo, and hides good design
- it should become lag-free with using dependency graphs

A full log, with complete code API/structure/design explanation
will follow, that's a load of work... so here below the list with
hot changes;

- The entire object update system (matrices, geometry) is now
  centralized. Calls to where_is_object and makeDispList are
  forbidden, instead we tag objects 'changed' and let the
  depgraph code sort it out
- Removed all old "Ika" code
- Depgraph is aware of all relationships, including meta balls,
  constraints, bevelcurve, and so on.
- Made depgraph aware of relation types and layers, to do smart
  flushing of 'changed' events. Nothing gets calculated too often!
- Transform uses depgraph to detect changes
- On frame-advance, depgraph flushes animated changes

Armatures;

Almost all armature related code has been fully built from scratch.
It now reveils the original design much better, with a very clean
implementation, lag free without even calculating each Bone more than
once. Result is quite a speedup yes!

Important to note is;

1) Armature is data containing the 'rest position'
2) Pose is the changes of rest position, and always on object level.
   That way more Objects can use same Pose. Also constraints are in Pose
3) Actions only contain the Ipos to change values in Poses.

- Bones draw unrotated now
- Drawing bones speedup enormously (10-20 times)
- Bone selecting in EditMode, selection state is saved for PoseMode,
  and vice-versa
- Undo in editmode
- Bone renaming does vertexgroups, constraints, posechannels, actions,
  for all users of Armature in entire file
- Added Bone renaming in NKey panel
- Nkey PoseMode shows eulers now
- EditMode and PoseMode now have 'active' bone too (last clicked)
- Parenting in EditMode' CTRL+P, ALT+P, with nice options!
- Pose is added in Outliner now, with showing that constraints are in
  the Pose, not Armature
- Disconnected IK solving from constraints. It's a separate phase now,
  on top of the full Pose calculations
- Pose itself has a dependency graph too, so evaluation order is lag free.

TODO NOW;

- Rotating in Posemode has incorrect inverse transform (Martin will fix)
- Python Bone/Armature/Pose API disabled... needs full recode too
  (wait for my doc!)
- Game engine will need upgrade too
- Depgraph code needs revision, cleanup, can be much faster!
  (But, compliments for Jean-Luc, it works like a charm!)
- IK changed, it now doesnt use previous position to advance to next
  position anymore. That system looks nice (no flips) but is not well
  suited for NLA and background render.

TODO LATER;

We now can do loadsa new nifty features as well; like:

- Kill PoseMode (can be option for armatures itself)
- Make B-Bones (Bezier, Bspline, like for spines)
- Move all silly button level edit to 3d window (like CTRL+I = add
  IK)
- Much better & informative drawing
- Fix action/nla editors
- Put all ipos in Actions (object, mesh key, lamp color)
- Add hooks
- Null bones
- Much more advanced constraints...


Bugfixes;

- OGL render (view3d header) had wrong first frame on anim render
- Ipo 'recording' mode had wrong playback speed
- Vertex-key mode now sticks to show 'active key', until frame change

-Ton-
2005-07-03 17:35:38 +00:00
e441c57d22 fix for bug #2588
objects with circular dependancies where not handled correctly
when sorting bases.

the fix is actually a workaround only and may evolve later

also add changes to xcode project for recent commits
2005-05-21 21:52:58 +00:00
79e333343b Dependency graph patch, provided by Jean-Luc Peuriere.
Works like a charm... well it now replaces the old base-sorting hack. :)
Next stage will be to define how to further integrate it. Plus some
minor code cleanups... static/internal functions versus external, etc.
2005-04-30 21:27:05 +00:00