Commit Graph

22 Commits

Author SHA1 Message Date
1a93d88343 Add weight preview to WeightVG modifiers, and first, simple/basic refactor of how modifiers can generate preview.
User side:
* Preview for DynamicPaint should keep the same behavior (for now). Weight preview should be somawhat quicker, though.
* Preview for WeightVG modifiers is only active in WeightPaint mode, and if the affected vgroup is the active one.
* Last active preview modifier in stack wins!

Note: that modifier preview topic is yet to be further refined, quite raw/incomplete for now.

Dev side:
* In draw code, renamed DRAW_DYNAMIC_PAINT_PREVIEW flag to DRAW_MODIFIERS_PREVIEW
* Removed use of MOD_DPAINT_PREVIEW_READY in DynamicPaint code (seems unecessary, and if it was, should be of more general scope).
* Added eModifierTypeFlag_UsesPreview to ModifierTypeFlag, for modifiers that can generate some preview data.
* Added three new modifier funcs, to handle preview modifiers in draw code / mod stack.
* For weights preview: added the generic DM_update_weight_mcol func, which can update WEIGHT_MCOL layer with either a given array of weights (currently used by DynamicPaint only), or from current active vgroup(s).

So now, draw code is fully generic (i.e. no more modifier-type checking in it). Mod stack code is generic to some extent, but will need more work.
2012-01-22 17:54:23 +00:00
c8cff5e1c4 Fix a crasher in WeightVG modifiers.
Problem was, if no vertices were ever added to one of the obect's vgroups, there is no CD_DEFORMVERT layer, even though there might be several valid vgroup indices... Odd no one noticed that earlier.

Many thanks to miikah for finding that bug!
2012-01-22 10:14:01 +00:00
738fdc7b6f New modifier type: eModifierTypeType_NonGeometrical, for modifiers affecting CustomData layers only (e.g. UVProject and WeightVG ones).
Also, allow applying to obdata those modifiers, even with shapekeys, but do not allow applying them *as* shapekey (as shapekeys do not have CD layers).

Fix [#29636] Vertex Weight Mix modifier "apply" button don't work.

Note: applying whit shape keys currently always uses base shape, not current one (for apply to obdata as well as apply to shapekey), but this is another topic...
2011-12-20 14:15:59 +00:00
41c992ce85 Much cleaner and satisfying code in weightvg modifiers' "init": copy only the CD_DEFORMVERT data layer (if it's the org one), and not the whole DerivedMesh!
Quite oddly, for Proximity mod, this increases the performances of the apply func (about 20-25%, e.g. from 0.04 to 0.03 sec), but decreases the global framerate (e.g. in TEST_5 scene of testing file, I lose about 7%, from 4.6 to 4.3fps (open ATI driver)...).
2011-12-19 14:09:36 +00:00
4a04f72069 remove $Id: tags after discussion on the mailign list: http://markmail.org/message/fp7ozcywxum3ar7n 2011-10-23 17:52:20 +00:00
b6bf57e2b0 Minor: Added doxygen file's doc comments in weightvg modifiers. 2011-09-22 11:52:42 +00:00
84966d864b WeightVG: Made Edit and Proximity also use the new weightvg_update_vg MDeformWeight** parameter (to avoid another vgroup searching).
Also added to Proximity a check in case vgroup would have no vertices in it.
Plus a few minor edits...
2011-09-15 17:28:18 +00:00
2f50579d9a WeightVG utils, weightvg_update_vg func updates.
* Added an optional array of MDeformModifier pointers, to avoid another search based on defgrp_idx.
* Split out "add/remove verts from vgroup" functions, preparing their move to deform.c (if their current form is validated!).
2011-09-15 16:06:00 +00:00
f8af915b51 WeightVG Mix modifier: updated code to use defgrp_find_index, and make MDeformWeights be searched only once.
Also fixed a bug: when another set mode than "All Vertices" was used and resulting set of verts was empty, all vertices was used, instead of just returning org, unmodified data!
2011-09-15 14:48:50 +00:00
ae7401751c SVN maintenance. 2011-09-09 00:46:00 +00:00
520778163d interface + naming improvements to vertex wright modifier
- WeightVG -> Vertex Weight
- mapping_mode -> falloff_type
- nicer layout for VertexWeightModifiers add/remove options
2011-09-07 07:46:26 +00:00
f6a64f4d79 SVN maintenance. 2011-09-07 07:06:43 +00:00
4393df9320 VGroup Modifiers: added mapping options to proximity and edit.
*Added Smooth/Sharp/Root/etc. mappings to WeightVGEdit modifier, in addition to custom curve one.
*Added Smooth/Sharp/Root/etc. mappings to WeightVGProximity modifier, without the custom curve one!
*Factorized the common mapping code into MOD_weightvg_util.
2011-09-05 16:16:00 +00:00
e5209c2059 - vertex group modifiers isDisabled functions were incorrect, need to check if the string is set: == NULL will never be true.
- was doing NULL checks on freeing memory in cases where the values were already accessed (blender would have crashed anyway), so remove the NULL checks.
- use deform.c api weight functions to replace inline weight lookups in some cases.
- change if checks in weightvg_do_mask() so its more obvious whats going on.
2011-09-05 05:28:32 +00:00
5fd8ffd242 - mask_tex_map_obj --> mask_tex_map_object
- dont allow negative min distances
2011-09-05 03:26:49 +00:00
57411d1c5f minor edits.
- init proximity to 1.0f
- min/max proximity dist were not being copied.
- minor edits to comments - use ascii chars in a few places.
2011-09-05 03:09:49 +00:00
cd6f93bdc9 vgroup_modifiers: Definitively removed addtionnal mapping/clamping options in WeightVGEdit mod, including from DNA struct. 2011-08-23 12:33:45 +00:00
58af2c36ac vgroup_modifiers: Removed (commented out, for now) addtionnal mapping/clamping options in WeightVGEdit mod, leaving the only curve mapping stuff.
Also, updated all three modifiers with new foreachTexLink walking func.
2011-08-17 13:07:51 +00:00
a22f75606e vgroup_modifiers: Fixed last problems with WP mode, plus a small fix in weightvg_util.c.
It seems WeightVG modifiers can’t enable the eModifierTypeFlag_SupportsMapping flag...
2011-07-29 13:25:58 +00:00
fb99e23205 minor cleanup of rna
- use an rna enum-set for proximity vert/edge/face options.
- rename some flags.
- better conform to rna naming conventions.
2011-07-28 01:38:48 +00:00
048eabf302 vgroup_modifiers: coded a way to test whether the dm needs to be copied (i.e. if the affected cdata layer is or not the original one).
However, as this piece of code tends to slow down things (see e.g. scene 5 of WeightVG test blend file), I deactivated it for now...
2011-07-27 18:48:23 +00:00
1e2e080853 Adding WeightVG modifiers code. Still some points to tweak, though.
NOTE : Haven’t yet tested build with scons, will do asap (unless someone else does :) ).
2011-07-25 15:27:01 +00:00