renamed meshPrettyNormals to meshCalcNormals, and it now writes to normals rather then returning a list of vecs.
updated vertexpaint_selfshadow_ao to be a bit more efficient and make use of the above changes.
Until too many people complain: People can use older versions of Blender / player if they really need Sumo.
Sumo is not supported by anyone, and Bullet needs more feedback.
Note: Sumo is not removed yet, because no discussion is started about this. It's currently just a simple switch that replaced Sumo by Bullet.
New Constraint API. Constraints are accessible through a "constraints"
attribute in poses and objects. Would be REALLY NICE for armature users to
pound on this code.
- 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.
Made the frame boost from short to int (30000 -> 300000 frames) complete
by walking through the source and finally changing all frame-variables
to ints.
This should finally fix the framecounter warp around seen in some buttons.
If you step on any further problems that may arise starting from frame
32768 please just give me a hint and I'll fix it.
(Sorry about that, didn't know enough about Blender, when I did it the first
time...)
Also needed to seperate
view3d_paintmenu
into
view3d_vpaintmenu
view3d_tpaintmenu
view3d_wpaintmenu
The view3d_paintmenu and do_view3d_paintmenu were getting messy and had a lot of if's in it.
When you wanted to display "Chroma VectorScope" or "Luma WaveForm" for
image/window with small width/height, then Blender crashed, because
Blender has used fixed limits of ibuf->rect size. Statistics informations
should be created corectly now too.
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.
(Provided by harkyman)
I also added comments explaining what the Blank lines with #
where for above a couple of structures.
(compiler ignores them and they specifiy to makesdna that that structure
can be ignored)
Kent
- Added early-out optimisation to add-effect (the case, where fac == 0)
- Bugfixes:
* hddaudio: ffmpeg does not seek always to the correct frame,
if the SEEK_BACKWARD flag is used. Now we account for this and
seek a little bit further... (hack, urghs)
* hddaudio: on long timelines, the new seek code didn't work
(forgot a long long cast)
* the audio mixdown code now also calculates meta-strip IPOs
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.
text module when user edits the input text box of any pydriver
(Transform Properties panel, Ipo window).
It's enough to click in and out of a single pydriver's text input box
for the module reloading and also re-evaluation of all pydrivers
available. Maybe this "refreshing" should also be available from a
menu, let's see.
Note for Python fans:
Definitions and redefinitions in a reloaded module are properly handled
in Python, but previously defined data in the module doesn't disappear.
So if you define a function "f" inside a module, import it, then change
the function's name to "g" and reload the module, both "f" and "g" will
be available. This is considered a feature, check reload's documentation:
http://docs.python.org/lib/built-in-funcs.html#l2h-59
wiki with info: http://mediawiki.blender.org/index.php/BlenderDev/PyDrivers
(there are two sample .blends in the patch tracker entry, last link in
the wiki page)
Notes:
In usiblender.c I just made Python exit before the main library gets
freed. I found a situation with pydrivers where py's gc tried to del
objects on exit and their ID's were not valid anymore (so sigsegv).
Ton needs to check the depsgraph part.
For now pydrivers can reference their own object, something normal
ipodrivers can't. This seems to work fine and is quite useful, but if
tests prove the restriction is necessary, we just need to uncomment a
piece of code in EXPP_interface.c, marked with "XXX".
Thanks Ton for the ipodrivers code and adding the hooks for the py part
and Martin for the "Button Python Evaluation" patch from which I started
this one.
Anyone interested, please check the wiki, the .blends (they have
README's) and tell me about any issue.
and made it so toEuler converts a 4x4 matrix to a 3x3 rather then raising an error.
Its not straight fwd to get an objects worldspace loc/size/rot from its 4x4 matrix.
Example from updated docs.
import Blender
scn = Blender.Scene.GetCurrent()
ob = scn.getActiveObject()
if ob:
mat= ob.mat # Same as martixWorld
print 'Location", mat.translationPart() # 3D Vector
print 'Size", mat.scalePart() # 3D Vector
print 'Rotation", mat.toEuler() # Euler object
commented out some code that makes Blender crashing, after leaving the game engine (armature deletes some pose, which deletes constraints, which are still in the dependency graph. Ask Charlie)
* Floating panel edge snapping
Floating panels now have a snapping mechanism that sticks them to the edge of a window when you drag them within a small range of it. This not only allows nice easy alignment of panels within a window, but also keeps them stuck to window edges when the window is resized. This means that you no longer get panels that were once on the edge of the window left drifting in the middle of your view if you resize it larger, which was rather annoying before.
Another goodie is that panels snapped to the bottom edge of the screen will minimise down to the bottom when collapsed, and will move back up to be edge aligned when maximised again, preventing collapsed panels down here from hanging around in space.
Its scary to think that a redraw space handeler could run
import os
os.system('rm -rf ~/')
removing all user files, Just by opening the blend file!
This means at least you can opt not to run any python scripts you dont want to..