Commit Graph

7547 Commits

Author SHA1 Message Date
Campbell Barton
2870366d72 rename 'mask shape' to mask object, will make adding shape keys less confusing. 2012-05-18 12:51:11 +00:00
Campbell Barton
a8a22d968c mask: remove aspect arguments which are no longer needed. 2012-05-18 09:36:32 +00:00
Campbell Barton
f21cd531d6 mask editor now stores points/handles in 1:1 aspect, makes tool code _much_ more logical/easier. 2012-05-18 08:59:05 +00:00
Keir Mierle
7414ccfeeb Add light-normalized tracking to the planar tracker
This commit adds the ability to normalize patterns by their
average value while tracking, to make them invariant to global
illumination changes.

To see this in action, check out the "Lobby" scene from Hollywood
VFX. If you track the markers that are shadowed by the actress,
previously they would not track. With the scale adaption on, the
tracker would shrink the area to compensate for the changed
illumination, losing the track. With "Normalize" turned on, the
patch is correctly tracked and scale is maintained.

A remaining problem is that only the Ceres cost function is
updated to handle the normalization. The brute translation search
does not take this into account. Perhaps "Prepass" (see below)
should get disabled if normalization is enabled until I fix the
prepass to normalize as well.

There are a few other changes:

- Cleanups in tracking RNA comments.

- Bail out of the sampling loop early if the mask is zero; this
  saves expensive samples of the image derivatives.

- Rename the wordy "Translation initialization" to "Prepass" at
  Sebastian's suggestion.

- Fix a bug where the mask was ignored when sampling in the cost
  functor.
2012-05-18 02:12:47 +00:00
Keir Mierle
82e45dd275 Add panels for the new planar tracker
This replaces 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 (Not implemented yet)
  * Perspective

  The most stable is the "translation" parameterization. The
  others work but still require some tweaking.

- 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.
2012-05-17 17:09:51 +00:00
Sergey Sharybin
1670b1ed99 Remove debug code and clean up sources to match common style used
Also made BKE_tracking_get_search_imbuf use space conversion utility functions,
so now it's not so annoying that search area calculation is happening differently
in different paces.

Also allow even sizes for search area.

Another small fix is about flipping search area dumping by libmv-capi.
It used to be flipped since in blender Y axis is up-aimed.
2012-05-17 13:53:20 +00:00
Campbell Barton
37f6ed397d svn merge ^/trunk/blender -r46699:46714 2012-05-17 09:34:22 +00:00
Campbell Barton
599d213115 style cleanup: line length and ensure some macros error when not ending with ';' 2012-05-17 07:59:25 +00:00
Keir Mierle
0a917fa1c3 Add new planar tracker features and use the new planar API
This commit removes 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.

- 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.

- Remove the "num_samples_xy" concept and replace it with
  automatic determination of the number of samples. This makes the
  API easier for users.

- Fix various bugs in the parameterizations.

There remains a bug with subpixel precision tracking when in
"keyframe" mode; this will get fixed shortly.
2012-05-17 02:31:52 +00:00
Campbell Barton
9dd981a440 style cleanup: block comments 2012-05-16 23:37:23 +00:00
Campbell Barton
7e5348f4c5 improvements to mask editor path editing
- adding new points de-selects previous so Ctrl+Click+Drag works usefully.
- cyclic curves now extrude properly
- adding new points inbetween existing now use the surrounding points handle length.
2012-05-16 18:05:35 +00:00
Campbell Barton
09bb37fe93 svn merge ^/trunk/blender -r46684:46699 2012-05-16 16:41:51 +00:00
Campbell Barton
d82ca6d636 svn merge ^/trunk/blender -r46632:46684 2012-05-16 09:12:18 +00:00
Nicholas Bishop
ed33320e3f Code cleanup: simplify standard GHash creation.
Added four new functions as shortcuts to creating GHashes that use the
standard ptr/str/int/pair hash and compare functions.

GHash *BLI_ghash_ptr_new(const char *info);
GHash *BLI_ghash_str_new(const char *info);
GHash *BLI_ghash_int_new(const char *info);
GHash *BLI_ghash_pair_new(const char *info);

