from Dan Eicher (dna)
From the tracker (with minor edits)
========================
cube = bpy.data.objects['Cube']
foo = cube.vertex_groups.new('foo')
foo.add([1,3,5,7], 1.0, 'ADD')
for i in range(len(cube.data.vertices)):
try:
weight = foo.weight(i)
print('vert: %i weight: %f' % (i, weight))
except:
pass
foo.remove([1,3])
cube.vertex_groups.remove(foo)
Outliner: using the object-data icons to enter editmode, didn't
reset the toolbar Operator redo. It was not using an operator
call here. Note to self: more outliner tools don't...
Error was that operator-redo then would repeat an action incorrect.
Use object's displists for storing deformed tesselated curve. Was unable to
totally get rid of curve's displist because of how texture space is calculating.
- OpenGL still render failed when output format was set to Movie.
Now it just doesn't save a file and renders anyway.
- Bone heat weight was missing 'wait cursor'.
- Waitcursor for Mac Cocoa is back! Made all OS's use the same
nice hourglass cursor.
(Note: this violates Mac UI guidelines, we should rely on the
spinning wheel of death instead. Highly disputable that.)
Child-of constraint issue: on adding, it wasn't checking owner
correctly for Bones, resulting in a constraint working in wrong
space; it looked as if transform was applied double when moving
the object. Only adding via Py API went wrong btw.
Also found a silly check for drawing constraints, which caused
constraint initialization to happen for every object on every
redraw!
Implementation note: con->flag CONSTRAINT_SPACEONCE was only used
for child-of constraints in Bones, so I've patched it on file
reading to always set the flag. Marked with XXX, so it can be
removed one day. Now at least things get corrected well for
imported armatures.
"Make Local" option "Objects and Data" made materials get
lost on save, the tagging was incorrect. Now it makes
Materials local too.
Implementation note: the code is new (not 2.4) so it misses
some of the hairy goodies we had. It's something for another
time to really make this reliably work.
it (eg cameras)
When trying to add a modifier to non-geometry objects, warnings are
now shown instead of just adding some (useless) modifiers that cannot
be removed later.
Makes adding new flags give ambiguous results and also makes it less easy to tell whats intended.
In some places it looks like OB_RECALC_TIME should be left out too.
only tags the ID and does the actual flush/update delayed, before the next
redraw. For objects the update was already delayed, just flushing wasn't
yet.
This should help performance in python and animation editors, by making
calls to RNA property update quicker. Still need to add calls in a few
places where this was previously avoided due to bad performance.
On entering editmode Curve/Nurbs, the undo buffer was not
correct; storing old Curve/Nurbs object name. This caused
for example the Operator tool redo options to fail; it added
another curve on first use (with user pref "enter editmode).
Solved with adding good undo push + nicer code for curve and
nurbs naming.
this is a can of worms, at the moment blender depends on broken behavior for metaballs:
find_basis_mball() can return a metaball object that fails a is_basis_mball() check which makes this logic very confusing (added note about this in mball.c).
Metaballs needs a refactor however at least make drawing fail consistently,
For wire draw is_basis_mball() wasn't being checked, for solid drawing it was (hence the strange wire frame).
For now the motherball needs to exist in the main scene else it wont work.
Editmode undo operator was using the operator OPTYPE_UNDO flag as well as its own EM_DO_UNDO option.
This gave 2 problems.
- python suppressed undos would fail (as in the report).
- Undo push was called twice on exiting editmode for no reason.
Use the operator undo in this case.
Also use const char in many other parts of blenders code.
Currently this gives warnings for setting operator id, label and description since these are an exception and allocated beforehand.
Fixed old annoyance in Search menu, with a load of object-mode
operators showing up in editmode.
It's much cleaner now, but it will take further work and
investigation to have context & polls work satisfying for all cases.
- object updates were not being flushed, so children weren't updating.
- apply the matrix relative to the parent, added this as an option to object_apply_mat4() which allows assigning the worldspace matrix in python without worrying about the parent.
- use sizeof() in more places.
- fixed some off by 1 bugs copying strings. setting curve font family for instance was 1 char too short.
- replace strncpy and strcpy with BLI_strncpy
- fixed this error 7 different functions (deform groups, uv layers & similar).
- support for numbers over 999.
- renamed splitIDname() to BLI_split_name_num(), moved to BLI_path_utils
lamps require a depsgraph update.
There is no more need to ED_render_id_flush_update because this is called by the DAG_id_flush_update.
help (and the right fix) from Brecht.
Fix#22018: joining objects with different multires levels loses levesl from the higher multires object
- Synchronyze mulires subdivision level when joining objects
- Apply scale on MDISP layer when applying scale
- Re-calculate MDISP when joining scaled objects