Commit Graph

126 Commits

Author SHA1 Message Date
Campbell Barton
bcd9b29a0d PyAPI: name OrientationHelper (io prefix in module name already) 2015-01-14 23:55:16 +11:00
Bastien Montagne
edad3f93f6 Py IO utils: Add helper class to handle orientation (axes).
Also 'fix' T43243, since we can easily add a common better behavior now
when both axis settings are incompatible, by systematically changing
the other axis.

Will update 'main' addons in next commit, contrib ones I'll let to the authors
(old behavior is still possible anyway).
2015-01-14 13:10:18 +01:00
Campbell Barton
d47804cb06 correct last commit: less cryptic camera check 2015-01-13 05:55:10 +11:00
Campbell Barton
a4366497db Fix T43206: region_2d_to_origin_3d has no ortho offset
With ortho views the value would be aligned to the 'rv3d->ofs'
Now it works in camera ortho & regular ortho views.
2015-01-13 05:41:56 +11:00
Campbell Barton
20aed660f5 Add missing keymap for paint curve 2014-12-23 20:01:47 +11:00
Lukas Tönne
1e02a5ff43 Fix for object_utils.object_data_add: Now supports None obdata for
creating empties.

The documentation says None is a valid argument for obdata (making
empties), but this would cause an exception. Now obdata is only used
when it is defined. An optional name argument can be passed to override
obdata.name as well.
2014-12-10 17:22:26 +01:00
Joshua Leung
14b951747f Grease Pencil - Storyboarding Features (merge from GPencil_EditStrokes branch)
This merge-commit brings in a number of new features and workflow/UI improvements for
working with Grease Pencil. While these were originally targetted at improving
the workflow for creating 3D storyboards in Blender using the Grease Pencil,
many of these changes should also prove useful in other workflows too.

The main highlights here are:
1) It is now possible to edit Grease Pencil strokes
   - Use D Tab, or toggle the "Enable Editing" toggles in the Toolbar/Properties regions
     to enter "Stroke Edit Mode". In this mode, many common editing tools will
     operate on Grease Pencil stroke points instead.
   - Tools implemented include Select, Select All/Border/Circle/Linked/More/Less,
     Grab, Rotate, Scale, Bend, Shear, To Sphere, Mirror, Duplicate, Delete.
   - Proportional Editing works when using the transform tools

2) Grease Pencil stroke settings can now be animated
   NOTE: Currently drivers don't work, but if time allows, this may still be
         added before the release.

3) Strokes can be drawn with "filled" interiors, using a separate set of
   colour/opacity settings to the ones used for the lines themselves.

   This makes use of OpenGL filled polys, which has the limitation of only
   being able to fill convex shapes. Some artifacts may be visible on concave
   shapes (e.g. pacman's mouth will be overdrawn)

4) "Volumetric Strokes" - An alternative drawing technique for stroke drawing
   has been added which draws strokes as a series of screen-aligned discs.

   While this was originally a partial experimental technique at getting better
   quality 3D lines, the effects possible using this technique were interesting
   enough to warrant making this a dedicated feature. Best results when partial
   opacity and large stroke widths are used.

5) Improved Onion Skinning Support
   - Different colours can be selected for the before/after ghosts. To do so,
     enable the "colour wheel" toggle beside the Onion Skinning toggle, and set
     the colours accordingly.
   - Different numbers of ghosts can be shown before/after the current frame

6) Grease Pencil datablocks are now attached to the scene by default instead of
   the active object.
   - For a long time, the object-attachment has proved to be quite problematic
     for users to keep track of. Now that this is done at scene level, it is
     easier for most users to use.
   - An exception for old files (and for any addons which may benefit from object
     attachment instead), is that if the active object has a Grease Pencil datablock,
     that will be used instead.
   - It is not currently possible to choose object-attachment from the UI, but
     it is simple to do this from the console instead, by doing:
     context.active_object.grease_pencil = bpy.data.grease_pencil["blah"]

