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..
All settings through Blender.Modifier.Settings
see the epydocs
Also added some error checking to fix some possible segfaults.
Added more epydocs
Modifiers API should be stable enough to use now, though give it a bit of time for testing.
submitted by Davide Vercelli
This replaces (as a user preference) the static icon shown in the bottom-left of the 3D View with a small rotating axis that updates live in all ortho/perspective modes
I made several modifications to the original patch. In the patch, it displayed the axis on top of the 'object info' text since when floating panels are minimised, they sit in the bottom corner and cover the axis up. This annoyance is not limited to the axis, it also covers the frame number and info text, which can be frustrating. Sending them to the bottom is not that useful either, since it's quicker (with esc) and just as much movement to close and re-open them again.
I decided to solve this problem at the cause: Now when using the disclosure triangle on floating panels, they 'minimise in place' rather than going to the bottom.
User preferences are in the 'View & controls' section to:
- Display either the 3D axis or the old icon
- The size of the axis
- the brightness of the axis (colours are taken from grid theme settings)
* patch #3801: Option to show view direction in 3D View
submitted by Daniele Fornaciari
Simple one, just adds an user pref to show the name of the view's direction as text in the top left corner.
matrix.resize4x4() was incorrectly allocating a array of pointers using
the wrong cast -- sizeof(float) instead of sizeof(float *). Worked fine
on 32-bit systems but caused a crash on AMD64. Discovered by a student
in one of my classes (kudos, Joe).
Patch #4119, submitted by Lukas Steiblys (imbusy1). Mesh objects (created
through the toolbox) which take user input such as number of verts, are not
created if the user cancels input. Thanks for the patch!
More Modifier API changes:
* add Blender.Modifier.Settings dict with constants for modifier types
* add mod.type attribute, which returns type of the Modifier
* add some internal consistency checks in ModSeq_remove
New Ipo and IpoCurve API. Ipo and IpoCurve objects support the [] operator,
for accessing the curves of a particular Ipo and for accessing the value
of an IpoCurve at a specific time. Both modules were also "tp_getset"-ified.
Also, code for an alternative method (Antont wanted this) of accessing curves
via Ipo attributes is included for now, for people to try and see if it's
actually preferable to the Ipo [] operator.
These are all new additions; nothing was intentionally removed from the API.
If you find the something in the existing API has changed, let me know.
a fairly obvious bug- with flipping armature names in armature edit mode.
All Objects names would flip if they had names from the armature, even if they did NOT use use armature. (this could realy mess up a scene)
fix was a 1 liner.
replaced
modob = modifiers_isDeformedByArmature(ob);
if(modob) {
with
/* or is there an armature deforming object */
/* this is a bit sloppy, what if we have more then 1 armature deforming a mesh?
TODO: Should have a function modifiers_isUsingArmature(ob, arm) - Campbell */
modob = modifiers_isDeformedByArmature(ob);
if(modob && modob->data==arm) {
Notice that before it didnt care what armature, just that it had one.
If the maintainer Ton? gives me the OK. Ill make this support multiple armatures by adding modifiers_isUsingArmature.
notice that if you pressed Akey when no objects in the view it still pushed an undo event, redrew and counted all and change the memory usage in the status.
mainly added not to waist undo slots.
version 1.58 assumes the usage of the BUILD_DATE macro. When this macro is not defined the extern declarations cause the linker to fail.
As a sidenote there is no 'winbuildinfo.c' file that the BUILD_DATE macro assumes is present on win32 systems....
When the 'reference shape key' (drawn yellow) was not the first key, the
channels as drawn in IpoWindow didn't match the actual shape keys.
This was caused by an exception in code that skips drawing the reference
shape when 'relative' was used.
Now I've added a rule that the first shape in a list always becomes the
reference, that way you can also edit it. To keep backwards compatibility,
this is only activated on translating the shape key lines.
Finally after 5 months! :)
Patch was already approved, but needed testing on existing files & time...
Description is here:
http://mediawiki.blender.org/index.php/BlenderDev/Transmissivity
In short: patch adds filtering based on thickness of material, and support
for internal reflection (resulting in better looking glass).
Thanks!
(Only note; appearance of glass render now differs... is acceptable, but for
the factor to control transmissivity a scaling factor could be added in UI,
the length of a ray is a relative thing...)