Commit Graph

1208 Commits

Author SHA1 Message Date
Sergey Sharybin
6bfe9266be Color management cleanup and improvements
- De-duplicate code used by color management panel drawing,
  moved this panel to utility file in bl_ui

- Added support of per-window color management control
  which means view transform. exposure and gamma could be
  set per window and all spaces would use this settings.

  This is default behavior for older files now.

- Added support of color management display of movie clips
  in clip editor.

  Supported both texture buffer and fallback draw methods.

- Fixed default values for exposure and gamma
2012-06-30 12:37:41 +00:00
Sergey Sharybin
b57a5521c4 Color management refactoiring and some extra options
- Move space-being settings (such as view transform) into own
  DNA and RNA structure to avoid code duplication in some areas
  and save some arguments on display buffer acquiring function.

  Also added some utility functions to BKE to manipulate this
  settings.

- Replace static sized color managed buffer flags array with
  dynamically sized array which matches actual number of displays.

  Probably this flags better be transfposed so it'll support
  any number of view transforms and 32 displays (currently it's
  other way around). it's runtime flags only, so would be simple
  to change any time.

- Added support of configurable exposure and gamma.

  Changing this settings wouldn't generate new item in cache,
  it'll affect on buffer with the same color spaces conversion.

  It'll also run full color transform from scratch on every run,
  this could be changes in a way that it'll re-use color managed
  buffer, but from quick glance it doesn't give really noticeable
  boost.

  Currently this settings are stored as pointer in ImBuf structure
  itself. Probably it make sense removing them from ImBuf and make
  moviecache be able to store some kind of tags associated with
  cached ImBuf.
2012-06-30 12:37:16 +00:00
Sergey Sharybin
d0f67e498e Color management fixes and improvements
- Made color management cache safe for situations when one area
  requested a display buffer, then some changes were done which
  invalidated cache, other area requested display buffer which
  changed cached buffer.

  Suck case could be fatal for first used of display buffer,
  which didn't happen yet because cache is being accessed from
  main thread only, but better to keep this things completely
  thread save to avoid headache in the future.

- Baked RRT transformations, which gives ~3-4 times boost
  hopefully without visible artifacts.

- Added support of partial updates to display buffers.

  This would create special context which hols display buffer
  which imbuf had to the time of creating this context and
  later this context would allow to run a color correction
  from given linear buffer within given region.

  This is being used by compositor to enable more realtime
  display update when compositing.

- Added support of color management backdrop for nodes editor.

  There's now special menu called display properties in N-panel
  of nodes editor.

  Probably this better be de-duplicated somehow, but not sure
  yet how. Currently it's not so harmful to have panel for two
  spaces which contains only 2 properties.

  There's currently one unsolved issue with backdrop:
  it's not being updated progressively when just loading the
  file -- it's simply because there's no color managed display
  buffer for backdrop yet, and compositor doesn't actually
  know which color space to use here to generate preview to.
2012-06-30 12:36:03 +00:00
Campbell Barton
5bdf98b399 svn merge ^/trunk/blender -r48409:48411 2012-06-29 14:39:38 +00:00
Lukas Toenne
83093d6770 Extended modes for snapping in the node editor.
The transform operators in nodes will now use the unselected nodes to generate snapping points. Unlike object snapping, node snapping works for the x/y axes separately and snaps node borders to same borders of unselected nodes. The sensitive area for node borders extends over the whole view2D range, to enable simple alignment of nodes in both x and y direction.

