Error in BLI_array_randomize(), an unused call in Blender until the
Build Modifier was added. It did a weird modulus I don't really grasp...
somehow that caused the bug (create a corrupt mesh). But why? Dunno...
Selecting Edges in "Cut Away View" (ALT+B) did not work yet for wire view.
Solved it by calculating the closest coordinate for mouse to edge, and
check for that position if it's visible or not.
DXF: when an error message occurs during read, the main call returned
without clearing the used global vars... causing crash on calling again.
ALso: added warning when trying to assign a taper or bevel using Object
itself. (report from opengl tracker :)
Repeated presses of the F* key to go to a buttons context will
now cycle through the sub-tabs within. For example, when at
a different buttons window context, pressing F7 twice will cycle
through to the Physics buttons tab, pressing F10 three times
will cycle through to the Sound buttons tab, etc.
Right after leaving Armature editmode, and entering posemode, the active
bone was not selected (when only the head or tip was selected). This caused
a confusing display of an active but not selected Bone... and not proper
behaviour of UI (buttons) and inserting keys.
Fix#3348
Mirror Modifier, button "Merge Limit" didn't react on left/right click.
- Armature editmode, x-axis mirror edit, didn't mirror alt+s scaling of
B-Bones
ALso: found out that alpha drawing for Envelope Bones in editmode wasn't
set properly.
Also fixed signature to const char* to indicate which parameters can be changed
to make it a bit safer, because constant strings are passed into this function
and changing them caused a crash.
so that it resides in the Effects module instead, with the intent of
soon merging Effect.c and Particle.c into a single file (and somedat
removing references to the Effects.Particle submodule)
He noted that static particles don't work with force fields yet, and
added a fix for it. This however didn't work for the depgraph yet, and
didn't correct the static particle's local space to world coordinates for
the fields. Nevertheless, while reviewing this small patch I thought it
would be fun to add now.
So: static particles now update realtime on forcefield relations. Warning
for potential slowdowns! Also note that work on the real particle patch
still has to be done... something I really will do, but in time. To get
particles correctly integrated in the animation system, quite some new
development has to be done still.
While using automatic IK, a pending redraw event could draw the buttons
window again, reveiling the temporal IK buttons. Using them, after grab,
caused a crash.
Also: noticed that the undo push for transform is called too early, so it
saves the state before 'special_after_trans' was called.
Also: in editmode armature, changed shift+A "Bones" in "Bone".
Unified render does not return a zbuffer, but when gauss render was used
in combination with motion-blur, a buffer was accidentally created, one
pixel to small even!
If a Mesh was "Auto Smooth", it was drawing as smooth in editmode, and
not as smooth in Object mode. Should be consistant.
Better even would be draw autosmooth info, but that's derivedmesh magic now!
Actually nice feature too: when using Scene "Set" option, that scene draws
its transparent and x-ray stuff independent of the 'foreground' scene.
That means that x-ray in a set will be always over the set objects, but
stays behind the current scene.
For transparent it works the same though... meaning that solid objects from
the foreground scene will always draw over transparent from the "Set".
Note; this only is true for the 3d window, or the OpenGL render, not for
actual rendering of course.
1) Stride Bone
For walkcycles, you could already set an NLA strip to cycle over a path
based on a preset distance value. This cycling happens based on a linear
interpolation, with constant speed.
Not all cycles have a constant speed however, like hopping or jumping.
To ensure a perfect slipping-less foot contact, you now can set a Bone
in an Armature to define the stride. This "Stride Bone" then becomes a
sort-of ruler, a conveyor belt, on which the character walks. When using
the NLA "Use Path" option, it then tries to keep the Stride Bone entirely
motionless on the path, by cancelling out its motion (for the entire
Armature). This means that the animation keys for a Stride Bone have to be
exactly negative of the desired path. Only, at choice, the X,Y or Z Ipo
curve is used for this stride.
Examples:
http://www.blender.org/bf/0001_0040.avi
The top armature shows the actual Action, the bottom armature has been
parented to a Path, using the Stride Bone feature.
http://www.blender.org/bf/0001_0080.avi
Here the Stride Bone has a number of children, creating a ruler to be
used as reference while animating.
Test .blend:
http://www.blender.org/bf/motionblender1.blend
Notes:
- Note that action keys for Bones work local, based on the Bone's
orientation as set in EditMode. Therefore, an Y translation always
goes in the Bone's direction.
- To be able to get a "solvable" stride, the animation curve has
to be inverse evaluated, using a Newton Raphson root solver. That
means you can only create stride curves that keep moving forward, and
cannot return halfway.
- Set the Stride Bone in the Editing Buttons, Bone Panel. You can set
change the name or set the axis in the NLA Window, Strip Properties Panel.
- Files in this commit will move to the blender.org release section.
2) Armature Ghosting
In EditButtons, Armature Panel, you can set an armature to draw ghosts.
The number value denotes the amount of frames that have to be drawn extra
(for the active action!) around the current frame.
Ghosts only evaluate its own Pose, executing it's Actions, Constraints and
IK. No external dependencies are re-evaluated for it.
3) NLA/Action time control
If you click in the NLA window on the action (linked to Object), it makes
sure the Timing as drawn in the Action editor is not corrected for NLA.
If you also set the Object to "Action", this timing will be executed on the
Object as well (not NLA time).
(It's a bit confusing... will make a good doc & maybe review UI!)
its adrcode in addition to its string name (shape keys don't have fixed
or unique string names, and they are stored in the key, not the Ipo).
This will make it easier to later use constants from dictionaries to
access a curve.
Usage: press Tkey, and you can proportionally squeeze or stretch the
selected keys, with current mouse position as reference. Only works with
more than 3 keys selected horizontally.
I've remapped the old Tkey (ipo type) to SHIFT+T... might be temporal, I
have an idea for a cool 2D manipulator system that makes it much friendlier
to grab/scale/slide keys all in once.
Also: fix for HOME key in action editor (didn't do Pin), and removed gcc
warnings from jiri's commit in editmesh_add.c