Commit Graph

476 Commits

Author SHA1 Message Date
Campbell Barton
c2f36a4d6a naming changes
path -> filepath (for rna and operators, as agreed on with elubie)
 path -> data_path (for windowmanager context functions, this was alredy used in many places)
2010-06-14 03:52:10 +00:00
Campbell Barton
006d5e82e8 more cleanup to bpy.context.copy(), exclude rna values and its self. 2010-06-09 19:44:06 +00:00
Campbell Barton
dd72ffe3ff py/rna api:
- bpy.context wasnt being created from the python bpy.types.Context type defined in bpy_types.py (bpy.context.copy() failed for eg.)
- bpy.context.copy() was returning C defined methods like FloatProperty(), which are not useful in this case, removed.
2010-06-09 19:31:10 +00:00
Campbell Barton
1028284301 pep8, whitespace edits 2010-06-09 19:12:03 +00:00
Campbell Barton
0ef2431220 python utility property library.users_id: returns a tuple of all ID datablocks which use this library. 2010-06-09 09:48:41 +00:00
Campbell Barton
728799e0d8 texture user attributes, users_material, users_object_modifier 2010-06-08 13:03:49 +00:00
Campbell Barton
9cbbc9d3af rename some rna properties filename --> filepath
* filename == "foo.ext"
 * filepath == "/path/to/and/including/foo.ext"

this was alredy followed in some places not not everywhere.
2010-06-02 17:58:28 +00:00
Campbell Barton
ed3a7bd299 script reload (f8), is closer to working.
there are internal memory problems which can make it crash still.
If you remove all directories in the scripts folder except for 'modules' and 'ui', it runs without crashes.
2010-06-01 08:15:43 +00:00
Campbell Barton
a9867c226b add torus now works like other C add-object operators, location and rotation are initialized and kept even when settings are changed after. 2010-05-30 17:18:16 +00:00
Campbell Barton
1658a28a58 - Python console argument '--python-console', option so you can start blender and drop into a python console, (useful for debugging some problems on a renderfarm over ssh)
- Also made it so sys.stdin isnt overwritten anymore, instead the interactive consoel overwrites while it executes and restores after.

- removed hope folder from sphinx patch path
2010-05-30 14:05:58 +00:00
Campbell Barton
1bd58bdbf4 = misc small stuff =
- own mistake in scene help text.
- rename properties to have users as the prefix for better ordering.
- use fixed height for stamp, gives better aligned text.
2010-05-25 17:04:32 +00:00
Campbell Barton
8c767ce0e8 utility function for mesh data types
mesh.edge_loops_from_edges(edges=None)

Lets you get edge loops from python either from the entire mesh or from by passing an edge list.
2010-05-24 12:18:12 +00:00
Campbell Barton
70905d06f1 add new object py module.
- added view align from twisted torus script and return the object's base.
2010-05-23 12:38:49 +00:00
Campbell Barton
f1b9d395e3 - base_object.layers_from_view(view3d), needed for setting local layers
- module 'add_object_utils', so each script doesnt need its own add object code, dealing with layers, scene, cursor location, editmode etc.
2010-05-23 12:14:07 +00:00
Campbell Barton
ba728620ce text utility functions.
- st = text.as_string()
 - text.from_string(st)
2010-05-18 09:07:58 +00:00
Campbell Barton
80de1162ee clear some pep8 warnings 2010-05-16 12:15:04 +00:00
Campbell Barton
e8408697de bpy.utils.blend_paths(absolute=False) (was Blender.GetPaths in 2.4x) 2010-05-11 07:08:32 +00:00
Campbell Barton
daba1d23ff utility functions
bpy.utils.smpte_from_seconds(time)
 bpy.utils.smpte_from_frame(frame)