7) Various UI Cleanups
   - The layers UI has been cleaned up to use a list instead of the nested-panels
     design. Apart from saving space, this is also much nicer to look at now.

   - The UI code is now all defined in Python. To support this, it has been necessary
     to add some new context properties to make it easier to access these settings.
     e.g. "gpencil_data" for the datablock
          "active_gpencil_layer" and "active_gpencil_frame" for active data,
          "editable_gpencil_strokes" for the strokes that can be edited

   - The "stroke placement/alignment" settings (previously "Drawing Settings" at the
     bottom of the Grease Pencil panel in the Properties Region) is now located in
     the toolbar. These were more toolsettings than properties for how GPencil got drawn.

   - "Use Sketching Sessions" has been renamed "Continuous Drawing", as per a
     suggestion for an earlier discussion on developer.blender.org

   - By default, the painting operator will wait for a mouse button to be pressed
     before it starts creating the stroke. This is to make it easier to include
     this operator in various toolbars/menus/etc.   To get it immediately starting
     (as when you hold down DKEy to draw), set "wait_for_input" to False.

   - GPencil Layers can be rearranged in the "Grease Pencil" mode of the Action Editor

   - Toolbar panels have been added to all the other editors which support these.

8) Pie menus for quick-access to tools
   A set of experimental pie menus has been included for quick access to many
   tools and settings. It is not necessary to use these to get things done,
   but they have been designed to help make certain common tasks easier.

   - Ctrl-D = The main pie menu. Reveals tools in a context sensitive and
              spatially stable manner.
   - D Q    = "Quick Settings" pie. This allows quick access to the active
              layer's settings. Notably, colours, thickness, and turning
              onion skinning on/off.
2014-12-01 01:52:06 +13:00
Campbell Barton
61baf6e813 Fix T41902: Flipped persp/ortho region_2d_to_vector_3d
- Ortho result from view3d_utils.region_2d_to_vector_3d was flipped.
- Persp result wasn't normalized.
- operator_modal_view3d_raycast.py failed for ortho views.

Thanks to Philipp Oeser for the initial fix.
2014-09-22 11:11:45 +10:00
Campbell Barton
dd5acaaa6c Correct Python exceptions
T35358 by Codemanx
2014-08-07 00:44:55 +10:00
Campbell Barton
88f126f2eb Fix missing include 2014-07-22 11:53:24 +10:00
Campbell Barton
a15be34389 Code cleanup: unused python vars & imports
Use frosted rather then pyflakes
2014-04-25 05:36:16 +10:00
Campbell Barton
2a9e33fba5 Keymap: load/save improvements
- avoid passing redundant operator name to keymap property set function.
- avoid double attr lookups when setting each property.
- handle exceptions on value type mismatch.
- avoid resource warning on failed load.
2014-02-19 10:32:23 +11:00
Campbell Barton
aea00c7a81 Code cleanup: style 2014-02-13 08:52:12 +11:00
Howard Trickey
da33a557bc Fixes to make script_load_keymap test pass.
Removed Armature Sketch keymap, as the entries that were there
appear to have been moved to the Armature keymap.
Removed the Script keymap. The Script space is deprecated
and I could find no way that the keymap could be activated.
2014-02-08 10:52:56 -05:00
418aafd503 Fix T38315: keymap configuration export did not export deactivated items correct. 2014-01-22 14:25:43 +01:00
Campbell Barton
61ff3dfdda Code Cleanup: spelling 2014-01-13 15:31:57 +11:00
Campbell Barton
e63d5f2356 Keymap: add walk mode 2013-12-04 00:40:45 +11:00
Sergey Sharybin
be09e694b1 Fix #37338: Add objects from addon work in a Linked Scene
Added a poll function to add object helper which checks
whether scene is linked or not.

