Sculpt data shouldn't be lost when making topology changes without
quads<->tris face converison.
General idea:
- Go through all grid points of each corner and convert per-corner
coordiante to per-face cooredinate
- Apply weights and convert new point to per-corner coordinate
- Use bilinear interpolation to get needed displacement vector
Some additional work was necessery:
- Two neighbour corners could have different displacements along common
boundary. multires_mdisp_smooth_bounds() makes displacement "symmetrical"
- Point could change it's corner, so displacement vector should be flipped
in some way. In some cases it's not only flipping, because corner could
be mapped with some rotation. It's not solved for triangular faces yet,
so only z-axis displacement would be interpolated for tris.
More limitations:
- Interpolation will give incorrect result after quad<->triangle
face conversion.
- When face normal was fillped displacement would change it's direction too.
Compositor/Image viewer
In 2.4x viewer nodes had animation playback. Not restored yet.
However, when loading such older files the viewer never showed
any result.
Graph editor: submenu for handle type had drawing error.
Seems to be the collumns-separator feature for enum properties?
No time for debugging that, a 5-item menu doesn't need 2 collumns.
Armature edit mode: x-mirror: "switch bone direction" now flips the
mirror bone too. It leaves the mirrored bones selected too, so
you get good visual feedback things happened there.
* New option to "Regrow hair" for each frame.
* This was perhaps more a feature request, but there was a similar useful feature called "animated hair" in particles at some point.
* The previous behavior for hair growing was inconsistent to say the least, so this is a nice option to have.
This was set to being not-animatable in r33397. However, I think there
are some valid use cases where controlling layer visibility may be a
"too heavy handed" approach.
This allows manual (point by point) animation of their control verts,
although many other settings cannot really be animated with any
visible effects yet. Interestingly, lattices also had IPO block
pointers, though they were never really used (AFAIK).
Todo:
- Animation Editor support has yet to be added. I've got a few other
things to add to, so will group those changes together.
eg, "matrix[3][2]" could be used as a driver.
Test from python
bpy.context.object.path_resolve("matrix_world[2][3]")
Before this was always treated as a 1 dimensional array.
- equals_v2v2
- project_v2_v2v2
- isect_seg_seg_v2_point
which would be necessery for my further multires interpolation commit
M_Geometry_LineIntersect2D now uses isect_seg_seg_v2_point(). Behaviour of this
function was changed a bit -- it haven't returned intersection point in several
cases when two segments are making angle.
Dropping in image/movie/sound strips was broken; it dropped
things in wrong location (frame 0), and without giving images proper
length.
The file path setting code for the operators here is complex...
Outliner icons of ID blocks can be dragged, but it also caused an
activate of the item. This prevented using outliner for dragging
into name buttons. Now outliner activates on mouse-release, waiting
for potential drags to happen.
For constraints that have 'disabled' flag (because it has invalid
input) the name was drawn in red. Easy to recognize constraints that
stopped working.
* Close event probably happens when drawable is set to other window and this messes up drawing.
* Also fixes#25071 and possibly #22477 (somebody with osx has to re-test)
graph editor:
- option "extend mode" requires channel-selection. Moved pulldown menu
from Key to Channel instead
- hotkey SHIFT+E for same operation now works both in channel list as in
main view.
Text edit mode (3d): brought back the ALT+Backspace mode for
typing accented characters. Works with an operator property,
so the hotkey for it is free to define.
Example: type 'a', alt+backspace and then 'o'
works to combine characters with ' ` ~ o / and ^
* Calling update_children(..) is very light if there's nothing to update, so it doesn't matter if it's called every time the particle system is updated.