Replaced almost all occurrences of BLI_ghash_new() with one of the
above functions.
2012-05-16 00:51:36 +00:00
Campbell Barton
e79c29a1d6 style cleanup: raytree code 2012-05-15 18:45:20 +00:00
Brecht Van Lommel
7aa21d677a Python/CurveMapping: add Curve Mapping functions to add/remove curve points,
evaluate the curve and update after changes.
2012-05-15 18:34:00 +00:00
Nicholas Bishop
37552ac167 Update create_vert_edge_map() to match create_vert_poly_map(). 2012-05-15 16:32:08 +00:00
Daniel Genrich
756bf3d052 Cloth collisions:
Add repulse for near vertices. This code didn't make sense where it was before. Still leaving it also at the old place since it cannot hurt.
2012-05-15 13:46:50 +00:00
Daniel Genrich
9a8f98ddd8 Blender Internal Render: Split quads to predictable (vertices 0,1,3) triangles for animated meshes.
This solves problems with collisions beeing rendered different than in viewport.
2012-05-15 13:39:44 +00:00
Joerg Mueller
715d870bea Fix for [#31464] Crash when issuing command line render engine list ("-E help") 2012-05-15 13:32:55 +00:00
Daniel Genrich
8242f624a1 Cloth: Revert triangulation after talking with brecht.
People: Better use subsurf after cloth since you can get failing collisions otherwise!
2012-05-15 12:26:29 +00:00
Sergey Sharybin
a20da2599b Tag unused argument 2012-05-15 12:17:56 +00:00
Daniel Genrich
3e8f59047e Fix own compile error reported by brecht. 2012-05-15 12:07:44 +00:00
Daniel Genrich
763a16cb70 Cloth:
- Triangulate Cloth Mesh for collisions
- Speed up collisions
- Remove EL Topo code
- Prepare code to incooperate El Topo self collisions (TODO next commits)


TODO:
----------
- Triangulation: Is custom data/uv preserved correctly?
- Use MPoly not tessface?
2012-05-15 11:14:50 +00:00
Nicholas Bishop
8107130854 Fix bug #31460, crash in multires on leaving edit mode
Fix overly aggressive check for creating GridPaintMasks, wasn't
creating them in the right place after adding new faces in editmode.
2012-05-15 07:37:42 +00:00
Campbell Barton
a673e70e7c fix for odd mask curve handle calculation
- reuses auto handle calculation
- keeps handle length relate to surrounding handles

todo
- only works well when cyclic is off
- isnt aspect aware (looks like other tools are not aspect aware too)
2012-05-14 19:41:27 +00:00
Sergey Sharybin
c62077ce66 Per-track grease pencil data blocks
Added support of tracks to have their own grease pencil datablock.
This is controllable by Clip/Track toggle in Grease Pencil panel
in Clip Editor.

This toggle shows whether grease pencil stroke should go to movie clip's
datablock or to active track. As soon as this toggle is switched to Track,
all further strokes would be added to active track and only strokes which
belongs to active track would be displayed on the screen.

This strokes would be relative to track's position, which means if one
made some strokes to track and started moving it, stokes would be moved
together with track.

Different tracks might share the same grease pencil datablock.

Also hide draw modes which are not supported by space clip.

Initial idea why tracks should have grease pencil datablocks was to
support easy mask creation for tracking. This seemed fastest and
easiest way to achieve mask editing for tracks.

To get mask for specified track there's function BKE_tracking_track_mask_get
which requires MovieTracking structure, track for which mask is creating and
also width and height of current overall frame. it'll return ImBuf with
mask (probably it's more like overkill, because internally it works with
single-channel value buffer and probably that's one should be passing to
libmv).

Probably hacking grease pencil in such way is not ideal solution, but that
part of code might be cleaned up further and it seems to be straightforward
to use grease pencil for such a purpose.

Note: this is commit to tomato branch, not to trunk.
2012-05-14 17:23:37 +00:00
Campbell Barton
060282ea42 svn merge ^/trunk/blender -r46612:46629 2012-05-14 13:55:12 +00:00
Keir Mierle
e9d520f482 Refactor byte/float RGBA to grayscale conversion in tracking.c
This is the first in a series of tracking.c refactorings to
disentangle functionality that is sprinkled across unrelated
functions.
2012-05-14 13:46:38 +00:00
Keir Mierle
4f81bdf73c Start migrating away from pat_min and pat_max for markers
This starts converting 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:

- The preview widget does not respect the new
  representation
- The corners cannot yet be edited individually.
- The clamping does not do the right thing for general
  corners; e.g. detecting a convex quad.
- The tracking code in Blender does not actually invoke the
  corner tracking version of libmv's tracking API.

Next steps:

- Convert libmv's legacy ESM tracker and brute tracker to
  work under the new TrackRegion() API.
- Make Blender use the new TrackRegion() API; this will
  allow real planar tracking tests.
- Everything else (UI, etc).

This patch is mostly the work of Sergey Sharybin.
2012-05-14 10:47:25 +00:00
Campbell Barton
4f2c83f573 style cleanup: imbuf & icons 2012-05-13 22:05:51 +00:00
Campbell Barton
ee9d9f4737 style cleanup: mask, whitespace edits, also use len_squared_v2 for comparisons. 2012-05-13 21:36:42 +00:00
Campbell Barton
2a3fddf5b3 svn merge: Merging r46558 through r46612, from trunk 2012-05-13 18:16:25 +00:00
Campbell Barton
b3c1c03ba4 style cleanup: mask files 2012-05-13 16:24:42 +00:00
Campbell Barton
0f43da2234 style cleanup: macro line breaks 2012-05-13 16:05:10 +00:00
Campbell Barton
c8ebfe1d12 code cleanup:
- use bmesh iterator macros in more places
- rename scanfill variables (were using same names as mesh faces/verts which was confusing)
2012-05-13 14:47:53 +00:00
Campbell Barton
305d341ec2 code cleanup: use vector math function minmax_v3v3_v3() and other minor vector function edits. 2012-05-13 11:05:52 +00:00
Campbell Barton
145289ad95 code cleanup: minor improvements to float/vector usage. 2012-05-12 22:13:38 +00:00
Campbell Barton
b224cbe6b6 fix for own bad logic with polygon normal calculation, was reading one past the loop array (reported as bug #31431). 2012-05-12 21:01:26 +00:00
Campbell Barton
9892736206 code cleanup: header cleanup and remove some duplicate defines. 2012-05-12 20:39:39 +00:00
Campbell Barton
cffaa42d3a style cleanup: blenkernel 2012-05-12 19:18:02 +00:00
Campbell Barton
85fd56a3a8 code cleanup: some style and use math defines, also small speedup for dynamicpaint, dont call acosf twice. 2012-05-12 16:42:12 +00:00
Campbell Barton
53ee7908d6 style cleanup: whitespace 2012-05-12 16:11:34 +00:00
Sergey Sharybin
4359564d9b Merging r46495 through r46557 from trunk into soc-2011-tomato 2012-05-11 17:39:57 +00:00
Campbell Barton
713a517f40 add missing NULL of scene->ed 2012-05-11 14:27:55 +00:00
Campbell Barton
6ce6dfba16 - dont create scene.sequence_editor on read, means data-browser or autocomplete will allocate a sequencer.
... instead add scene.sequencer_editor_create / clear, these match id.animation_data_* functions.

- refactor for names, for scene level functions call them BKE_sequencer_*
2012-05-11 10:04:55 +00:00
Lukas Toenne
9d91bc38d3 A couple more changes to the file and image nodes to improve access to layers that don't follow Blender's rlayer.rpass naming scheme.
--- Changes to File Output node ---
* Flat layer names in EXR multilayer files.

 For a socket with name "AAA" the previous resulting EXR layer name would be "AAA.AAA", i.e. the render layer as well as render pass would use the socket name.

 Now the "render_layer.render_pass" scheme is ignored in multilayer files, socket names are directly written to EXR layers (EXR layer name is "AAA" in this example). If sockets should have a notion of "render layer" this can still be achieved by explicitly adding a separator, e.g. "AAA.BBB". When loading such layers into a Blender Image struct, the name is interpreted as a "render_layer.render_pass" again (although the image node does not care about it, see below).

* Socket sub-paths (for singlelayer) or layer names (for multilayer) are stored in dedicated string variables in the socket storage data. This way the RNA can define precise string subtypes (PROP_FILEPATH) and length. The file/layer slots are defined as separate structs with own name properties in the RNA as well, so they can be used nicely with the list template.

* Ensure unique socket paths/layer names to prevent overwriting of files and layers respectively.

--- Changes to Image node ---
* Loading multilayer OpenEXR files has improved layer name splitting into render layer + render pass names now. This properly supports arbitrary EXR layer names now.
  Example:

 OpenEXR layer name:   AAA.BBB.CCC

 is split into

 Render layer name:    AAA.BBB
 Render pass name:     CCC

 If the layer name has no '.' separators the render layer name is empty.

* Image node ignores the selected render layer in the image user data. Instead all existing layers are displayed at the same time by combining the render layer names with render pass names again, to reconstruct the original EXR layer name. This avoids the problem that render layers with empty name are not selectetable in the dropdown and allows using all image layers at the same time without duplicating the node.
2012-05-11 08:06:01 +00:00
Campbell Barton
ce17c35240 style cleanup: mainly sculpt/whitespace 2012-05-11 08:05:47 +00:00
Sergey Sharybin
dabc22826d Compilation error fix: abort() wasn't declared in BKE_ccg.h before 2012-05-11 05:27:23 +00:00
Nicholas Bishop
41b5206270 Add undo/redo support for paint masks. 2012-05-10 20:34:47 +00:00