For snap points in the node editor an additional enum value is stored to indicate the type of node border (left/right/top/bottom). This works as a constraint on possible node alignments: only same border types align with each other.
2012-06-29 14:34:46 +00:00
Campbell Barton
e6469eb178 svn merge ^/trunk/blender -r48378:48406 2012-06-29 13:11:44 +00:00
Bastien Montagne
4f294a8f02 Fixing a bug found while checking "[#31937] UV/Image Editor: Copy Mirrored UV Coords" (which isn't a bug at all).
The tool works OK, except it was messing vertices' order of polys, often giving ugly results! Now only using sorted list of vertices indices to find matching polys.
2012-06-29 12:41:39 +00:00
Campbell Barton
6b345811b7 svn merge ^/trunk/blender -r48333:48370 2012-06-28 11:20:19 +00:00
Lukas Toenne
855b6391ea Basic snapping in node transform operator.
Snapping actually was working already, but grid spacing was set to 1.0, which is basically pixel size in the node editor. Increased this to 1x grid step for fine snapping and 5x grid step for rough snapping.

Grid drawing in node editor now draws 2 levels in slightly different shades to indicate the different snapping modes better.

Node editor also supports the general use_snap tool setting to enable automatic snapping during transform. For now only the incremental snapping is supported, in future could be extended to enable alignment between nodes in a number of ways.
2012-06-28 08:47:22 +00:00
Sergey Sharybin
8f8d7f586a Clean-up and refactor of current OCIO integration
- Cleaned up some files -- seems there were some wrongly resolved
  conflicts which resulted into duplicated code in space_image.py
  and some build configuration files.
- Store all color space related data (such as display device, view
  transform and so) as strings, so it could easily be ported to new
  OCIO configuration files and it'll be much more portable between
  different configurations.

  This required adding some look-ups to RNA associated with such
  settings, but it's indeed the only way to do this. If it'll be
  figured out such look-ups causes performance issues it's possible
  to optimize this further using hash. So far it's only few elements
  in list to be looked up.
- Added support of display device transformation from OCIO
  configuration files. Display device is setting per-window and
  different windows could have different display devices, so it's
  possible to have one blender window opened on sRGB monitor and
  another one on xyz projector.

  Display device is ignored when using ACES ODT Tonecurve view
  transform due to it's not an OCIO transformation. Probably it'll
  be possible to get rid of this tone curve soon (if it'll be
  proved useless or it'll be implemented as a part of OCIO LUT).
- Movie Cache now supports deleter functions for user keys, so
  such keys could have some allocated data which would be removed
  as soon as element in cache is being removed.
- Movie Cache now support callbacks to check whether current
  cache element could be removed from a cache due to it wouldn't
  be accessed anymore.
- Re-written cache stuff for display buffers of ImBuf. Now it's
  using Movie Cache which is global for all ImBufs.

  Probably it's not implemented in fastest way, would be investigated
  further and probably changed it performance wouldn't be good enough.
2012-06-27 18:10:53 +00:00
Campbell Barton
23c38bc5e7 svn merge ^/trunk/blender -r48168:48188 2012-06-22 11:56:21 +00:00
Campbell Barton
238d3fa4bb mask re-key feature - mango request. ability to reset selected points shape key data.
useful if you add many keys to one part of a curve, then later want to key another part - but dont want to continuously make the same corrections.
2012-06-22 11:53:49 +00:00
Campbell Barton
78b2f5df47 svn merge ^/trunk/blender -r48147:48153 2012-06-21 08:07:49 +00:00
Bastien Montagne
19e81b12e7 Fix [#31714] Pinning object context causes texture list to disappear
Problem was py code of main texture panel was not doing any check on the pinned id, assuming it managed the textures itself - but this is not the case of the Object datablock...

All work actually done by Sergey, was just missing the Lamp specific case. Checked both in code and with tests, quite sure all cases are now correctly handled!
2012-06-21 07:32:06 +00:00
Campbell Barton
b7640d614a svn merge ^/trunk/blender -r48140:48147 2012-06-21 06:10:51 +00:00
Mitchell Stokes
501922782f Fix for [#31792] "Character Physics type not detected by near sensor" reported by Mikko-Pentti Eronen.
Near sensors only pick up "actors," but objects with character physics did not have the actor option displayed. By setting the character physics object to actor, it can be picked up by the near sensor. However, it collides with the near sensor, which sounds like bug [#31701]
2012-06-21 05:30:57 +00:00
Campbell Barton
e631cf7062 svn merge ^/trunk/blender -r48119:48129 2012-06-20 17:12:20 +00:00
Sergey Sharybin
aa30e20272 Fix #31852: Sequencer duplicate cant move strips on Y axis in a meta
Issue was caused by some stuff happenign in wm_operator_finish() which uses
to somehow restore changes made by transformation invoke function.

Solved by not calling translation operator directly from duplication operator
(which is in fact really tricky) and use macros instead. This macros calls
duplication operator which simply duplicates strip, and then calls translation
operator.
2012-06-20 14:20:03 +00:00
Campbell Barton
fdfc8cb17e svn merge ^/trunk/blender -r48114:48119 2012-06-20 14:15:01 +00:00
Campbell Barton
72f7ab441d removing from group now shows menu to select group to remove. 2012-06-20 14:13:22 +00:00
Campbell Barton
2e913da8e4 svn merge ^/trunk/blender -r48105:48109 2012-06-20 10:03:02 +00:00
Campbell Barton
fca0112ba3 add back blending for vertex and weight paint modes, you may want to keep the one brush and switch blending options. 2012-06-20 09:34:26 +00:00
Campbell Barton
858ad8d725 svn merge ^/trunk/blender -r48078:48105 2012-06-20 07:43:49 +00:00
Campbell Barton
98e6912480 style cleanup 2012-06-19 22:17:19 +00:00
Bastien Montagne
69e07714b9 Fix part 1 of [#31840] Quick Explode Bugs related to it's fade option.
Patch by Philipp Oeser (lichtwerk), just did style change (better to not define a value twice, so only affecting the three color components, not the alpha, also using the slice syntax makes things much more compact ;) ), thanks!
2012-06-19 16:45:48 +00:00
Campbell Barton
66617d1b13 svn merge ^/trunk/blender -r47961:48070 2012-06-19 08:16:07 +00:00
Sergey Sharybin
a558eed3e4 Fix #31838: Console error with particle Child Simplification is enabled.
Patch by Philipp Oeser, thanks!
2012-06-18 12:29:44 +00:00
Sergey Sharybin
471627ba96 Commit current patch needed for color pipeline investigation in Mango Project
This commit simply adds view transform option for image editor. This transform
is being applied on original linear color when float buffer is being converted
into sRGB byte buffer.

Currently supports such transformations:
- ACES ODT ToneCurve transform which shall preserve color ranges on such
  a conversion.
- OCIO Raw, Log and RRT view transforms

This commit also contains integration of OCIO backends to Blender, so
now there's c-api and configuration file. Most of things were got from
branch where Xavier Thomas and Lukas Toene were working.

NOTE:
This is just for testing our pipeline, please do not bother me with messages
it's done wrong. It is done correct to support our own pipeline for now, and
real design would be created later when current stoppers for the project are
gone.
2012-06-15 15:00:51 +00:00
Campbell Barton
46ea5670db scale node - framing offset: compatible with camera shiftX/Y and the viewport option. 2012-06-15 07:50:27 +00:00
Campbell Barton
99f7c06d7e added mask tool to recalculate handles (Ctrl+N) 2012-06-13 14:09:20 +00:00
Campbell Barton
2e72720718 apply offset to the camera view - this works exactly like camera shift (transforms X/Y in the same space). 2012-06-13 13:23:48 +00:00
Campbell Barton
91781c76c4 framing options for camera background image: stretch/fit/crop 2012-06-13 12:58:01 +00:00
Sergey Sharybin
5dc0b35a01 Added frame offset slider to clip datablocks
In contrast to start_frame (which affects on where footage actually
starts to play and also affects on all data associated with a clip
such as motion tracking, reconstruction and so on) this slider only
affects on a way how frame number is mapping to a filename, without
touching any kind of tracking data.

The formula is:
  file_name = clip_file_name + frame_offset - (start_frame - 1)
2012-06-12 21:25:23 +00:00
Sergey Sharybin
128b0f9788 Added Selected Only and Show Hidden flags to clip editor's curve view 2012-06-12 17:11:16 +00:00
Sergey Sharybin
d3e098bb42 Some Clip Editor interface clean-ups:
- Display track's reprojection error in dopesheet
- Make sure track is selected when clicking on dopesheet channel
- Attempt to make headers a bit cleaner without long labels which
  doesn't actually make sense.
2012-06-12 17:11:00 +00:00
Sergey Sharybin
37612200fd Added options to display only selected tracks and show hidden tracks
in motion tracking dopesheet view.

By default all channels are displaying now.
2012-06-12 17:10:47 +00:00
Sergey Sharybin
55ca0e7636 Make dopesheet settings per-tracking data
It was a bit confusing to synchronize settings used in pre-calculated
dopesheet channels which was storing in tracking data with settings
used for display which is in space data.

This was initially done by converting one flags to other and checking
if space's settings matches pre-calculated one, but that had several
issues if two different dopesheet are using different settings:

- Channels would be re-calculated on every redraw for each of spaces
- Dopesheet operators could fail due to the could be using  channels
  calculated for other space.

That was also quite nasty code checking if requested settings matches
pre-calculated one.
2012-06-12 17:10:24 +00:00
Sergey Sharybin
552887251f Masking support for motion tracks
Added option to use Grease Pencil datablock as a mask for pattern
when doing motion tracking. Option could be found in Tracking Settings
panel.

All strokes would be rasterized separately from each other and every
stroke is treating as a closed spline.

Also added option to apply a mask on track preview which is situated
just after B/B/W channel button under track preview.
2012-06-12 11:13:53 +00:00
Bastien Montagne
2127e62c9b "Fix" for [#30704] Action Constraint mapping bug
Feature request rather than a real bug: allow constrained bone to use "object" part of the linked action, in addition to "same-named bone" part.
2012-06-12 06:22:23 +00:00
Antony Riakiotakis
854502d2e3 Add user preference "GPU Mipmap Generation" under the System/OpenGL
subpanel to calculate image mipmapping on the GPU, saving upload and
calculation time. Default is off just in case.
2012-06-11 16:23:10 +00:00
Joshua Leung
1022d0c257 Bugfix [#31766] Mouseover Label reads 'Alt Left Arrow' when over the right
arrow.

Patch by Philipp Oeser
2012-06-11 04:34:59 +00:00
Campbell Barton
3d88176269 fix [#31712] User prefs Input: Filter searches for names starting with entered phrase only 2012-06-10 21:38:24 +00:00
Sergey Sharybin
25bb441301 Planar tracking support for motion tracking
===========================================

Major list of changes done in tomato branch:

- Add a planar tracking implementation to libmv
  This adds a new planar tracking implementation to libmv. The
  tracker is based on Ceres[1], the new nonlinear minimizer that
  myself and Sameer released from Google as open source. Since
  the motion model is more involved, the interface is
  different than the RegionTracker interface used previously
  in Blender.

  The start of a C API in libmv-capi.{cpp,h} is also included.

- Migrate from pat_{min,max} for markers to 4 corners representation

  Convert markers in the movie clip editor / 2D tracker from using
  pat_min and pat_max notation to using the a more general, 4-corner
  representation.

  There is still considerable porting work to do; in particular
  sliding from preview widget does not work correct for rotated
  markers.

  All other areas should be ported to new representation:

  * Added support of sliding individual corners. LMB slide + Ctrl
    would scale the whole pattern
  * S would scale the whole marker, S-S would scale pattern only
  * Added support of marker's rotation which is currently rotates
    only patterns around their centers or all markers around median,

    Rotation or other non-translation/scaling transformation of search
    area doesn't make sense.

  * Track Preview widget would display transformed pattern which
    libmv actually operates with.

- "Efficient Second-order Minimization" for the planar tracker

  This implements the "Efficient Second-order Minimization"
  scheme, as supported by the existing translation tracker.
  This increases the amount of per-iteration work, but
  decreases the number of iterations required to converge and
  also increases the size of the basin of attraction for the
  optimization.

- Remove the use of the legacy RegionTracker API from Blender,
  and replaces it with the new TrackRegion API. This also
  adds several features to the planar tracker in libmv:

  * Do a brute-force initialization of tracking similar to "Hybrid"
    mode in the stable release, but using all floats. This is slower
    but more accurate. It is still necessary to evaluate if the
    performance loss is worth it. In particular, this change is
    necessary to support high bit depth imagery.

  * Add support for masks over the search window. This is a step
    towards supporting user-defined tracker masks. The tracker masks
    will make it easy for users to make a mask for e.g. a ball.

    Not exposed into interface yet/

  * Add Pearson product moment correlation coefficient checking (aka
    "Correlation" in the UI. This causes tracking failure if the
    tracked patch is not linearly related to the template.

  * Add support for warping a few points in addition to the supplied
    points. This is useful because the tracking code deliberately
    does not expose the underlying warp representation. Instead,
    warps are specified in an aparametric way via the correspondences.

- Replace the old style tracker configuration panel with the
  new planar tracking panel. From a users perspective, this means:

  * The old "tracking algorithm" picker is gone. There is only 1
    algorithm now. We may revisit this later, but I would much
    prefer to have only 1 algorithm. So far no optimization work
    has been done so the speed is not there yet.

  * There is now a dropdown to select the motion model. Choices:

        * Translation
        * Translation, rotation
        * Translation, scale
        * Translation, rotation, scale
        * Affine
        * Perspective

  * The old "Hybrid" mode is gone; instead there is a toggle to
    enable or disable translation-only tracker initialization. This
    is the equivalent of the hyrbid mode before, but rewritten to work
    with the new planar tracking modes.

  * The pyramid levels setting is gone. At a future date, the planar
    tracker will decide to use pyramids or not automatically. The
    pyramid setting was ultimately a mistake; with the brute force
    initialization it is unnecessary.

- Add light-normalized tracking

  Added the ability to normalize patterns by their average value while
  tracking, to make them invariant to global illumination changes.

Additional details could be found at wiki page [2]

  [1] http://code.google.com/p/ceres-solver
  [2] http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Motion_Tracker
2012-06-10 15:28:19 +00:00
Sergey Sharybin
c27472c04e Synchronize changes with tomato branch 2012-06-10 12:30:47 +00:00
Campbell Barton
5e29381825 mango request
- optionally display the histogram as lines (not filled areas).
- expand the enum for faster access.
- keep the sample line displayed after doing the line sample (running again clears).
2012-06-10 12:09:25 +00:00
Sergej Reich
221a787822 Don't show physics properties in game engine conext
Also rename fluid panels to be more consistent with other simulations
2012-06-08 15:24:28 +00:00
Sergey Sharybin
54297c8d13 Clip editor: cleanup up header
One side of change is related on making code easier to follow, due it started
being quite messy because of all in-lined mode/view checks. Now there's a bit
of code duplication, but it's much easier to see what's going on there.

Another side of patch is related on re-arranging elements in header in a way
that follows rule "depending elements are placed after elements they depends on".
This might be a bit against mostly-used-based elements placement, but now it's
much easier to figure out where to add new option. Also it fits better other
blender's areas such as image editor header, i.e.
2012-06-08 07:55:15 +00:00
Sergey Sharybin
fc07b1fce3 Mask editing: remove use_parent property and use check if paren't id is set instead 2012-06-08 07:54:46 +00:00
Campbell Barton
bdf9e02346 new sequence strip type for masks. 2012-06-07 18:24:36 +00:00
Sergey Sharybin
f43a733f59 Changed semantic of recently added start_frame
Now it's indicates at which scene frame number movie clip starts playing back.
This this setting is still belongs to clip datavlock and used by all users of
clip such as movie compositor nodes, constraints and so.

After long discussion and thoughts about this it was decided that this would
match image's current behavior (which initially seen a bit crappy), but that's
actually allows:

- Keep semantics of start frame in image and clip datablocks in sync
- Allows to support features like support of loading image sequences
  with crappy numbers in suffix which doesn't fit long int.
- Allows to eliminate extra boolean checkbox to control such kind of offset.

Hopefully from pipeline POV it wouldn't hurt because idea of having this things
implemented in original way was  working only if sequence before processing
started naming form 001.
2012-06-06 18:58:30 +00:00