2010-05-10 20:41:01 +00:00
Matt Ebb
413c4c91ca Fix [#22296] Wrong Operator Names? 2010-05-10 01:49:35 +00:00
Campbell Barton
52517570f0 python property - object.scene_users
Also made this and object.group_users return tuples so it raises an error in this case...
  ob.scene_users.append(scene)
2010-05-06 08:30:42 +00:00
Campbell Barton
98754f3ae5 small adjustments for getting the default string of a property 2010-05-04 06:08:00 +00:00
Campbell Barton
20fd05abc1 manually sync rigify with render branch
fixes [#22231] Rigify Script Error When Generate From Human(Meta-Rig)
2010-05-03 19:12:11 +00:00
Campbell Barton
914d5e5f62 sphinx doc generation
- include default values as well as min/max.
- partial rebuilds, so we dont have to build all docs each time, only the changed files.
2010-05-03 15:52:15 +00:00
Campbell Barton
188d1ccf56 fix for exporting a rig to a graph 2010-04-30 05:45:02 +00:00
Campbell Barton
873d4a3f05 py api
- mathutils.Color.hsv attribute. eg. material.diffuse_color.hsv = 0.2, 0.8, 0.4
- Vector/Euler/Quaternion/Color now only take a single seq arg.
- internal function for parsing arrays. (cleanup messy internal list/vector/tuple/seq parsing)
- didnt update rigify yet.
2010-04-25 19:27:59 +00:00
Campbell Barton
93bc6fb829 py console autocomp. fix
import missing_mod
...would raise an error.
2010-04-25 15:21:46 +00:00
Campbell Barton
6a5c036304 py api. bpy.utils.relpath() function. 2010-04-21 09:27:36 +00:00
Campbell Barton
4cf697de89 - for BGE mouse and keyboard events use tuples rather then lists
- pep8 corrections
2010-04-17 19:05:53 +00:00
Campbell Barton
7eb4eebe22 add the modules directory from the user scripts path (if it exists) 2010-04-16 09:31:58 +00:00
Matt Ebb
486796ce31 * Interaction Presets
This adds a new presets menu in the splash screen and the Input section of
User Preferences to choose a preset interaction style, consisting of key configurations
and also other user preferences such as select mouse button, view rotation style, etc.
Currently, just 'Blender' and 'Maya' presets are included, hopefully we can have more
presets contributed (and maintained!) by the community.

It's best to keep these presets minimal to avoid too many key conflicts. In the Maya one
I changed the view manipulation key/mouse combos and also the transform 
manipulator keys, not much more than that.

To save an interaction preset, open the user preferences Input section, and press the 
[ + ] button next to the presets menu. It will save out a .py file containing any edited key 
maps and navigation preferences to the presets/interaction folder in your scripts folder.

---

Part of this commit changes the way that key maps are exported/displayed in 
preferences - now partial key configs are allowed. Previously it would export/import the 
entire key configuration, regardless of whether individual key maps were edited or not 
(which would make them more susceptible to conflicts in unexpected areas).

(note, in blender terminology, a key map is a category of key items, such as 
'Object Mode' or 'View 2d'.)

Now, the export and the UI display work in a similar way to how key maps are 
processed internally - Locally edited key maps (after pressing the 'Edit' button) are 
processed first, falling back to other key maps in the current key config, and then falling 
back to the default key config. So it's possible for a key config to only include a few 
key maps, and the rest just gets pulled from the default key config. The preferences 
UI display works like this too behind the scenes in deciding what to show users, 
however using it is just like it was before, the complexity is hidden.
2010-04-14 06:27:50 +00:00
Campbell Barton
67cfc427ee PyAPI
- added new mathutils.Color() type, use with rna so we can do for eg:
 material.diffuse_color.r = 1.0
 # also has hsv access
 material.diffuse_color.s = 0.6

 - made Mathutils and Geometry module names lowercase.
2010-04-11 14:22:27 +00:00
Campbell Barton
fe9a22a018 py api file rename
- prefix mathutils api.
- 2 blf.c files (annoying for debugging)
- py api docs ignore keying sets as with operators.
2010-04-11 12:05:27 +00:00
Campbell Barton
6e3920e8fa rna/py/reference doc improvements..
- vectors now respect min/max settings.
- keyframing and adding drivers raises an error in an index is set on a non array, keyframing raises an error if it fails.

reference docs...
- added docstrings for remaining python bpy_struct functions
- added fake class for docs, bpy_struct, which is the base class of everything in bpy.types
- improved inherictance references for struct classes, include bpy_struct members.
2010-04-10 18:35:50 +00:00
Campbell Barton
c3ab6bc509 rna reference docs, list inherited properties and functions at the bottom of each type. 2010-04-09 20:43:58 +00:00
Campbell Barton
c169c5ddfe dont document parent classes funcs and properties 2010-04-09 20:04:37 +00:00
Nathan Vegdahl
54b12df3bc Added tongue and neck rigs. The neck rig is quite solid, I think, and is working well in production on Durian. The tongue rig is a bit hacky, but I'm adding it for now since we're using it in Durian.
Also added pupil dilation to the eye rig type, and made the finger rig type work with two-digit fingers.
2010-04-07 14:46:06 +00:00
Campbell Barton
bad41fcff5 - new docstrings for bpy.type.Struct methods & some corrections.
- struct.path_to_id() --> path_from_id().
2010-04-06 07:49:10 +00:00
Campbell Barton
bc149e0fbe pep8 cleanup 2010-04-04 14:52:15 +00:00
Campbell Barton
9105f6f0bd rna naming, *_frame --> frame_* 2010-04-01 21:44:56 +00:00
Brecht Van Lommel
71446eea57 * Multiply for panorama cameras
* Some cases of struct name being set where it shouldnt have been.
* Spelling: wich --> which
* Copy and initialize uv modifier scale, remove unneeded enum.
* Ability to pin any object into the context.
* Update uv window while transforming (useful when used with UVProject modifier)
* Patch by Wahooney, so new template's are internal text and dont get saved over
  by mistake.
* Fix for https://bugzilla.redhat.com/show_bug.cgi?id=572186
  Bug 572186 - [abrt] crash in blender-2.49b-5.fc12: Process
  /usr/bin/blender.bin was killed by signal 6 (SIGABRT). Original fix submitted
  by Jochen Schmitt.
* [#21816] bpy.data.add_image has stopped working on Windows. moved to
  bpy.data.images.load(), missed this call.

(commits 27726,27825,27828,27831,27832,27833,27834,27836,27837,27838,27839,27858 by Campbell from render25 branch)
2010-03-30 12:15:16 +00:00
Campbell Barton
247b7249bd [#21682] help() doesn't work in the console
replace pydoc's pager function so the console's input isnt used.
2010-03-21 14:56:26 +00:00
Joshua Leung
ea4a987fd4 == Massive Keying Sets Recode ==
After a few days of wrong turns and learning the finer points of RNA-type-subclassing the hard way, this commit finally presents a refactored version of the Keying Sets system (now version 2) based on some requirements from Cessen.

For a more thorough discussion of this commit, see 
http://sites.google.com/site/aligorith/keyingsets_2.pdf?attredirects=0&d=1

------

The main highlight of this refactor is that relative Keying Sets have now been recoded so that Python callbacks are run to generate the Keying Set's list of paths everytime the Keying Set is used (to insert or delete keyframes), allowing complex heuristics to be used to determine whether a property gets keyframed based on the current context. These checks may include checking on selection status of related entities, or transform locks.

Built-In KeyingSets have also been recoded, and moved from C and out into Python. These are now coded as Relative Keying Sets, and can to some extent serve as basis for adding new relative Keying Sets. However, these have mostly been coded in a slightly 'modular' way which may be confusing for those not so familiar with Python in general. A usable template will be added soon for more general usage.

Keyframing settings (i.e. 'visual', 'needed') can now be specified on a per-path basis now, which is especially useful for Absolute Keying Sets, where control over this is often beneficial.

Most of the places where Auto-Keyframing is performed have been tidied up for consistency. I'm sure quite a few issues still exist there, but these I'll clean up over the next few days.
2010-03-16 06:18:49 +00:00
Campbell Barton
f8a4683b72 pep8 warnings 2010-03-14 23:26:17 +00:00
Campbell Barton
9ce5be3706 workaround for [#21486] Python debuger pdb don't work
setting sys.stdin to None is done so python wont lock blender when it tries to read from the input. - help() from the console does this.
Running blender with -d keeps the stdin so python debugging can work. add info in the help message about this.

eventually it might be best to replace sys.stdin with our own object which interacts with the console but this is not trivial.
2010-03-08 12:29:58 +00:00
Campbell Barton
7c0d2ffb64 pep8 cleanup 2010-03-06 01:40:29 +00:00
Campbell Barton
29fc56b5bb bugfix [#21405] Error on loading of thumbnails from network renderer [27204] 2010-03-01 12:44:28 +00:00
Campbell Barton
0e18035f82 remove so-called security patch,
this has been used by various projects but needs to be justified since it wont remove paths that also resolve to the CWD, "." for instance.
2010-02-28 17:11:42 +00:00
Campbell Barton
3dd3e7321e store vars in py operators in the instance rather then the operator classes. 2010-02-27 14:54:45 +00:00
Campbell Barton
10dbf6faee rename extension to addon after discussion with meta-androcto & mindrones 2010-02-26 14:28:29 +00:00
Campbell Barton
03590eb8a9 allow cloth sim for linked duplicates, not many people use this but we need for using hair on linked characters, if there are bugs with this we'll need to fix so enabling for now with comments that its experemental. 2010-02-24 15:35:15 +00:00
Campbell Barton
97bdfe6f1b pep8 cleanup + correction for external player operator return value. 2010-02-22 23:32:58 +00:00
Nathan Vegdahl
2b9740bc3b Made a more generic rig type for giving animators direct control over shape keys. With this rig type you can attach shape keys both to the transforms of the bone and any number custom properties on the bone. 2010-02-22 18:07:16 +00:00
Campbell Barton
bc3d96678d bugfix [#21233] Crash in pyapi, with new object.
pass the obdata as an argument rather then assigning later so as not to allow an invalid state.
2010-02-22 00:07:46 +00:00
Martin Poirier
b602c6b5fa Better code to prevent loading scripts from .blender/scripts
Treat user defined script dir (where loading from base dir is ok) differently than system dirs, where we only want to load from specific subdirs.
2010-02-20 22:57:49 +00:00
Campbell Barton
1a07aa169e temp workaround for blender loading 2.4x scripts in ~/.blender/scripts 2010-02-20 22:12:27 +00:00
Campbell Barton
65a4dafcff fix for empty xyz axis text drawing ontop of everything. 2010-02-19 20:09:42 +00:00
Campbell Barton
c72ab0a39e topology based mirror, (from apricot branch)
- correct errors with non-mirrored meshes
- mirror weight paint on asymmetrical meshes
2010-02-17 19:50:42 +00:00
Campbell Barton
768f20d537 update for missing docs & dont include operator classes in sphinx docs. 2010-02-16 15:01:34 +00:00
Campbell Barton
a789942219 ignore scripts that are loaded twice rather then raising an error. 2010-02-16 13:13:22 +00:00
Nathan Vegdahl
27654953b1 Rigify:
Added a tail control rig.
For now, you have to manually hook the resulting controls up to a separate spline IK rig that you make by hand.  Perhaps this can be automated in the future.
For anyone using this: keep in mind that you need separate armatures for the tail deformation bones and tail control bones.  Otherwise you create a cyclic dependency like so:
tail deform bones <- spline object <- tail control bones
2010-02-15 16:46:24 +00:00
Campbell Barton
37858fd435 make it so an error registering/unregestering wont stop loading scripts, just print the error and continue 2010-02-15 12:43:25 +00:00
Campbell Barton
536e448e7a [#21141] boring segfault on F8/"reload scripts", 26878, backtrace
reloading bpy_types was causing reload to fail. also unregister all modules in the reverse order that they were loaded, so when reloading removed files done hang around.
2010-02-15 10:54:51 +00:00
Campbell Barton
677386e53a initial support for extensions in the user preferences
only one script at the moment:
 [#20848] Blender Gears for 2.5 (for ideasman42)
 from Michel Anders (varkenvarken)
2010-02-14 23:33:18 +00:00
Campbell Barton
3871cb78bc autocompete was matching import_foo as import keyword.
breaking autocomp. on import_scene_obj for eg.
2010-02-14 12:23:25 +00:00
Campbell Barton
39c04315e2 change python scripts so modules which register with blender have a register() function rather then making import automatically run the register functions (generally considered bad practice by python people) 2010-02-14 11:21:21 +00:00
Martin Poirier
5c9f10f673 Remove debug print 2010-02-12 22:02:10 +00:00
Campbell Barton
081c1205a3 correct fsf address 2010-02-12 13:34:04 +00:00
Campbell Barton
8f4c340915 bpy.utils.home_paths, use this to get script paths for the user/local/system blender paths. 2010-02-11 14:08:22 +00:00
Campbell Barton
c2b2ccde45 fix for python not being able to call operators with a executuon context. 2010-02-10 11:10:38 +00:00
Nathan Vegdahl
fb728addd2 Eh... stupid me. Left a duplicate main function in the rig type.
(Tail between legs, walks away shamefully.)
2010-02-03 15:44:19 +00:00
Nathan Vegdahl
11ce6eb4d4 Added a new rig type "shape_key_transforms" that drives shape keys based on the local transforms of a single bone. Quite useful in a variety of situations.
Required options:
    mesh:  name of mesh object(s) to add/get shapekeys to/from
           (if multiple objects, make a comma-separated list)
Optional options:
    loc_<x/y/z>:       name of the shape key to tie to translation of the bone
    loc_<x/y/z>_fac:   default multiplier of the bone influence on the shape key
    rot_<x/y/z>:       name of the shape key to tie to rotation of the bone
    rot_<x/y/z>_fac:   default multiplier of the bone influence on the shape key
    scale_<x/y/z>:     name of the shape key to tie to scale of the bone
    scale_<x/y/z>_fac: default multiplier of the bone influence on the shape key
2010-02-03 15:40:56 +00:00
Nathan Vegdahl
21f1625fd5 Updates to mouth rig. Old method didn't work well in combination with shape keys. This new method (effectively just weighting directly to the lip control bones) is much simpler, but also requires more manual weight painting to get it to look right. 2010-02-02 17:57:12 +00:00
Campbell Barton
039d087171 subtype support for properties in bpy.props. 2010-02-01 22:04:33 +00:00
Martin Poirier
7379e75e12 Fix loading python modules (like netrender) 2010-02-01 01:33:40 +00:00
Campbell Barton
fd3842f3a2 Mathutils doc improvements + other small things
- bpy.app moved into PyStructSequence (used by sys.float_info)
- added buildinfo into bpy.app.build_*
- bpy.ui removed (wasnt used)
- include external example files in Mathutils docs (only Mathutils and Vector are currently written)
- added support to auto document PyStructSequence's
- CMake had "'s inside all its strings.
2010-01-31 21:52:26 +00:00
Campbell Barton
95069f2909 pep8 changes 2010-01-31 14:46:28 +00:00
Campbell Barton
fbadf21b00 pep8 changes to rigify (minor warnings still there)
also found quite a few cases where variables were used that hadnt been defined.
2010-01-31 14:33:27 +00:00
Campbell Barton
22d8742f0d white space commit, so the actual changes in the next commiy wont be so hard to find 2010-01-31 14:30:21 +00:00
Campbell Barton
026b5bacca bugfix [#20638] not loading script in user script directory when startup 2010-01-30 14:48:46 +00:00
Campbell Barton
ec48cbd267 utility functions is_negative_m3 & is_negative_m4, added python Mathutils access Matrix.is_negative
renamed Mathutils attribute wrapped -> is_wrapped
2010-01-30 13:15:39 +00:00
Martin Poirier
21b7556bf7 Add cfg folder for keyconfigs (and possibly others later) to be imported after everything else.
Also remove .pyc file when removing keyconfigs.
2010-01-28 21:52:07 +00:00
Campbell Barton
6f3dfe81c0 missed some files last commit. 2010-01-28 19:21:15 +00:00
Campbell Barton
18ea9b6443 move bpy.load_scripts --> bpy.utils.load_scripts
added sequencer strip length display in seconds
2010-01-28 11:48:06 +00:00
Campbell Barton
478dc000b3 * Mathutils attributes documented - http://www.blender.org/documentation/250PythonDoc/Mathutils.html
* Vector.difference() needed normalized vectors
* bpy.DEUBG -> bpy.app.debug
2010-01-27 21:33:39 +00:00
Campbell Barton
89cd4be1af slice assignment wasnt running the properties update function (setting object layers wasnt working from py)
also commented operator subclassing, loosing py property order.
2010-01-27 17:23:28 +00:00
Campbell Barton
bffad18da8 [#20046] 2.5 "bridge faces" tool doesn't delete original selection
remove this script, its not good enough, remove grease pencil retopo also.
2010-01-26 14:39:01 +00:00
Nathan Vegdahl
fb8d6b9f7a Rigify:
- Removed control-shape deformation bones from the spine rig (no longer necessary thanks to the new "custom shape at" feature).
- Various improvements to the mouth rig, including a corrective shape key for mouth-open.
- The new method of generating into the same armature object every time wasn't copying pose bone data in the process, such as rotation mode and transform locks.
2010-01-26 11:17:41 +00:00
Campbell Barton
3150e4ee12 update tagged objects in the scene after calling each operator, this makes running a set of recorded operators work as expected. 2010-01-26 08:41:16 +00:00
Campbell Barton
c91a0f8adf make exception a bit nicer (since wiki docs dont make much sense how it was before) 2010-01-25 18:09:46 +00:00
Nathan Vegdahl
ede3f0285d Rigify now generates the rig into the same armature every time, so you don't have to re-hook-up things like armature modifiers, parenting, etc.
By default the generated rig object is named "rig".  But you can add a custom "rig_object_name" property to the metarig to specify the name of the object to generate into.
2010-01-25 14:19:12 +00:00
Campbell Barton
0a0f4c9d81 Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
- Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
2010-01-25 09:44:04 +00:00
Elia Sarti
265b9344ca Forgot to rename use_return in this script as well. 2010-01-24 19:30:54 +00:00
Campbell Barton
9d96399eeb - panel python template
- nicer syntax to capitalize words
2010-01-23 18:51:56 +00:00
Campbell Barton
3b09e73e58 - bugfix (user supplied fix) [#20745] makesrna with rename error.
- error with last commit, length had an index arg.
2010-01-22 14:59:01 +00:00
Campbell Barton
c6979aa0f4 continue when there are errors on reloading scripts 2010-01-22 14:43:08 +00:00
Campbell Barton
7f1a8a947d initial sphinx doc generation support for python and C modules.
python modules bpy.app, bpy.utils are now included in docs.
C defined python module bpy.props has its docstrings extracted and written directly into sphinx docs since the C methods cant be inspected.

added docstrings to bpy.props and improved some in bpy.utils.

will update online docs tomorrow.
2010-01-22 02:04:25 +00:00
Campbell Barton
8f3f1da080 - temp marker rename in menu (using python or the outliner isnt fun)
- marker selected property
- rigify error formatting error
2010-01-21 19:43:27 +00:00
Campbell Barton
0568f608c4 Patch from Jochen Schmitt, (various distro's had patched this)
- modify the path in python rather then C
- filter returns an object in python 3, set using slice.

also import sys as _sys so it doesnt appier in aytocompleation.
2010-01-20 19:26:23 +00:00
Nathan Vegdahl
c54d54e8ae Rigify:
- Added two driven-shape-key rig types that create and drive shape keys on a mesh/meshes based on the distance or rotation difference between two bones.
- Fixed bug in finger curl rig type where secondary finger controls were not created.  Finger type can also now (optionally) have a hinge switch (useful when using it for wings).
- Changed the blending system in rigify_utils to use copy_transforms constraints instead of copy_loc+copy_rot.
- Finished the quadruped leg type.  Now has both ik and fk control and ik/fk switching.  Also uses a rotating bone to control the knee direction instead of a pole target (seems to work more consistently for quadruped setups).  There's still one annoying bug regarding foot roll, but it's not blocking.  I'll track it down later.
- Mouth rig now creates corrective shape keys on the face mesh for dealing with mouth corners when they spread open.
- Biped arm and leg types now cause mesh to scale when you scale the fk controls.
- Misc improvements to the rig types.
2010-01-19 19:07:09 +00:00
Nathan Vegdahl
40fb29862e Added eyeball and eyelid rig types to rigify.
(First commit!  Let's hope this works!)
2010-01-19 18:52:45 +00:00
Campbell Barton
eedc3c09d1 append/prepend class methods for the header and panels (previously only worked for menus)
Example of adding a button to the view header;

 def draw_custom(self, context): self.layout.operator("some.operator")
 bpy.types.VIEW3D_HT_header.append(draw_custom)
2010-01-18 16:47:26 +00:00
Campbell Barton
e723b060fc python script reloading (f8)
- reload modules from types that are not directly included. for example wm.py uses classes from modules/rna_prop_ui.py which wasnt reloaded.
- script paths were being added to sys.path multiple times.

note: now the second reload gives a crash right away but this is a bug elsewhere.
2010-01-18 10:02:55 +00:00
Campbell Barton
381e926600 fixed sphinx doc generator
- arguments, return values indentation means they get correctly interpreted by sphinx
- functions with no return values were displaying return as ()
- return values were getting the '(optional)' added in some cases.

Example:
http://www.blender.org/documentation/250PythonDoc/bpy.ops.object.html
2010-01-17 20:59:35 +00:00
Campbell Barton
58f13d469e UV mirror tool (copies UVs from one side of the mesh to the other)
WIP, suffers from editmode bug where editmode python tools cant have redo-options set. and needs options for precission.
2010-01-13 17:58:26 +00:00
Campbell Barton
59dfd24f75 - bugfix [#20654] the property edge_face_count of the Mesh-Object does not work
- remove unneeded particle function
2010-01-12 18:33:21 +00:00
Campbell Barton
f6c79c553b [#20646] 2.5 does not load python scripts with multiple dots in the filename
- not a bug so add a warning if people add scripts with invalid names like this.
2010-01-12 10:04:03 +00:00
Campbell Barton
20df075e38 new rig types from Cessen 2010-01-10 19:20:48 +00:00
Campbell Barton
c723251cc0 rename rig types not to have generic in the name (Cessens decission) 2010-01-10 18:59:32 +00:00
Campbell Barton
57e96e4472 patch from Cessen, update to metarigs and some changes to the rigging main loop.
- property names dont need the bone type prefix anymore
- always add a root bone that all non parented bones are parented to
- x/y/z axis properties for bones.
2010-01-10 18:53:15 +00:00
Campbell Barton
08c9ecb3b0 RNA/Py API
change how data is added. eg.
 bpy.data.add_mesh(name) --> bpy.data.meshes.new(name)
 bpy.data.remove_lamp(lamp) --> bpy.data.lamps.remove(lamp)


image and texture stil use add_* funcs
2010-01-09 23:44:01 +00:00
Campbell Barton
b8ca67ca33 custom properties panels for most ID types. use subclassing to keep panel UI definitions minimal 2010-01-08 08:54:41 +00:00
Campbell Barton
e49e9289f0 - leg_quadruped_generic missing imports
- move global pivot in the UI of userprefs since others are closer related
2010-01-06 22:38:51 +00:00
Joshua Leung
a9861e3381 Durian Request: Drivers Recode
Highlights:
* Support for Multi-Target Variables
This was the main reason for this recode. Previously, variables could only be used to give some RNA property used as an input source to the driver a name. However, this meant that effects such as Rotational Difference couldn't be used in conjunction with other effects and/or settings to achieve the powerful results. Now, a variable can take several input targets, perform some interesting operations on them, and spit out a representative value based on that.

* New Variable Types
With the introduction of multi-target variables, there are now 3 types of variable that can be used: single property (i.e. the only type previously), Rotational Difference (angle between two bones), and Distance (distance between two objects or bones).

* New Driver Types
In addition to the existing 'Average', 'Sum', and 'Expression' types, there is now the additional options of 'Minimum' and 'Maximum'. These take the smallest/largest value that one of the variables evaluates to.

* Fix for Driver F-Curve colouring bug 
Newly added drivers did not get automatically coloured in the Graph Editor properly. Was caused by inappropriate notifiers being used.


Notes:
* This commit breaks existing 2.5 files with drivers (in other words, they are lost forever). 
* Rigify has been corrected to work with the new system. The PyAPI for accessing targets used for the variables could still be made nicer (using subclassing to directly access?), but that is left for later.
* Version patching for 2.49 files still needs to be put back in place.
2010-01-04 21:15:45 +00:00
Campbell Barton
c79cf56b69 dict.get() defaults to None as the second arg. no need to supply it. 2010-01-04 21:10:51 +00:00
Campbell Barton
589b2b4ca8 object.group_users, object.scene_users
utility functions to find the groups and scenes this object is used in.

button to set the group location from the cursor (UI is horrible but not any nice place to add?)

smarp project would fail if there were linked meshes in the scene, made ID.tag ignore the library, so you can tag linked data since its only for tools to use.

normalize the vertex normal before setting and use inline vector functions.
2010-01-04 15:37:22 +00:00
Campbell Barton
24a2c6e9bc bound box check for retopo grease pencil convertsion before spline intersection checking 2010-01-03 13:17:12 +00:00
Campbell Barton
18d37648ba grease pencil retopo improvement: join lines when endpoints match are close and are co-linear within some error limits.
still very slow, needs some speedups.
2010-01-03 01:30:07 +00:00
Campbell Barton
d8d11c55d9 patch from Cessen
Adds a new set of bones to rig types which are to be used for weight paint vgroups, in some these have some more segments to account for twist. also use Aligoriths new copy transform constraint.
2010-01-02 23:43:46 +00:00
Campbell Barton
04d0261c37 new python submodule. eg.
from bpy.app import binary_path, version, version_string, home

can add constant variables from blender here as needed (maybe functions too... bpy.app.memory_usage() ?)
2010-01-02 23:14:01 +00:00
Campbell Barton
e7d863cee5 editbone.transform(matrix) function, requested by Cessen.
Also added matrix.median_scale attribute to get the average scale from the matrix, use for scaling bone envalopes.
2010-01-02 22:47:56 +00:00
Campbell Barton
cef8b2088f sphinx support for documenting multiple return values 2010-01-02 18:55:07 +00:00
Campbell Barton
453945e9e3 remove python api cruft from custom operator registration 2009-12-30 22:51:44 +00:00
Martin Poirier
b00cddeb66 Macro registration using the normal rna registration methods (like operators).
bpy.types.register(MacroClass)

instead of

bpy.ops.add_macro(MacroClass)

The rest is unchanged.

Also remove some now unused code for the old registration methods (there's still some remaining).
2009-12-30 22:14:32 +00:00
Campbell Barton
c72089df50 - deform types for copy, arm and leg, patch from Cessen (with slighy modifications)
- bone.center attribute
2009-12-30 18:39:02 +00:00
Campbell Barton
98f1d6957e new python module constants
* bpy.home - result of BLI_gethome()
* bpy.version - BLENDER_VERSION/100, BLENDER_VERSION%100, BLENDER_SUBVERSION
* bpy.version_string, as above, formatted: "%d.%02d (sub %d)"
2009-12-28 10:00:04 +00:00
Campbell Barton
0767cdd4a0 Transfer Shape Key
Useful if you have 2 different characters with the same base mesh (matching indicies), and want to copy a facial expression for eg, from one to another.
Durian request to re-use shapes between characters. 

* Copies the active shape to other selected objects
* Different methods to apply the shape
* * OFFSET, simple translation offset
* * RELATIVE (EDGE/FACE), Use Barycentric transformation to copy the shape. This means the target mesh can be a different orientation and scale and the shape should still apply since the surrounding geometry is used as a basis for the offset.

bug: barycentric transform's depth was inverted.

Note:
* This isnt added into a menu yet,
* This cant be redone since adding a shape key messes up the redo stack. needs fixing for other scripts too.
2009-12-27 11:14:06 +00:00
Campbell Barton
5689ab3975 classmethods were excluded from docs, hide self & cls arguments for functions and class methods,
made some rna ui funcs not display as optional.
2009-12-26 17:49:08 +00:00
Campbell Barton
24ab5416da * sphinx docgen *
py_function_args wasnt working right (was using function namespace for function args), use pythons inspect module instead.
move the function to get a type description into rna_info
2009-12-26 16:47:25 +00:00
Campbell Barton
944a4f2a3f pep8 edits, removed MakeCursor.py and rna_array.py, not important to make pep8 2009-12-26 09:36:50 +00:00
Campbell Barton
5afd084513 replace dynamic_menu.py with Menu classmethods much less complicated.
access append/prepend eg.

bpy.types.INFO_MT_file_import.append(lambda self, context: self.layout.operator("import_some.format"))
2009-12-25 22:16:19 +00:00
Campbell Barton
be67970303 fix for [#20244] importing .obj without "Object" option checked crashes blender 2009-12-25 20:40:00 +00:00
Campbell Barton
4c5a314fef update rna_info and rna_rna for better introspection 2009-12-25 14:42:00 +00:00
Campbell Barton
4f3c477a85 fix for segfault getting RNA Enum default values, minor updates to introspection class 2009-12-25 09:01:23 +00:00
Campbell Barton
5f4e24d599 operator draw function working again. needed to add layout to the operator to give access to "self.layout" - like panels, headers and manu's have 2009-12-24 21:17:14 +00:00
Campbell Barton
bbe13e7823 * register operators like other classes
* operators now return sets (converted into flags)
* can't remove bpy_operator_wrap.c since macro's still use the custom register funcs
2009-12-24 19:50:43 +00:00
Campbell Barton
5bdcb2dff2 py error fix and minor changes to rna info class 2009-12-21 23:14:16 +00:00
Campbell Barton
7e8af5868e utility module for introspecting RNA for doc generation. 2009-12-19 13:48:50 +00:00
Campbell Barton
0c813b2a0e autorigging front end, access in pose mode armature panel (at the bottom)
demo: http://download.blender.org/durian/metarig_demo.ogv
sintel base rig also, would like to include more generic/simple rigs eventually
2009-12-17 19:48:30 +00:00
Campbell Barton
4cddc9e146 rescale metarig types to roughly match 1.0 == 1m for body parts, also fix py error with bone UI 2009-12-17 13:17:24 +00:00
Campbell Barton
c3b978828c pep8 corrections and no need to use C's _OT_ syntax when accessing operator names from py 2009-12-17 01:21:55 +00:00
Campbell Barton
bcb5f8ea12 Update 2.4x script: UV Follow active quads initial port thanks to Michael Williamson, added operator option, reporting, menu, edge length option myself. 2009-12-16 21:27:07 +00:00
Campbell Barton
3ea2d08e1a pep8 changes 2009-12-16 13:27:30 +00:00
Campbell Barton
b0abe98d59 - original bones in last layer
- dont rename root bone
- use Rigify exceptions
2009-12-15 18:53:16 +00:00
Campbell Barton
e7b4d36fd6 * new metarig type for the durian dragon leg (original rig by Cessen)
* option to roll the delta of the arm rig.
* fix to copy metarig type
* renamed EditBone.align() --> EditBone.align_roll()
* Added EditBone.align_orientation(other)
* Added bone.vector: same as (bone.tail - bone.head)
2009-12-14 20:56:19 +00:00
Campbell Barton
d725fdb612 missing import 2009-12-14 14:51:42 +00:00
Campbell Barton
d88c776614 edits to the bone copy metarig type from Cessen, pointcache warning fix 2009-12-14 14:42:46 +00:00
Campbell Barton
3bf27683be automatic layer placement, users can set the layers if they want.
predefined layer types 'main', 'extra', 'ik', 'fk'
2009-12-14 14:21:06 +00:00
Campbell Barton
9f965ba62b pep8 warnings, remove unused imports 2009-12-13 22:48:11 +00:00
Campbell Barton
3449d3f9b3 use python3 syntax for defining a set. 2009-12-13 16:20:18 +00:00
Campbell Barton
7fc4ab2aab add pep8 headers so these scripts spit out errors when running pep8.
made some changes but mostly these scripts will give pep8 warnings.
2009-12-13 14:38:30 +00:00
Campbell Barton
a1656300ba script for automating pep8 checks.
On ubuntu/debian install these tools...

   sudo apt-get install pylint pyflakes python-setuptools python-pip
   sudo pip install pep8

then run from blenders source dir...
   python release/test/pep8.py

This searches for the comments "# <pep8 compliant>" and "# <pep8-80 compliant>", running the checking tools on these scripts only.

* some minor pep8 corrections too.
2009-12-13 13:59:16 +00:00
Campbell Barton
c1bfd014bd * rna: memory leak fix for RNA_property_enum_value()
* rigify: generate root-most bones before children, this makes parenting to dynamically created bones work.
2009-12-13 12:26:19 +00:00
Campbell Barton
026364dcca rigify
* optional default blend argument, use for better leg & arm defaults
* way to define arbitrary options for bones that can then be passed to the generator function, only used to set elbow target parent at the moment.
2009-12-11 16:30:27 +00:00
Campbell Barton
fb28896cf7 * added an armature submenu where python defined armatures can go.
* bpy.utils.display_name(), which makes filenames and module names look nicer in menus eg... /home/me/foo_bar.py  --> "Foo Bar"
* missing rna_path --> data_path renaming
2009-12-11 14:16:59 +00:00
Campbell Barton
8b32402f38 * root bone override fixed
* delta was disabled
* simple copy metarig type
* proper exception when a type isnt found
2009-12-10 23:24:31 +00:00
Campbell Barton
97abf6ad96 * rename 'rna_path' --> 'data_path', rna and dna are for internal use and are not descriptive.
* armature.pose_position: POSE_POSITION, REST_POSITION --> POSE, REST
* rigify now forces rest pose mode
* updated neck_flex to keep original bones unchanged
2009-12-10 22:23:09 +00:00
Campbell Barton
2576268fb8 missed a header last commit, added custom exceptions to rigify so they can be caught and converted into reports and have normal errors display the stack trace as useual. 2009-12-10 18:28:22 +00:00
Campbell Barton
5c5ec6f0a7 fix for some errors and local root bone override 2009-12-10 14:32:37 +00:00
Campbell Barton
aaa181818e missed editing the sample rigs, Cessen likes palm_curl.py better 2009-12-10 13:45:16 +00:00
Campbell Barton
e93c0e4ecf renaming metarig types since we may well have multiple arm/finger/leg types 2009-12-10 13:34:21 +00:00
Campbell Barton
6e6e675191 move generic functions out of rigify's __init__.py into rigify_utils.py since rigify its self does not use them, only some of the metarig types. 2009-12-10 12:58:03 +00:00
Campbell Barton
f26e188a7c - rigify context changes & example for delta
- sequencer transform had 0.0 for rotation minimum
- missed icon rename in last commit
2009-12-10 11:56:31 +00:00
Campbell Barton
3535be3f6f patch from Cessen, tweaks and fixes to metarig elements 2009-12-09 22:44:26 +00:00
Campbell Barton
daf043b3fe if bone type root is defined, all new parentless bones become children of it 2009-12-09 15:13:03 +00:00
Campbell Barton
5dd68e8cb6 some more rig options, fix typo 2009-12-09 14:29:55 +00:00
Campbell Barton
a41131db24 - added editbone.matrix, readonly, utility property that calculates the matrix from the bone roll
- spine fixes
- arm now uses the average Z axis to place the poll target
2009-12-09 14:25:56 +00:00
Campbell Barton
d6c583cc54 - use the bone that the type was set for automatic assigned blending property (when blending 2 chains)
- delete the type property from the generated rig so running again wont confuse things
2009-12-09 12:36:13 +00:00
Campbell Barton
0e713ba1d0 - rewrote arm rig so it creates 2 chains and blend them automatically (like the leg)
- use reverse order for palm fingers (pointer first)
- allow copying bone class instances to exclude some bones
- doc generation had a python error (incedently updated online docs linked from the splash)
2009-12-09 12:00:28 +00:00
Campbell Barton
ee74e720a8 - modify for Cessens updated spine
- Neck example didnt account for some possible problems when linking to the body
- foot IK were referencing the wrong bones
- updated some example rigs
- graph constraint arrow direction was incorrect
2009-12-08 17:00:53 +00:00
Campbell Barton
fb7fed6706 minor fixes 2009-12-08 14:02:06 +00:00
Campbell Barton
fccceaa87f - pyrna support for (value in array), currently only 1 dimensional arrays.
- use python malloc's in bpy_array.c
- automatically blending bone locations is disabled if the target bone has locked location
- neck had incorrect roll
2009-12-08 09:40:30 +00:00
Campbell Barton
f4fa39a551 white space commit (spaces -> tabs and clearing whitespace) 2009-12-08 07:11:43 +00:00
Campbell Barton
ce49719a0c use the SUM driver type to avoid adding all values on each bone.
also avoids hitting the 255 string limit if you want to add 100's of values. eg.
>>> b05/max(0.001, [globals().update({"LOCALS":locals(), "ADD":float.__add__, "reduce":__import__("functools").reduce}), 0.0][1], max((, [LOCALS["b%.2d" % (i+1)] for i in range(5)])))

Since this more simple expression reaches the limit fairly quick...
>>> b05/max(0.001,b01+b02+b03+b04+b05)
2009-12-07 20:49:12 +00:00
Campbell Barton
f8f7f57557 - bone.basename now only gets the name before the first '.', since names like finger.01.L are common
- updated delta not to remove a bone
- spine and neck rigs interpolation bones are now axis aligned to the control bone
- palm tag is expected on the pointer finger rather then the wrist
- operate on bone children first working up the chain (not essential but more pradictable)
2009-12-07 17:21:30 +00:00
Campbell Barton
926201acf8 - string copy without .py wasnt terminating the string
- console import autocomplete wasnt including modules defined in C like BGL, Mathutils
2009-12-07 14:09:53 +00:00
Campbell Barton
750764f411 rna flag PROP_ENUM_FLAG which makes rna props a tuple of enums when converted into a PyObject
only used by wm.invoke_props_popup() currently
2009-12-07 00:16:57 +00:00
Campbell Barton
062cf438ce remove nasty hack which made StructRNA class instaces have no __dict__,
use __slots__, it seems all the parent classes need to have slots as well for this to work.
all python defined srna classes are checked for this too
2009-12-05 23:41:45 +00:00
Campbell Barton
5ebe54f470 pep8 edits and fix some warnings 2009-12-05 22:03:07 +00:00
Campbell Barton
651336d5df fixes for automatic tests and some errors in last commit 2009-12-05 20:45:51 +00:00
Martin Poirier
bcd1ab54cd Support for the C Macro system in Python.
Basic definition works like a python operator but you derive from "bpy.types.Macro" instead.
Operators are added to the macro after it has been added with "bpy.ops.add_macro" through the class method "define" which takes an operator id and returns an OperatorMacroType (new RNA type) for which properties can then be defined to be passed to the operator when run.

Example: http://blenderartists.org/~theeth/bf/macro.py

Using this system, it should be easy to add an operator to the console that converts selected lines into a macro or even a more generic record macro system.
2009-12-05 19:27:26 +00:00
Campbell Barton
65edb7341f split up metarig hierarchy evaluation and modifying the metarig into 2 steps,
original bone names cant be changed anymore but this means the bones can be re-parented without confusing scripts that run after the rig is modified.
support for defining a bone to have multiple types and  automatically blending between 2 generated rigs
2009-12-05 19:26:28 +00:00
Guillermo S. Romero
648122b1a2 String fix and a bunch of PEP8 issues I had collected in the meanwhile. 2009-12-04 17:54:48 +00:00
Campbell Barton
19c0a169b8 touches for demo'ing 2009-12-04 16:35:31 +00:00
Campbell Barton
a9b9993414 rna function
editbone.align(vector), to align the bones z axis to a localspace direction.

finished leg rig pose mode data
2009-12-04 02:32:34 +00:00
Campbell Barton
ab1290d62e leg rig type & metarig example, still need to add IK's
fixed some small bugs too.
2009-12-03 22:44:11 +00:00
Campbell Barton
3b0e182f71 - property decorators for setting attributes didnt work, hack to prevent every instance of an BPyStructRNA to have its own dictionary, set the tp_dictoffset to 0. attempted to use __slots__ but this doesnt work for some reason.
- made bone.length writable
2009-12-03 21:53:01 +00:00
Campbell Barton
685d418f3a - curve geometry curve panel wasnt displaying with no active spline
- graph export didnt work for constraints with no subtarget
- utility functions for duplicating a set of bones and blending between 2 sets
2009-12-03 14:20:35 +00:00
Campbell Barton
7706261e79 change bone storage class so __slots__ can be used for looping over attributes without getting functions 2009-12-02 19:13:54 +00:00
Campbell Barton
e2450e4dd9 multiple script paths broke text template menu 2009-12-02 16:11:10 +00:00
Campbell Barton
ce36cdac04 - bpy.data.add_armature()
- rigify testnig function, creates all example metarigs, processes and generates graphs for before and after.
2009-12-02 15:37:07 +00:00
Campbell Barton
2bf618368a - include example input rigs for each autorig type, running metarig_template() in each submodule generates the armature and pose bone ID properties.
- rigify.write_meta_rig() exports rigs as python scripts
2009-12-02 11:55:47 +00:00
Campbell Barton
8c5d021d19 rename armature RNA props
armature_matrix --> matrix_local
armature_head --> head_local
armature_tail --> tail_local
2009-12-02 10:32:39 +00:00
Campbell Barton
50c8c28c60 - finished spine rig generator, (drivers, constraints)
- bug with args passed for class slots being modified in place.
- sort graphviz bones & drivers (useful for diffing 2 armatures)
2009-12-02 02:56:22 +00:00
Campbell Barton
c27f3adadc - rig spine type WIP, editmode done, still needs pose constraints and drivers.
- bone.translate(vec) utility function
2009-12-01 22:45:56 +00:00
Campbell Barton
48398c978e more small fixes 2009-12-01 12:43:06 +00:00
Campbell Barton
2afc967a2f small fixes, also option for fake parent so hierarchy is always from the parent down 2009-12-01 12:25:59 +00:00
Campbell Barton
0391000c4e export an armature to graphviz showing hierarchy, constraint and driver relationships, useful for understanding other peoples complicated rigs.
can be extended for 2.4x oops like graph too/

Example of Cessens spine rig
http://www.pasteall.org/pic/show.php?id=378
2009-12-01 12:02:23 +00:00
Campbell Barton
99e765ee00 added autorig neck type
new bone properties
- bone.basename (name without the extension), "Some.Bone.001" --> "Some.Bone"
- bone.children_recursive_basename, gives a chain of children that have the same basename
2009-12-01 00:44:53 +00:00
Campbell Barton
33c444f965 User Script support added back.
- the scripts path set in the user preferences or ~/.blender/scripts/ui (io, op, io etc..) will be used to load scripts.
- the default home dir part probably only works in *nix os's

- Added a missing sync callback to vector.toTuple()
2009-11-30 22:32:04 +00:00
Campbell Barton
a2140192fe convert rigify into a package. advantage is new types can be added into the package without modifying any existing files, the bone 'type' property will find the matching submodule 2009-11-30 12:31:11 +00:00
Campbell Barton
e1ba5517e6 better remove doubles for retopo, use 15th the of the average of both splines lengths (less scale dependant) 2009-11-30 11:18:46 +00:00
Campbell Barton
e526047061 retopo: use a smaller scale for faces that are modeled where 1.0==1m, will eventually try to use a method that doesnt depend on scale like this
grease pencil point.co wasnt a vector when it should be
2009-11-30 10:21:42 +00:00
Campbell Barton
9b0a3ee9ce previous commit for retopo converted the strokes into a curve first, better to use the grease pencil data directly. renamed coordinates --> co, matching mesh verts 2009-11-30 02:34:49 +00:00
Campbell Barton
dc1af66d8a - grease pencil drawing on the surface of objects (only when enable face snap & projection, a bit hidden I know)
- retopo operator to convert grease pencil drawn topology into geometry, not in the convert menu yet since its not quite finished, use the operator search menu for retopo. will test this week and see what needs fixing.
2009-11-30 01:13:46 +00:00
Campbell Barton
2bef608fb3 - new objects added from the rna api defaulted to quat rotation, not even using an identity quat.
- making meshes in python isnt nice at the moment, added a helper function.
    mesh.from_pydata(verts, edges, faces)
2009-11-29 23:14:41 +00:00
Campbell Barton
2e61294cbc simple fixes
[#20123] "Import" menu entry becomes empty
[#20141] In Object menu Make Links appears twice - SVN 24970

also moved OBJs name cleaning func to bpy.utils.clean_name(name, replace="_")
2009-11-28 20:50:31 +00:00
Campbell Barton
c3884d9547 shoulder improvements, fixes for linking arm/palm/finger together 2009-11-27 17:07:50 +00:00
Campbell Barton
552134db45 new palm rig type + some refactoring to make names less confusing for the arm rig
linked text would not run
2009-11-27 13:24:04 +00:00
Campbell Barton
68b100232b basic support for Sintels arm rig with property driven ik/fk switching and stretch bones to display connections, still need to do shoulder hinge and hand delta offset bones 2009-11-26 13:36:15 +00:00
Campbell Barton
b40307df16 add access to bone add/remove from rna. eg.
bone = arm.edit_bones.new("SomeBone")
 arm.edit_bones.remove(bone)

regify (WIP)
2009-11-25 11:05:11 +00:00
Campbell Barton
ff5276b0ce - use a generic bone class so all 3 bone types (Edit/Pose/Armature) - can have the same utility functions, length, parent_recursive, parent_index(), etc
- change the wiki url to avoid redirects (from Luka)
- removed pose prefix from pose_head/pose_tail/pose_matrix
2009-11-24 11:58:49 +00:00
Campbell Barton
d55ac4da2b - added rna api function scene.update(), needed for rig generation to update driver deps
- removed some warnings
2009-11-24 09:24:32 +00:00
Campbell Barton
727d9bb059 rig-generation from metadata, the idea is to input a simple rig with metadata matching preset definitions
these are applied by adding constraints, drivers, control bones etc. making it possible to re-apply changes & improvements to many rigs at once.

testcase makes a finger rig (like in BBB) from 3 bones, the base tagged with an id property "type":"finger".

still missing is a way to update the driver dep's


also fixed an error  in the property UI when the active bone is not on the active layer.
2009-11-24 00:02:21 +00:00
Campbell Barton
e968017951 - new pyrna api functions srna & prop path_to_id(), useful when setting driver target paths.
This means you can have a pose bone for eg and get the path...
   pose.bones["Bone"]
 uses rna internal functions, so will work for sequence strips etc.

- StructRNA.get(), used for getting ID props without exceptions...
 val = C.object["someKey"]
 or..
 val = C.object.get("someKey", "defaultValue") # wont raise an error

- change rna property for testing if rna props are editable, test the flag rather then calling the function since the function depends on blenders state.

- fix a python exception with the ID-Property popup UI (when editing in more then 1 step)
2009-11-23 23:17:23 +00:00
Campbell Barton
66a013b06a use decorators for python attributes, added bone.length 2009-11-23 16:04:19 +00:00
Campbell Barton
cb51710f25 pose_bone attributes, children, children_recursive, parent_recursive & parent_index() function. 2009-11-23 14:58:27 +00:00
Campbell Barton
e9db9f2a91 - made properties in the view3d panel only show when there are some properties available since this the option to add props isnt in this panel
- remove print on startup
2009-11-23 13:06:26 +00:00
Campbell Barton
e0fc6d0c33 more ui api changes.
- remove functions such as operator_int(), operator_enum(), operator_string
  this mixed with keyword arguments in a way that made them hard to read.
  Instead, have operator() always return properties rather then needing an argument.

- rename prop_pointer() --> prop_object(), pointer is more a C thing.

- missed item_enumR(), rename to prop_enum()
2009-11-23 11:43:38 +00:00
Campbell Barton
caab05ec8c rna UI api rename...
note: this aims to follow pep8 however I chose to use 'prop/props' rather then 'property/properties' because it would make function names too long.

itemR() --> prop()
items_enumR() --> props_enum()
item_menu_enumR() --> prop_menu_enum()
item_pointerR() --> prop_pointer()
itemO() --> operator()
item_enumO() --> operator_enum()
items_enumO() --> operator_enums()
item_menu_enumO() --> operator_menu_enum()
item_booleanO() --> operator_boolean()
item_intO() --> operator_int()
item_floatO() --> operator_float()
item_stringO() --> operator_string()
itemL() --> label()
itemM() --> menu()
itemS() --> separator()

batch script used http://www.pasteall.org/9345
2009-11-23 00:27:30 +00:00
Campbell Barton
771406df94 - hide members of bpy from dir() and autocomp.
- path functions bpy.utils.script_paths(), bpy.utils_preset_paths(subdir)
- further simplified presets, use a generic draw function for preset menus and define the preset subdir and operator in the class
2009-11-22 11:23:19 +00:00
Campbell Barton
1dfbf3a9f6 - aspectx wasnt saved in the render preset
- define a preset base class
- cleanup some comments and whitespace
2009-11-21 23:55:14 +00:00
Campbell Barton
5e7debcecf render presets, select from a directory, button to add own presets 2009-11-21 21:39:20 +00:00
Campbell Barton
34e7eb1676 use a metaclass to have operator attributes register and display in the order defined. 2009-11-20 20:58:46 +00:00
Campbell Barton
512c06afdb - StructRNA's __dir__ was missing members from its classes __dict__
- property editor can now set button min/max values and edit the tooltip
- custom props tooltips were not displayed
- cleanup the property UI 
- remove hacks that were used for editing (edit is now a popup operator)
- object.children was broken
2009-11-19 18:22:21 +00:00
Campbell Barton
e61c90e416 operators were copying the properties from the rna operator into the class instance.
however this meant the invoke function could not modify properties for exec to use (unless it called exec directly after)
since the popup for eg would re-instance the python class each time.

now use the operator properties directly through rna without an automatic copy.

now an operator attribute is accessed like this...
self.path --> self.properties.path
2009-11-19 17:12:08 +00:00
Campbell Barton
3f10b91235 operator properties were not the correct type 2009-11-19 16:15:22 +00:00
Campbell Barton
ae5a814f26 ID properties that are displayed via RNA can now define their own UI settings,
only implimented min/max precision & step.

at the moment there is no way to edit these other then via python

example of setting UI limits...

>>> C.object['foo'] = 0.5
>>> C.object['_RNA_UI'] = {'foo': {'step': 0.5, 'soft_max': 10.0, 'soft_min': 0.0, 'precision': 2, 'description': 'Some setting'}}

Also fixed typo's: precission -> precision
2009-11-18 20:01:35 +00:00
Campbell Barton
318e9aa5d1 - rna attribute setting problem, class instances could not set their own attributes because they are blocked by our own internal setattr.
this could be supported again easily however it leads typo's & api changes not showing any errors.

  This broke povray export.
  Solution for now is to allow setting private properties starting with '_'

  eg, 
    ob = bpy.context.object
    
    ob._foo = [1,2,3] # this is a python list, it will stay only as long as this PyObject is active
    ob.foo = 1 # raises an error!, only for rna properties
    ob["foo"] = 1 # converts to an ID property and is saved

    using the underscore like this should really be used for classes internally.

- povray failed on armatures

- menu key wasn't using WM_keymap_add_menu
2009-11-18 08:40:18 +00:00
Campbell Barton
2ae15e39ad make animation system and rna internals use getattr style syntax for user defined properties
bone["foo"] rather then bone.foo
matches python and avoids naming collisions
2009-11-17 20:46:59 +00:00
Campbell Barton
64104524cc fix for error editing a string property with quotes 2009-11-17 13:18:26 +00:00
Campbell Barton
f7682e2e0f - in pose mode, pose bone properties are edited rather then armature bone
- new id property array method convert_to_pyobject()
- editing an array in the UI broke
- fixed for own error when updating ID prop api
2009-11-17 12:54:29 +00:00
Campbell Barton
cf26cdd508 nicer UI, allow editing of values without pressing edit for basic types 2009-11-17 10:30:54 +00:00
Campbell Barton
7636d17af6 property editor for bone and object ID props, add/remove/edit
good example of how editing NON rna data results in very weired scripts :/
2009-11-16 22:53:28 +00:00
Campbell Barton
d04f94d0c6 skip rna property & function lookups for members starting with "_" (since makesrna disallows this)
added a way profile python startup in bpy/__init__.py, if'd out by default.
2009-11-14 23:11:46 +00:00
Campbell Barton
5a322bd67c F8 reload works again, script errors are printed but dont stop loading every other script 2009-11-13 11:10:29 +00:00
Campbell Barton
4c7dc3e5c5 changes python initialization
- bpy is now a python package, this makes it easier to add utility modules and adjust python startup which was previously using verbose Py/C api. Access should not be any slower since both C and Python modules use dictionary access.
- loop over scripts and load via python (currently F8 reload isnt working, will add back shortly)
- the C module is kept but renamed to _bpy and not meant for direct access from anything but the bpy package.
- bpy_types.py is an exception since it runs before the bpy package is initialized.
2009-11-13 09:28:05 +00:00
Campbell Barton
5816912dc1 - In the context, EditBones and Bases were set as 'RNA_UnknownType', replaced with propper types.
- renamed RNA_Base to RNA_ObjectBase
- only include id_data for the python api's autocomplete if it has an ID type set.
2009-11-11 09:16:53 +00:00
Campbell Barton
7efc2c2375 modify the python context access so invalid names will raise an exception rather then returning None.
this way the UI scripts are less likely to fail silently and wont let typos work ok.

also allow subclassing of the context, added a copy function,
 bpy.context.copy(), returns the context as a python dict to be modified and used in python.

This also showed up an invalid brush member in the screen context.
2009-11-10 15:09:53 +00:00
Campbell Barton
fac2ca1c7c bpy/rna api class feature
- python defined classes will be used when available (otherwise automaically generated metaclasses are made as before)
- use properties rather then functions for python defined rna class's
- call the classes getattr AFTER doing an RNA lookup, avoids setting and clearing exceptions for most attribute lookups, tested UI scripts are ~25% faster.
- extending rna py classes this way is a nicer alternative to modifying the generated metaclasses in place.

Example class

--- snip
class Object(bpy.types.ID):

    def _get_children(self):
        return [child for child in bpy.data.objects if child.parent == self]

    children = property(_get_children)
--- snip

The C initialization function looks in bpy_types.py for classes matching RNA structure names, using them when available.
This means all objects in python will be instances of these classes.
Python properties/funcs defined in ID py class will also be available for subclasses for eg. (Group Mesh etc)
2009-11-08 01:13:19 +00:00
Campbell Barton
4e61f8a836 pep8 whitespace commit
bpy/rna api (no functionality change, just move getting the srna py base into a function)
2009-11-07 22:07:46 +00:00
Campbell Barton
f25bc95688 missed committing this file (from Stani's patch) 2009-11-07 14:17:49 +00:00
Campbell Barton
e2f01e4c7c api changes suggested by Stani 2009-11-06 22:42:15 +00:00
Campbell Barton
cc2476fde5 patch from Stani, support for function arguments in autocomplete 2009-11-06 08:53:07 +00:00
Campbell Barton
be4ceb5fdf Select interior faces, access from the mesh select menu
new mesh functions, remove duplicates in uvproject and mesh_skin
- face.edge_keys()
- edge.key()
- mesh.edge_face_count()
- mesh.edge_face_count_dict()
2009-11-05 12:37:49 +00:00
Campbell Barton
3fa8959bb5 - move WM operators out of bpy_ops.py into their own file
- fix operator template
2009-11-04 20:21:08 +00:00
Campbell Barton
65f92c893e - remove UV mapping operator, call a header menu directly (so python can add items there)
- forgot to move bpy_sys.py last commit
2009-11-03 18:20:03 +00:00
Campbell Barton
6680dcd24a renamed bpy.sys to bpy.utils, since it used to be a attempt to replace pythons sys which is bundled now 2009-11-03 18:08:25 +00:00
Campbell Barton
da1765765b many operators uses Bases, for the python to set operators context python too needs to be able to access bases.
- added scene.bases (like scene.objects)
- renamed group create operator.

Example
 scene = bpy.data.scenes[0]
 C = {}
 C["scene"] = scene
 C["selected_editable_bases"] = [scene.bases[2], scene.bases[3]]
 
 bpy.ops.group.create(C)


Also made operator fake modules not return __call__ (reported by Stani, fixes autocomp. bug)
2009-11-02 11:14:22 +00:00
Campbell Barton
dd130350d5 make python operator instances subclasses of the wmOperator when called.
was subclassing the operator's type before.

Removes the need for passing self.__operator__, can pass self directly.
2009-11-02 08:32:00 +00:00
Martin Poirier
9ea292290b Correct GPL license header for all python scripts 2009-11-01 15:21:20 +00:00