Dev:Source/Development/Todo/Scripting
< Dev:Source | Development | Todo
テンプレート:Dev:2.5/Source/Development/Todo/index
目次
Unstable or poorly tested
- BMesh operators currently use int's for enums that have undocumented values. T34914
Fixes that still need doing.
Internal API Problems
- Class registration needs to be reworked. as well as some internal bugs fixed.
- RNA api has a bug where 'raw_type' defaults to INT but is not set for MFace verts in makesrna.
- ID data returned from functions is not included unless the type is an ID itself.
Returning a mesh will work but not a meshes face for eg.
see bpy_rna.c - /* XXX this is missing the ID part! */ - Dynamic enums currently refer to invalid memory when accessed from python, we need a way for python to hold the memory until its done with the dynamic enum.
Low Priority Py API
- Re-Registering classes leaks memory, would be good to resolve this. (see comments in bpy_rna.c)
- 'Safe Mode' - where writes to invalid memory are detected.
- Implement import hooks rather than replacing import/reload http://www.python.org/dev/peps/pep-0302/
Python/RNA API Design TODO
- Add a way to cancel running scripts from the user interface, with no console this becomes very problematic (Esc --> KeyboardInterrupt for example).
- Currently there is no way to write packed images from blend files, support for this should be added to exporters. eg: image.pack_write("somepath.png")
- Addressing operators/panels/menus, should we translate all names from
SOME_MT_menu --> some.menu, ONE_PT_panel --> one.panel ?<r>would mean the UI code could reference them by this more pythonic syntax. - need to decide how 2.4x api's will fit in with new apis. PyNodes, PyConstraints.
- convenience function to get selected verts/edges/faces to prevent expensive iteration over meshes. Something like: me.verts.selected
- Design a method to allow custom UIs to filter properties/options. Useful for Blender GE too (example: which constraints are supported (T26804). Complex matter for which rna needs to be extended?
- Zero bytes are not supported in RNA byte string types: (T32581)
- Better python API and undo stack integration, see T38386
Inconsistencies
- bpy.ops.mode_set(...) has different mode-names than bpy.context.mode. E.g. TEXTURE_PAINT vs PAINT_TEXTURE
CoDEmanX: Getting mode from bpy.context.mode for mode_set() is inappropriate, use bpy.context.object.mode instead! - bpy.ops.object.move_to_layer() takes a boolean array of 20 elements (like in Blender GUI), but most functions require 32 elements. bpy.ops.object.add() for example.
- bone.matrix returns a matrix, but requires a list when assigning to it. This also goes for some of the other matrix attributes of bone, editbone and posebone. [appears to be resolved as of 2.67?]
- the term 'size' is used incorrectly in some cases, where it should be 'scale' instead. Review and correct: [1]
- keyframe_insert(), options for insert or replacing existing keyframes, threshold for detecting doubles see: [2]
- The ID data block path returned by RNA_path_full_ID_py (rna_access.c) for node trees only works for node groups, which are stored as true ID data blocks in bpy.data.node_groups. For material/compo/texture nodes which are part of Material/Scene/Texture respectively the function can not determine the correct path. Best solution would be to get rid of nested ID data blocks altogether T35720
Python RNA access
- Remove mesh vertices / edges / polygons (without bmesh module)
- Shorthand for active vertex / active edge (bmesh module)
- Active vertex / edge index for meshes (like Mesh.polygons.active)
- Remove Shape Key
- Remove Curve Points
- Particle edit mode
- Start/stop the physics sim
- Sculpt mask custom data
- Add / remove rigid body + constraints + world
- Add / remove transform orientation
- Add / remove Text curve object Textboxes
- Add / remove Particle Systems
- Sequencer, ability to load and images T40663
- Pixels and resolution are not available with multilayer EXR or Render Result images T53768
Python Console
- Append to (and remove from?) SpaceConsole .history and .scrollback
- input() is not supported T40592
General todo items
- Operator redo (toolbar) could also change the last InfoWindow print of the python operator equivalent.
- mathutil.geometry.intersect_point_quad_2d works inpredictable for non-concave or quads with singularity edges T30831
- modules/rna_xml.py: BoolVectorProperty and CollectionProperty issue T32882
- Drivers should be able to access self for bones and objects.
- Add the ability to report() without an operator, internally use CTX_wm_reports(C), See: [3]