Dev:Ref/Release Notes/2.40/Modelling/Modifiers

From Blender Developer Wiki
Jump to: navigation, search

Modifier stack

 New feature: Modifier stack
  - add modifier stack UI code (lives in object panel)

Mirror Modifer

TexMesh works with subsurf

 New feature: TexMesh (texcomesh) works with subsurf now

Incremental Subsurf in Object Mode

 The previous release introduced incremental subsurf calculation during
 editmode but it was not turned on during object mode. In general it
 does not make sense to have it always enabled during object mode because
 it requires caching a fair amount of information about the mesh which
 is a waste of memory unless the mesh is often recalculated.
 However, for mesh's that have subsurfed armatures for example, or that
 have other modifiers so that the mesh is essentially changing on every
 frame, it makes a lot of sense to keep the subsurf'd object around and
 that is what the new incremental subsurf modifier toggle is for. The
 intent is that the user will enable this option for (a) a mesh that is
 currently under active editing or (b) a mesh that is heavily updated
 in the scene, such as a character.
 I will try to write more about this feature for release, because it
 has advantages and disadvantages that are not immediately obvious (the
 first user reaction will be to turn it on for ever object, which is
 probably not correct).
 So, modifiers in editmode are back (which means auto-mirror
 in edit mode works now) although still not finished. Currently
 no cage is computed, the cage is always the base mesh (in
 other words, Optimal edge style editing is off), and the final
 mesh currently includes all modifiers that work in edit mode
 (including lattice and curve). At some point there will be toggles
 for which modifiers affect the final/cage editmode derivedmesh's.
 Also, very nice new feature is that incremental subsurf in object
 mode returns a ccgderivedmesh object instead of copying to a new
 displistmesh. This can make a *huge* speed difference, and is very
 nice for working with deformed armatures (esp. with only small
 per frame changes).

Wave modifier

  - added wave modifier & removed old wave effect

decimate modifier

  - added decimate modifier & removed old decimate interface

modifier panel

  - modifier UI update (aka, find the modifier buttons!!)
  - moved back to editing buttons, where life is now cramped... switched
    to constraint style foldout panes, still a WIP. In particular not
    sure what buttons should be in header (and if current toggles stay
    in header if they should also be in an expanded pane). Also need
    new icons for move up/move down (and drag and drop would of course
    be nice). Finally current plane is to make it so modifiers will
    expand out in modifier pane for horizontal orientations instead of
    just going down down down to goblin town.
  - added support for vector icons, from user API side is just like using
    a regular icon... on icon side is defined by a function in resources.c
    instead of using the blenderbuttons png file. vector icons are much
    easier to add and scale properly. intent is that vector icons would
    be drawn in window coordinates which lets icon developers make the
    most beautiful icons, but this requires some tweaking of the interface
    drawing that I am not going to do atm.

acopy button

added copy button to modifier stack UI

subsurf and mirror as cage

 It is now possible to have a mesh with mirror/subsurf modifiers where you
 can edit with both as cage. Selecting the mirror'd part works, but of course
 transform is flipped so it is a bit weird. Not the cleanest code in the
 world and I can't say I am really happy with the architecture but it works for
 now and supports the existing feature set.

added modifiers to outliner

 modifiers added to outliner
  needs icon

added armature hook and softbody modifiers

  - added armature, hook, and softbody modifiers,
 added conversion of old hooks to modifiers.
 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).
  - switch to using softbody modifier, controls enabling but does not have
    variables, these are still in same place. enable button automatically
    makes/enables modifier.
  - update modifier interface to enforce modifiers with the require-original-
    data flag to not move beyond deforming modifiers.
  - enforce only one softbody modifier allowed
 NOTE: Once again, no modifier stack for lattice yet means softbody for
 lattice does not work atm.
  - added interface option to convert a virtual modifier into a real modifier
  - added option to parent to lattice object or lattice with deform
  - added recalc ob, recalc data options to ctrl-alt-shift-t timer
  - changed modifier panel to not allow manual addition of hook or
    softbody modifiers
  - changed apply modifier to apply to existing mesh (fixes bug with
    materials) and to warn about loss of tface/mcol/keys/dvert/sticky
    for all modifier types
  - changed modifier UI to not display disclosure triangle for virtual
  - changed softbody ui to allow enable/disable
  - readded Subsurf "optimal" edge drawing/rendering

  - added hook "cursor center" feature (sets hook center to cursor position),
    gives better control over falloff
  - added modifier UI access to hook "select" and "reassign" features
  - enable modifiers for curve/font/surf types... a little hacked in
    but should work ok. Means new features! Wave effect for curve/font/surf
    and armature deform as well.
  - new feature, added circle select support for FACESELECT

boolean mesh modifier

    doesn't work with layered modifiers yet (just uses base mesh), although may
    god have mercy on your soul if you want to run boolean on a
    subsurf anyway


 todo: add drawFacesTex for ccgderivedmesh

 There is a display bug that already existed but is more obvious with
 new modifiers where parts of the pane get drawn in a different area
 after toggling editmode. It has to do with drawing parts of the interface
 using GL instead of 100% buttons. I try to keep my grubby little toes
 out of the interface code so this can wait for Ton to return.
 After the window coordinate stuff is sorted out with vector icons
 it probably makes sense to move all non-photorealistic icons in blenderbuttons
 to vector form just so scaling goes better.
    Deform weights are still stored in a pretty expensive and unnecessary
    way, probably use about twice as much memory as needed, and do
    way too many memory allocs.
 There is a still a bug in that selection is using the wrong
 mesh to draw.
   NOTE: Although you can turn SB on for curve/font objects at the
 moment it doesn't really work because they call deform in
 multiple steps and this confuses SB. Not sure how to deal with
 Still todo: TFace edge drawing is still not always correct in face
 mode, in particular with a mirror modifier when mesh has edges (and
 no preceeding subsurf). Have not yet decided how to deal with this.
 Best solution is probably to do switch to meshes all having MEdge's,
 in which case I can get rid of TFace edge flags (and need to recalc
 modifiers on tface selection change).
 Still are some inconsistencies in FACESELECT mode edge drawing to
 be ironed out.
  - disabled incremental subsurf support (during object mode) for the
    time being, misses features for texture/color drawing and I don't
    have time to finish at the moment. can return once UV/colors are
    incorporated into subdivision.
 This exposes a bug in boolean, apparently the output is somehow
 random (hash on alloc'd pointer value perhaps) which is sortof
 It also makes more apparent the desire for some level of control
 over dep graph evaluation during editmode (at the moment dep
 graph is reevaluated for a mesh object in editmode, but since
 mesh changes are on editmesh other objects don't really see
 any change, so it is a wasted recalc).
 Also by the way I wrote down some notes on how curve code
 works, nothing spiffy but it is at:

bug fixes

  - more nurbs fixes... as it turns out, rendering of cyclic UV didn't
    really work at all. Fortunately no one actually *USES* nurbs so
    no one noticed. This is bug from NaN days (strubi, I am looking at
    you here) which I guess says a lot (or a little) about NURBS usage.
    And as usual, the correct code is shorter.