Dev:Source/Development/Todo/Scripting

提供: wiki
移動先: 案内検索

テンプレート:Dev:2.5/Source/Development/Todo/index

API Documentation

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]