Lamp shadows for offscreen render (opengl anim) had to be remade
to cope with animated objects. Fix proved by Alexander Kuznetsov
in the tracker log. Thanks!
- rather then use unlink="None", just don't pass unlink as a keyword. This is more pythonic.
- added an RNA flag for properties which cant be unlinked by setting to None.
Frame Mapping (map old, map new) didn't set the the framelen
variable. Note that this feature is half-working, and on the
to. Might be removed/replaced with something better.
Keyframes for locked channels are now shown faintly so that it is
possible to easily distinguish between keyframes for locked channels
and unlocked channels. Hopefully this solves the problem where you
have some keyframes selected, and try to move them but forget that
those channels are locked (without any feedback other than a single
icon).
Thanks for pointing out this problem Ronan Zeegers!
compositor
Now ungrouping grouped-nodes copies the animation back to the main
nodetree. This means that it is now possible to successfully roundtrip
group/un-group nodes and their animation data.
---
This should also be done for the Separate Armature operator... hmm...
compositor
This commit fixes the original bug reported here by adding some
methods to move the relevant F-Curves (and drivers) over to the new
Node-Tree's (i.e. group-node) AnimData. Animated nodes which
subsequently get grouped will still be able to animate as a result of
this commit.
TODO's:
- Ungrouping now will not yet merge the animation back (or at least
copy it)
- Buttons for nodes freshly grouped do not correctly show animated
status indicators for some reason, yet normal animation does
Loading a vector font (.ttf) didn't have option for Relative Path
in the file window. Now it does, and it sets it to the default.
Todo note: the actual path is not visible in the UI yet, nor does
outliner RNA view allow to edit path.
Some AnimData looping functions were not updated to take into account
the addition of AnimData for some additional datatypes (i.e. meshes
and lattices) as well as the changes to make nested nodetrees (i.e.
for Material and Texture nodes).
Auto-IK: applying back the IK transform on bones fails for constrainted
bones themselves. This would require the post-transform of IK to be
converted to a pre-transform for the constraint. That's too much of
a headache for bugfixing days.
To keep the autoIK feature work it now stops IK chains at constrainted
bones. Added todo item for a matrix wizzard to fix this one day.
(What would be really cool is a matrix-api for armature to easily
get all the required pre- and post transforms and apply. There's a lot
of duplicate exception handling for hinge bones for example.)
Mesh "Add grid" was quite broken:
- it added an edge to a previous (not selected) vertex
- it ignored cursor location
- and it didn't use 'align to view'
Now it does behave :)
UI name buttons with Search callback show red when item couldn't be
found. The check was too simple though, since the searches also find
partial matches. This caused KeyingSet browse to show red for "RotScale".
Now 10 matches are stored, and each match is being checked. Still a
bit weak for cases with more than 10 matches, but in that case it
won't show red-alert.
Compositor: "Read & Compo Full Sample Buffers" option stopped after
1 pass; the break callback was returning '1' falsely.
Also made it show "wait cursor" again, since it doesn't run in
thread nor updates UI while compositing buffers. Check console for
progress for now.
again)
- Graph Editor "Active Keyframe" panel now displays more descriptive
error messages. In particular, hopefully this helps to alert users of
the default generator modifier for Driver F-Curves
- The first F-Modifier added to a list is now set to be active one for
that list.
- Adding drivers from the UI (not from py-scripts though) will now
automatically add a "Transform Channel" driver variable to the newly
created drivers. This makes setting up drivers a bit more convenient
for the most commonly used case.
- Drivers now report their errors using the Reports system instead of
writing these directly to the console.
- Clarified some comments to be more insightful about the "why's" of
some design decisions, and related formatting/cleanup tweaks
- Reduced scope of "path" vars to just the scope they're required in
- Removed some unused defines from a failed experiment in the original
Keying Sets code ("templates" and "template flags") which was
superseeded by the more flexible + nicer "Builtin KeyingSets"
Compositor: Texture node didn't use texture-nodes itself.
Now composites initialize texture nodes correctly.
Also reviewed the fix for crashing texture nodes for displace.
It appears texture nodes also are used for sculpt/paint
brushes, in these cases it can be allowed again. But, don't
do this during rendering for now!
- 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.)
Normal Map bool and the normal_space menu are only used for material based textures, not for textures used by lamp/world etc. Accidentally ported this over from 2.49, where these buttons are drawn even they don't work in that context.
Node editor
Some nodes - when muted - didn't draw a red line to indicate
a pass-on action. Stil, the node then is muted and either passes
on a buffer of same type, or just black.
To more clearly indicate muting, it now draws the header in a
reddish blended color too.
A note for branch users: CMake 2.8 on 64-bit Windows Vista raised
an error in line 948 of soc-2008-mxcurioni/CMakeLists.txt due to
an invalid argument for the blender_include_dirs macro:
blender_include_dirs(${OPENGL_INCLUDE_DIR})
The command above should be:
blender_include_dirs("${OPENGL_INCLUDE_DIR}")
Hair render: using strand "Blender Unit" size didn't correctly
clip for larger/wider strands. Now code clips strands based
on the maximum width.
Also found bad code for using clipping flags, which was mixed up,
and probably caused hair strands to be missing in cases.
VBO enabled, GLSL shading and bevel modifier leads to crash when entering edit mode
Bevel modifier doe not support remapping still, so added check about original index
in cdDM_drawFacesTex_common. Now it works like VBO-less drawing for that special case.
action editor and the NLA editor
This commit fixes the situation where if a NLA Track was on 'solo'
mode and then deleted, NLA evaluation (including Active Action) would
stop working as a flag wasn't getting cleared.
Issue caused because previously sliders used a separate mask and now they're
drawing inside of region.
Thanks to AlexKu for point and Ton for checking :)
Sculpt: brush type "Grab" with option "Frontface only" was flipping
back and forth when grabbing outside of original brush area.
Reason: it was calling a function that used deformed coordinates
for getting normal, clipped by brush area. Now it uses original
coordinates, so it always finds normal.
Nicholas can determine better if tag "cache->original" should be
set as default for this brush type, this far I don't dare to go :)
Having 2 windows open, rendering to image editor, activate other
window and press F11 -> UI went haywire. Simple fix prevents
render output to be closed in this case.
Property buttons: the "ID template" allowed to unlink data from object,
like Mesh or Curve etc, which is not supported. Button now is hidden.
Thanks Dan Eicher for patch.
Also: improved tooltip for 'data browse'. It was generic, now it gives
specific per-type information.
- operators need to enable the option OPTYPE_PRESET or 'PRESET' in python.
- hidden properties are not written.
- currently this only works in the file selector (enabled for FBX/OBJ export)
- currently the menu label doesnt change when presets are selected, this is a TODO, not so simple since the UI is defined in C and the label in python.
- presets save in "scripts/presets/operators/*id*/*.py"
The main advantage with this is that its close to twice as fast to do 'vertex.co[:]' then 'tuple(vertex.co)', this is common for writing a vertex array.
the correct python behavior in this case is to return a copy of the original type, however euler and quats don't support different sizes so we cant do so easily.