Commit Graph

2102 Commits

Author SHA1 Message Date
Sergey Sharybin
37f702addd Merging r47683 through r47690 from trunk into soc-2011-tomato 2012-06-10 16:26:00 +00:00
Sergey Sharybin
ff5875f1c1 Bump subversion so iteration through all markers would happen
only for old files which actually needs to be ported to 4 corners
representation.
2012-06-10 15:28:37 +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
39e591d3d0 Support for per-track Grease Pencil datablocks for motion tracking
Originally was needed to reach easy way of defining masks used for tracking
(do eliminate textures which doesn't belong to feature when tracking.

Implemented as alternative to GP datablock for clip and added switch between
per-clip and per-track GP datablocks -- internal limitations of GP doesn't
allow to display all GP datablocks easily.  So either you see.edit GP associated
with clip or with track.

GP strokes associated with track are relative to track's position, following
tracks during tracking and could be shared between several tracks.

Masking code presents in libmv and there's rasterizer of GP datablocks for
masks in blender's tracking module, but they still need to be glued together.

Some documentation cound be found at this page:

http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Motion_Tracker#Grease_Pencil
2012-06-10 15:26:50 +00:00
Sergey Sharybin
039acbbfef Homography correction for track preview widget
Use homography transformation for pattern displayed in track preview widget.
Sampling of this pattern happens to resolution of preview widget itself,
which implied some bigger changes in how scopes are working:

- Instead of real pattern store search area in BKE_movieclip_update_scopes,
  which is later used for sampling pattern.
- Sampling of pattern happens in ui_draw_but_TRACKPREVIEW from search area
  which allows to sample it to actual resolution of preview widget.
- If size of preview widget is not changing, this sampled pattern wouldn't
  be re-sampled until scopes are tagged to update.

There are some issues with pattern sampling which seems to happen SamplePlanarPatch,
changing linear sampling to nearest removes that unwanted 1px offset.

Left commented saving of sampled image in ui_draw_but_TRACKPREVIEW which should
help figuring the issue out.
2012-06-09 11:14:36 +00:00
Sergey Sharybin
26f9fe3962 Merging r47581 through r47603 from trunk into soc-2011-tomato 2012-06-08 09:36:17 +00:00
Campbell Barton
bdf9e02346 new sequence strip type for masks. 2012-06-07 18:24:36 +00:00
Sergey Sharybin
9387018122 Merging r47572 through r47580 form trunk into soc-2011-tomato 2012-06-07 18:08:57 +00:00
Campbell Barton
105b1031dd code cleanup: rename sequencer types to SEQ_TYPE_*** and use enums rather then defines. 2012-06-07 15:49:02 +00:00
Sergey Sharybin
4ac1e1b222 Merging r47535 through r47566 from trunk into soc-2011-tomato 2012-06-07 09:32:39 +00:00
Sergey Sharybin
a99b9a5c3d Fix #31725: UV map order is ignored when opening in 2.6+ versions
Issue was caused by do_versions being used pdata as reference for active/render/
stencil/clone layer indices instead of fdata.

Added some utility functions used only by do_versions to be sure this indices
are set from fdata for pre-bmesh files.
2012-06-07 09:11:16 +00:00
Sergey Sharybin
286c5915b3 Merging r47507 through r47534 from trunk into soc-2011-tomato 2012-06-06 19:11:06 +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
Campbell Barton
1931aac1f7 style cleanup: (indentation) 2012-06-06 14:48:39 +00:00
Campbell Barton
870ba8aa13 svn merge ^/trunk/blender -r47423:47506 2012-06-06 10:25:59 +00:00
Lukas Toenne
67ba133b19 Fix #31706, Crash loading old file in trunk build. 2012-06-05 08:06:15 +00:00
Campbell Barton
5189356d58 style cleanup 2012-06-04 20:11:09 +00:00
Brecht Van Lommel
4e338e894f Cycles: support for image sequences in image/environment texture node. 2012-06-04 19:38:33 +00:00
Campbell Barton
2202aaa083 svn merge ^/trunk/blender -r47413:47423 2012-06-04 16:56:51 +00:00
Campbell Barton
68a9dd54ec mask mode for clip editor developed by Sergey Sharybin, Pete Larabell and myself.
see:
http://wiki.blender.org/index.php/User:Nazg-gul/MaskEditor


note - mask editing tools need continued development, feather option is not working 100%
2012-06-04 16:42:58 +00:00
Brecht Van Lommel
eae64f9a0c Antoher fix for library linking issues, must change all entries in the libmap,
not just the first one.
2012-06-04 16:10:20 +00:00
Campbell Barton
0d50a364ed svn merge ^/trunk/blender -r47398:47413 2012-06-04 15:28:38 +00:00
Brecht Van Lommel
9a488fd8b8 Fix for recent library linking fix, this triggered another issue that was
hidden by libraries getting loaded twice, hopefully it's working ok now,
tested with various .blend files.
2012-06-04 12:01:49 +00:00
Campbell Barton
4413024cdc svn merge ^/trunk/blender -r47325:47381 2012-06-03 18:25:57 +00:00
Lukas Toenne
abc1a27762 Fix #31673, File Output node forgets about socket names. Was checking for wrong file version for do_versions. 2012-06-01 15:16:58 +00:00
Campbell Barton
192a28bb32 rename mask-objects to mask-layers. 2012-05-31 19:12:22 +00:00
Campbell Barton
1b10fdec48 svn merge ^/trunk/blender -r47210:47214 2012-05-30 09:28:37 +00:00
Campbell Barton
8ae1f38812 workaround for crash when rig library links dont load. - will leak memory but better then crash. 2012-05-30 09:27:16 +00:00
Campbell Barton
766307e311 svn merge ^/trunk/blender -r47184:47201 2012-05-30 04:48:10 +00:00
Benoit Bolsee
58bc424b3c BGE #30734: add support for physics linear and angular thresholds and deactivation time from python and GUI.
========================
The linear and angular thresholds set the speed limit (in m/s) and rotation limit (in rad/s)
under which a rigid body will go to sleep (stop moving) if it stays below the limits for a 
time equal or longer than the deactivation time (sleeping is disabled is deactivation time is 
set to 0).
These settings help reducing the processing spent on Physics during the game.

Previously they were only accessible from python but not working because of a bug. 
Now the python functions are working and the settings are available in the Physics panel
of the World settings when using the Blender Game render engine.

Python API:
  import PhysicsConstraints
  PhysicsConstraints.setDeactivationLinearTreshold(float)
  PhysicsConstraints.setDeactivationAngularTreshold(float)
2012-05-29 20:30:33 +00:00
Campbell Barton
7d04e4c53e svn merge ^/trunk/blender -r47150:47184 2012-05-29 15:02:21 +00:00
Thomas Dinges
16117143d8 Massive Code cleanup:
* Remove all code for Texture and Sequencer plugin system, this never worked in 2.5x / 2.6x and is therefore not needed anymore.

* DNA structures are kept, all read/writefile code is gone.
2012-05-29 10:21:07 +00:00
Campbell Barton
d8d3a6455f remove pynodes, were not working in 2.5, not ported to py3.x 2012-05-29 09:37:23 +00:00
Campbell Barton
edad58c5b1 initial support for animating parented mask points. 2012-05-29 08:55:16 +00:00
Campbell Barton
b6a28065c9 svn merge ^/trunk/blender -r47103:47150 2012-05-29 05:48:07 +00:00
Sergey Sharybin
e442adf9cf Fixed crash opening files with missed libraries. 2012-05-28 10:32:38 +00:00
Campbell Barton
daa8fe9145 svn merge ^/trunk/blender -r47070:47099 2012-05-28 04:48:42 +00:00
Campbell Barton
b33f0ef0e3 style cleanup 2012-05-27 19:40:36 +00:00
Campbell Barton
8c89d52614 svn merge ^/trunk/blender -r47003:47047 2012-05-26 14:19:41 +00:00
Brecht Van Lommel
3fe10d475f Fix a bad bug with direct/indirect linking since 2.5. Indirectly linked libraries
could get loaded twice in some cases, causing issues with e.g. node groups.
2012-05-25 17:13:30 +00:00
Campbell Barton
57c292daf0 style cleanup 2012-05-25 09:51:53 +00:00
Campbell Barton
5ed2e0d5bc svn merge ^/trunk/blender -r46979:47003 2012-05-25 09:42:58 +00:00
Daniel Genrich
f883d12e0c Smoke: Start fixing scaling issues which happen with non cube-shaped domains.
Detail: Smoke solver and Blender side of smoke now share the same cell length.

First reported by the Sintel artists long ago, again reported by MiikaH.

Part of my Smoke Development Project Phase III.
2012-05-24 23:50:20 +00:00
Campbell Barton
25b677787f svn merge ^/trunk/blender -r46966:46979 2012-05-24 16:37:40 +00:00
Campbell Barton
da710b3e14 style cleanup: brace placement/newlines 2012-05-24 16:35:45 +00:00
Campbell Barton
3e1df2d12e shapekeys for masks - this doesnt use existing shapekey code however. 2012-05-24 13:31:36 +00:00
Sergey Sharybin
14a56caee6 Merging r46725 through r46963 from trunk into soc-2011-tomato 2012-05-24 09:47:29 +00:00
Campbell Barton
dab1d8e487 style cleanup 2012-05-22 22:03:41 +00:00
Lukas Toenne
53b01d9002 A number of new features for the node editor in general and the Frame node in particular.
For an detailed user-level description of new features see the following blogpost:

http://code.blender.org/index.php/2012/05/node-editing-tweaks/

TL;DR:
* Frame node gets more usable bounding-box behavior
* Node resizing has helpful mouse cursor indicators and works on all borders
* Node selection/active colors are themeable independently
* Customizable background colors for nodes (useful for frames visual
distinction).
2012-05-22 14:13:33 +00:00
Nicholas Bishop
5f95f7d2ad Add input sample averaging to PaintStroke.
Averages input samples to make the brush stroke smoother. Only mouse
location is averaged right now, not pressure/tilt/etc.

The DNA is in struct Paint.num_input_samples, RNA is
Paint.input_samples. In combination with PaintStroke usage this change
applies to sculpt, vpaint, and wpaint.

The range of useful values varies quite a bit depending on input
device; mouse needs higher values to match tablet pen, so set max
samples pretty high (64).

Release note section:
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Sculpting#Input_Stroke_Averaging
2012-05-21 23:32:46 +00:00