Users can write any valid Python expression (that evals to an int or float) inside Blender's gui number buttons (preceded by #) and have them evaluated to their actual int or float value.
Button Evaluation has access to the same modules as PyDrivers.
For example:
#1.0*9-2.3
#ob("Camera").LocZ
#1.0/ob("Cube").LocX
#math.sin(math.pi) -- or simply #m.sin(m.pi)
etc
- Selection wasn't possible on center dots in Object mode. I keep adding
it and it keeps disappearing again. Added clear comments in code too.
- Particles: (debug still) print "build particles" happened on each redraw
when "Display percentage" for particles was set to zero.
The Scene audio.mixrate variable was zero on creating new scenes, causing
synced playback to fail.
Added initialize in kernel, and patch in buttons drawing to set the value
for wrongly saved files.
(Pixelshading: small correction for more optimal code)
now scale correctly.
Formerly, they just used to scale away from the curve into nirwana. Now,
they nicely follow the curve while scaling. Both the curve and the text
objects themselves can be scaled.
This will of course break compatibility with files that used this "bug".
Acceptable? I guess :-)
Added support for XVid and H264-codecs in codec-selection. (only work, if
ffmpeg is compiled with XVid and/or H264-support. Failure in doing so
results in an error message that codec can't be selected.)
Both are written always to AVIs since raw-h264-files created by ffmpeg
can't even be opened by itself...
Video render options are reset to sane defaults (=DVD preset) on startup now.
Don't expect quicktime-support to be very exciting, since ffmpeg can't really
multiplex quicktime files. (Tried several codecs with the ffmpeg-commandline
tool,... sigh)
Timestamp crash on Debian-Sarge version is fixed.
And more particle issues... the attempts to allow particle systems to be
part of duplicators (groups especially) isn't easy to get working!
This commit solves regular animated particle systems... they rendered on
the wrong location, using wrong object transform.
This fixes again some segfaults on error conditions.
It also gives some reasonable error-messageboxes if chooses the wrong
DV-format-options.
More to come...
Bugfixes:
- hddaudio now allocates it's decode buffer + AVCODEC_MAX_AUDIO_FRAME_SIZE
safety interval. (The former code expected all decoded audio frames to
be the same size which can hurt under some circumstances e.g. VBR files)
- writeffmpeg: some pointers where not initialized on start and after
deletion not set to null. Could segfault randomly on error conditions.
- drawseq: use startdisp and enddisp to decide, if a strip should be drawn.
(Just extend strips first or last frame beyond screen dimensions in
the previous version and watch the strip disappear)
Small fix, but results are at least less frustrating now. It uses the
"compatible euler" function from inserting key positions here, preventing
euler values to be constrainted that differ weirdly.
I've tried several other approaches to get a definite rotate constraint,
but only constraining a single axes seems to me impossible magic still...
The new (months ago) added option for "Local Constraint" always copied
and restored a PoseChannel quaternion, that disabled the required
normalizing of quaternions.
Only visible when you manually draw Ipo Curves, but it's probable that
it showed in other cases too.
Object Layer Ipos didn't work when the Ipo was moved an Object Action.
Can't get this to work though... this option has been added with a lot
of exception handling already, and for action/nla it's very nasty to
blend/mix/add layer bit values. So; better not support that.
As feedback for users, I've added a notice popup when you try to move
layer-ipos to an action.
Compositor:
Viewer Nodes inside of Groups now work too. To not frustrate interactive
speed, the following rules apply:
- Making a Group editable (or closing) doesn't signal recalculation of
composite
- clicking on an Input socket always checks changes and calulcates
- When there are Viewers inside an edited Group, Viewers in the main tree
are not executed.
Also added: a "hide unused sockets" icon in the header of Viewer nodes.
This allows cleanup of Groups, to prevent these sockets get reveiled.
Each report was about a different failure with Particles, all related to
weak handling of animation systems and the depsgraph.
Fix has 2 parts; depsgraph now signals "object recalc" to be for time
changes; this then is used to bypass particle-building (since that's baked).
Other part is better object caching while makig particles.
- Shaded drawmode is back (shift+z).
Note it still only uses orco texture; but lighting/shading is using
the internal render module entirely.
- "Make Sticky" option back.
(Also fix in sticky texture render, was wrong scaled)
This commit brings back:
- Field Render
- MBlur Render (old style)
- Border render with or without cropping
Note: Field Render is not supported in Compositor yet. Blurring or filter
will destroy field information.
Both MotionBlur as Field render are done before Compositing happens.
Fixes:
- The "Save Buffers" option only worked on single frame renders, not for
Anim render.
- Found an un-initalized variable in Render initialize... this might have
caused the unknown random crashes with render.
Code restructure:
Cleaned up names and calls throughout the pipeline, more clearly telling
what goes on in functions.
This is visible in the updated first image of the Wiki doc:
http://mediawiki.blender.org/index.php/BlenderDev/RenderPipeline
Material Nodes: The Texture node didn't do the standard "2d mapping" yet
in case an Image Texture is used. Caused wrong mapping for example for UV
coordinate inputs.
Groups are supposed to play its entire (internal) animation system
properly, also when using a dupli-group, linking the group from other file.
When dependencies in a scene change, the groups didn't get corrected,
causing dupli-group to not playback without lag.
This commit resorts the group objects on each DAG_scene_sort() call.
- code for detecting loops was overly complex, and detected loops wrong
even (when chains partially overlap it gave error)
- that code could NULLify sets of other scenes than the one you tested
- and that code should be in blenkernel, so it can be called in more
locations, like fixing potential loops in old files
- the code for looping over the chained scenes was bad too, I created a
nice #define to keep code readable. (See SETLOOPER in BKE_scene.h)
ALso fixes reports in tracker :)
CVS these days in order not to be terribly annoyed by its absence, here it
is: instinctive-blender's "Recent files list".
It's in the CTRL-O menu. No UI / muscle memory changes -- the first entry is
the same as the only entry that used to be in the former popup.
.
Added simplified fix as proposed by Stephan Kassemeyer to allow scaled
Armatures to still have a working 'stride bone'. Only works for uniform
scaled armatures though.
In general, for properly working armatures, I'd recommend to never scale
it at all, and certainly not non-uniform scaling. It will give issues with
constraints, IK and drivers all over...
This will free all Node output buffers, while compositing, when not needed
anymore. Saves a whole lotta memory, and will enable to use many many more
nodes (or high resolution images).
- Found several places, where people explicitly casted the frame number
to short.
- Fixed the crash in BPY_interface by adding an empty line (to make it
recompile everywhere, make clean doesn't help...)
For the build system maintainers:
Problem was: The change in makesdna changed the position of the
scriptlink structure. BPY_interface.c somehow didn't get recompiled
(not even after a make clean!!!) which triggered crashes on adding
scriptlinks.
previously would only work if the armature was the first in the meshes modifier list,
in that case the armature would be name flipped but the mesh would not)
When multiple output nodes exist (Material), the active Output flag could
get copied and wasn't reset properly. Now the depenendency sorting code
ensures only 1 output node is the active output for execution.
exit_usiblender() to finalize Python before main library data was freed.
This solved a somewhat specific sigsegv with pydrivers, but as Ken
Hughes found out (thanks!) caused one with scripts that called Blender.Exit().
Now running scripts (G.main->script) are freed in BPY_end_python()
itself (so before the rest of the library data is freed), before
Py_Finalize(). Works fine in all my tests so far.
The file script.c should become obsolete with this change (I added a
comment about it there). If all is indeed fine, it will be removed
later.