New feature: Modifier stack - add modifier stack UI code (lives in object panel)
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).
- added wave modifier & removed old wave effect
- added decimate modifier & removed old decimate interface
- 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.
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 modifiers - 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 atm.
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 lame. 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:
- 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.