I've added the ability for PyConstraints to define a function (doDriver) that is able to directly modify values of the owner/target, so that certain setups can be created reliably. Users should take note that this is against the basic concept of what a constraint does, and that under no circumstances may they set the values of any variables controlling the transforms. For more details, check out the information in the PyConstraint template script.
I've also updated PyConstraints to be aware of geometry targets. The script template has been updated with this information.
This commit features fixes/improvements for problems I didn't manage to fix in time for the commit yesterday.
* Now for Meshes, the normals of the vertices in the VertexGroup are averaged and used to find the 'rotation' that needs to be applied. Unfortunately, this does not work with Lattices as they do not have normals.
* Depsgraph should now play nicely with geometry targets. Before, the constrained object's location wasn't being updated after the target's geometry was modified.
Add a new command line switch "--" for passing arguments to scripts.
Any arguments after -- are not processed and passed unchanged via
the usual argv mechanism.
Custom arguments can be accessed from a bpy script in python's
sys.argv. Example:
import sys
# slice argv after '--'
i = sys.argv.index('--')
my_args = sys.argv[i+1:]
It is now possible to use the geometry of Meshes and/or Lattices as the target of a constraint. All you need to do, is to create a new Vertex-Group and assign all the points that you wish to use as the target, then type that name into the VG: field for the relevant constraints.
One of the cases where this is beneficial is when you need to copy the location of a vertex. Now you don't need to make extra vertex-parents for that.
Additional Notes:
* The code takes the average of the locations of the nominated vertices, and puts that in world-space for constraint solving (and regular space-conversion stuff).
* Currently, rotation and scaling of points is not taken into account. The rotation/scaling used is from the object's matrix. Hopefully, this will only be a temporary problem (will be fixed soon)
This commit fixes several issues related to using the Action Editor with Shapekeys. I've known about most of them for a while, so now's the time to fix that.
1) When the shapekey anim data for an object comes from an Action (key's IPO block is linked to the "Shape" action-channel), the names of the individual shapekeys is now shown. They will only do so if the Action Editor is not pinned though.
2) Slider limits for the case described above should now be sane again
3) "Add New" option from the popup menu in the Action Editor header will now convert shapekey animation data from IPO to Action if the action editor is displaying Shapekey data at the time. Many users have often found the old way of having to toggle the "running man" in the IPO-editor header, too clumsy and confusing.
Now 'Set Inverse' works correctly for PoseChannels in all cases. Previously, it was still using a temporary hack that failed when 'parent' bone had any transforms.
Editing the value of the ParBone field in the Transform Properties panel was not stable. The problem seems to have been buffer-overflow type problems caused by maximum character limit that was set too high.
I've also added auto-complete functionality for this field while I was tinkering around there.
Previously when deleting a scene, no checks were made to see if
any render layer nodes in other scenes were referencing them,
leaving them pointing to bad memory. Now, this checks all other
scenes' nodetrees and sets pointers to the to-be-deleted scene to
NULL, which gets taken care of elsewhere.
Partial fix for bug #7013, adding multires removes all vertex color layers
* Added a warning when adding multires levels to a mesh with more than one vcol layer. The user can choose to allow multires to delete the non-active layer(s), or cancel.
Note that this is a temporary fix; a better solution will be to make multiple vcol layers work with multires.
Fixed bug reported here:
http://blenderartists.org/forum/showthread.php?t=102975
* Removed an opengl texture attribute change used while drawing the propset sculpt brush; was causing model shading to disappear on textured models.
This is the only thing that made software GL unuseable, and would even hang blender when using some debugging tools.
The lag was noticibel on some cheap graphics cards also.
There is a problem with blenders events that means the mouse movement events are sent while the mouse button release event isnt for some time. This could make resizing a border take a fairly long time... 4-10sec.
even though this is a workaround, only redrawing when the mouse is moved is logical.
* I've replaced the long lists of #defines in header_action.c with enums, which should make that easier to maintain/add new items as needed.
* Added a few comments also
Multiple selected bones are now able to be parented to the active bone in EditMode. Previously, only one selected bone could be parented to another at a time.
The Action Editor can now display timing in seconds too. By default, it still displays timing in frames, but it is possible to switch the time display to seconds.
The hotkey to toggle this is Ctrl T.
Notes:
- Many of the Action Editor's tools have yet to be made aware of this. Therefore, they will still work as though frames are used. Only Transform, Snap, and Mirror should really be affected. This will be fixed when I wake up.
- Nothing *should* be broken, but I might have missed something.
Made inserting new keyframes use a coarser threshold for determining when to replace existing keyframes with new ones. Now, it shouldn't create so many keyframes stacked on top of each other, but yet still keep some bizzare cases working.
- Removing evil InitTransModeFlags (I would always forget to update that when adding new stuff). It's properly done in the per transform init now.
- Add toggleable mode for Shear (with MMB) for horizontal or vertical shear. Toggle shear mode also changes the input mode from vertical to horizontal and vice versa (it's intuitiver that way). (This was suggested in a really old patch but never implemented because I disliked adding transform specific handling in the main event switch).
- Add custom event handlers per transform (currently only used for Shear)
- Add custom data pointer and freeing flag (only (a)bused by Shear).
NOTE to Levi Schooley: Some stuff in there might be useful for you.
After complaints from wavez, Snap Cursor to Selected for Bones in EditMode now results in the cursor being snapped to the midpoint of the selected joint(s) like it did before my no zero-length bones commit.
This problem was resulted from the handles on keyframes not being mirrored as well. I thought that the handle resetting function would solve that, but obviously it didn't.
If you look at the log, the last change to this file I was trying to fix
game engine bug #6667. In so doing I added a print usage if you do not
pass any arguments to the gameplayer.
Things should work better now.
Kent
I've finally come to the conclusion that the old code used to clean up IPO-curves was utterly unsafe/unstable. It used to have a lot of memory-related bugs early on, which I had resolved, but still I found a file where this broke quite badly (thanks Cessen).
Now the code should be saner, as it does away with that evil memory copying that seems to be at fault. It would be advisable to have this properly tested for a few days before considering it for inclusion in 2.45 (stable) branch.
Preview Range could get set with frame numbers less than 1. This caused problems with playback in a few cases, and also gave gibblish in the counter-cursor thing.
This fixes [#6996] Sequence Nesting and enables sequence nesting for the
first time :)
The old hack done by Ton prevented eternal loops by preventing Sequence
tracks being added to Sequence scenes.
We now disable "Do sequence" temporarily for the _current_ scene, which
has the same effect but leaves the possibility of sequence nesting
untouched.
Also fixes a warning in editseq (uninitialized variable).