All the primitives which are delivered from this helper
will work properly for linked scenes. If there're still
primitives which are not delivered from this class, well
nothing i can do now.
2013-11-07 08:40:47 +00:00
Bastien Montagne
ddcb1166de Fix [#37275] can't import 2.68a keymap
Now exported keymaps will still be usable accross versions, even if some operator properties disappear (write a warning in console in this case, instead of "crashing").

Also factorized a bit of code here!
2013-11-03 18:04:45 +00:00
Campbell Barton
b6631b8be7 fixes for python api docs.
also move foreach_get/set examples into their own py example files (prefer not to have example code built into blenders binary).
2013-09-18 05:20:43 +00:00
Campbell Barton
6895a9f11f fix [#36713] crash from adding gear from 'extra objects' addon 2013-09-12 21:01:27 +00:00
Bastien Montagne
a567dd20c0 More "relpath" try/except protection... 2013-08-18 15:17:33 +00:00
Campbell Barton
4006f8c83b fix [#36455] importing obj data after saving doesn't work 2013-08-15 00:32:12 +00:00
Campbell Barton
1c5b416cbf image_load() utility function's 'recursive' option wasn't functional since 2.4x 2013-08-12 07:48:31 +00:00
Campbell Barton
7132bfe664 fix [#35977] Bake Action doesn't work properly
there are cases where you want to use visual-keying but not remove constraints, also it wasnt obvious that clearing constraints used a different method of keyframing.
So split these into 2 options.
2013-07-04 23:52:02 +00:00
Campbell Barton
564902582c rename world_to_camera -> world_to_camera_view 2013-06-16 14:35:15 +00:00
Campbell Barton
93ba74c20a minor edits to world_to_camera() utility function, include Z so you can tell if the points in font of the camera and avoid divide by zero. 2013-06-13 14:07:36 +00:00
Campbell Barton
f173ff531c handy function for getting the 2d camera coords for a worldspace location.
bpy_extras.object_utils.world_to_camera(scene, obj, coord)
2013-06-13 13:51:01 +00:00
Campbell Barton
de3686ac25 fix [#34851] "UnitSettings.scale_length" not beeing calculated the same way for all objects 2013-05-28 23:07:16 +00:00
Campbell Barton
4ca0df348e move modal view3d keymaps out of main list of keymaps into the view3d section. 2013-04-29 17:59:44 +00:00
Campbell Barton
263ea88392 fix/workaround [#34983] bpy.ops.mesh.primitive_torus_add() ignores rotation-parameter 2013-04-22 20:53:30 +00:00
Campbell Barton
577a1b9239 fix [#34805] Bake action ignores parent motion
in fact this is more feature request.
add an option to bake a parented objects animation, then clear the parent and apply the action.
2013-04-11 08:42:25 +00:00
Campbell Barton
791815c9d4 py api: path_reference_copy() use try/except when copying images, can fail for odd reasons (currently fails if the dest dir is a symlink and not using expected permissions). 2013-04-10 12:16:27 +00:00
Campbell Barton
44a661e6a8 py api: simple function to get an image from an objects for simple formats that only support one image per object. 2013-04-10 11:43:25 +00:00
Campbell Barton
63d523336f freestyle lineset tag attribute was defined but not used, also some code cleanup. 2013-04-07 01:38:03 +00:00
Campbell Barton
98752a1f30 py api additions needed for fixing [#34864].
- add rna property 'as_bytes' method so you can get a string property as python bytes (bypass encoding).
- make bpy.path.abspath/relpath compatible with bytes.
- add 'relpath' option to bpy_extras.image_utils.load_image(), so you can load an image relative to a path.
2013-04-05 00:30:32 +00:00
Campbell Barton
8e3d590b76 code cleanup: python/pep8 and double-promotion warnings. 2013-03-28 19:33:14 +00:00
Campbell Barton
8558fdd4c7 patch [#34437] Fix text editor bug: ctrl+F is not configurable
in fact the keymap editor was missing other keymaps so added these too,
also updated keymap checker to make sure there is no mismatch with region/space types.
2013-02-26 05:22:04 +00:00
Sergey Sharybin
58c9691d19 Correction to own r44749 -- layers from view were always used,
shall use active layer now for real.
2013-02-18 17:51:07 +00:00
Campbell Barton
4cd487d731 checking for V3D_LOCAL was duplicated in transform.c, and both checks not quite correct.
- When checking edimode, make sure its mesh editmode.
- Graph editor supports this option but wasn't being checked.
2013-02-18 15:47:13 +00:00
Campbell Barton
4ae3a28fcb fix bpy_extras.mesh_utils.edge_face_count_dict() helper api function.
it was using tessfaces when theres no need to.
2013-02-18 14:52:49 +00:00
Campbell Barton
4b8fe80e6e code cleanup: use exist_ok keyword arg to os.makedirs() rather then checking if the dir exists first. 2013-02-07 04:02:24 +00:00
Joshua Leung
53de752858 Bugfix [#33946] Bake Action fails in SVN for Objects
The problems here were caused by a cleanup commit (r. 53369).
BTW, the code here is pretty convoluted mess.
2013-01-21 02:40:51 +00:00
Campbell Barton
97d62f0183 style cleanup 2013-01-15 23:15:32 +00:00
Campbell Barton
a404e3f780 fix issue reported in '[#33876] bpy.path.ensure_ext adds extension twice / extra period if filename empty, just a period or equal to extension'
For python operators that used the ExportHelper mix-in class, an empty file field would become '.ext', entering and existing the text field would become '.ext.ext',
Now only add an extension if the filename part of the path is set, so '.ext' will still become '.ext.ext' but having only the extension isn't so likely to happen in the first place now.

This is a different fix then the changes suggested in the report but I'd prefer to keep path functions stupid+predictable.
2013-01-15 04:33:08 +00:00
Campbell Barton
ea2224e28d changes needed for EDL import to work again.
- add sequence.update(data=False) function.
- made some sequence vars editable.
- correct some comments.

also rename rna function sequence.getStripElem() --> strip_elem_from_frame()
2013-01-02 16:15:45 +00:00
Bastien Montagne
c587c985e8 Fix [#33424] Inadequate bake action.
bake_action tries to make kind of a 'visual keying'... On one side, this is rather stupid when you keep constraints (in this case, keying actual loc/rot/scale transforms, i.e. matrix_basis, is enough, doing more would lead to unexpected behavior with some constraints). On the other one, making a good visual keying of bones is *really* tricky, so now using the new object's convert_space() func to compute that (when the user chooses to remove the constraints).

Incidentally, this greatly simplifies the code of bake_action!
2012-12-28 13:34:19 +00:00
Campbell Barton
4fe35721e6 bmesh operator api reference - add in 'bmesh' arg at the start of each operator, also use :class: references. 2012-11-28 01:14:11 +00:00
Campbell Barton
7c3db355b1 remove ifdef'd bevel code, current bevel works better then the previous code.
reduce strlen check in texttool_suggest_add()
use 'del list[:]' rather then 'list[:] = []' in python scripts which clear lists.
2012-11-14 09:45:15 +00:00
Sergey Sharybin
a75f11d036 Fix #32219: Inconsistent influence of Units Scale on new objects
Made it so meshes, curves, surfaces and metaballs are scaling to a grid cell size,
which makes them behave consistently now.

There're still issues to be resolved still:

- Lattice is not scaled to grid cell size yet, it uses slightly different add
  function which makes scaling a bit tricky and hacky. Would prefer to do a
  bit bigger refactor here, so it's a TODO for now.

- Cameras, speakers and other helpers are not scaling. They don't have data
  on which scale could be applied and perhaps it should be some kind of draw
  scale. Also would consider it's a TODO for now.
2012-10-19 12:53:03 +00:00