Commit Graph

7651 Commits

Author SHA1 Message Date
Lukas Toenne
6c4510f681 Modification of node groups by adding/removing nodes is not possible yet. This patch extends the 'Make Group' operator and adds a new 'Separate' operator to add such functionality.
1) For inserting into existing groups:
  The 'Make Group from selected' (CTRL+g) operator shows a selection popup (like the object parenting operator), with options depending on the type of the active node (last selected):
  * "New" -> regular operator, creates new group type with all selected nodes inside.
  * "Insert" (only if active node is a group) -> adds all other selected nodes into the group.

  Currently still prohibits groups inside groups in general, though would be technically possible as long as no actual recursion occurs (group containing itself).

2) For extracting from an existing group:
  New 'Separate from group' operator (p), works similar to separating vertices/edges/faces from mesh. Two modes:
  * "Copy" makes a copy of the nodes in the parent tree, but keeps the original group intact.
  * "Move" removes selected nodes from the node group and adds them to the parent tree
2012-06-12 08:44:46 +00:00
Bastien Montagne
b36b9f15ea Few minors style and type fixes (and a nice, harmless copy/paste error! ;) ) 2012-06-12 08:32:06 +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
Campbell Barton
c945e03c75 rna read/write access to ...
node_tree.nodes.active
2012-06-11 18:43:48 +00:00
Sergey Sharybin
6ab087ff99 Scale search area when doing planar tracking
Helps keeping features tracked when there's large scale happens
without need to manually re-adjust search area.

Currently using factor of pattern's boundbox scale, but probably
could be done in more accurate way?
2012-06-11 11:40:54 +00:00
Nicholas Bishop
eba2f2320c Fix invalid array index in armature_deform_verts().
Check that the def_nr is non-negative before using as index.

Fixes bug [#31700] Crash when opening .blend file on 64bit environment
2012-06-11 11:00:58 +00:00
Nicholas Bishop
8015b7a4a5 Fix applying object transform to multires objects.
Bug [#31785] Applying a transform to an object with multires weird result

Was reading interleaved coord/mask data incorrectly since paint mask
merge. Fixed by using two separate CCGKeys.

Some additional code cleanup: deduplicate multires tangent matrix
calculation.
2012-06-11 08:37:35 +00:00
Sergey Sharybin
638211d4e6 Move all marker placement into a single omp critical section
Could give small speadup.
2012-06-11 08:06:42 +00:00
Joshua Leung
61fe88aedc Bugfix [#27886] Transform constraint maps wrongly with negative scale
AFAIK, it is impossible to determine exactly which axes may have negative
scaling values from a 4x4 matrix (which is the underlying cause of this bug).
However, we can figure out if there is some negative scaling going on in that
matrix (i.e. one of the axes has negative scale). So, the fix here is to
negatively scale everything if we detect this happening.

WARNING: do not rely on being able to accurately detecting positive/negative
values for more than a single axis per bone controller. Weird results may occur.
You have been warned.
2012-06-11 05:05:05 +00:00
Campbell Barton
51d9bf725d style cleanup 2012-06-10 19:59:02 +00:00
Sergey Sharybin
bd81afdd5e Fix compilation without libmv 2012-06-10 16:16:02 +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
Campbell Barton
5534701e5d style cleanup: use capital camel case names for typedef's 2012-06-10 15:20:10 +00:00
Lukas Toenne
10932e2e97 Fix #31778. BKE_image_user_frame_calc can be called with iuser==NULL in some circumstances now, so needs to check that. 2012-06-10 15:07:08 +00:00
Campbell Barton
219eca0f51 mango request - add alpha to histogram & sample line. 2012-06-10 12:33:27 +00:00
Lukas Toenne
0586705b63 Fix #31747, broken image sequence loading after r47432.
The image file name function was updating the iuser->framenr using a supposed cfra parameter. However, the actual cfra is unknown when loading movies or sequences, so the iuser->framenr value itself was passed in its place, leading to incremental addition of the iuser frame offset. Removed the cfra parameter altogether from the image path function. This should instead be done separately if necessary, it's not an inherent part of constructing the image file name.
2012-06-10 07:35:45 +00:00
Campbell Barton
c96c63ad3a add a utility function to get an exact match for a grease pencil frame. 2012-06-08 22:07:57 +00:00
Dalai Felinto
dfa307f73f constraints names are not matching (rna and constraint.c). doing rna->constraint.c 2012-06-08 21:04:48 +00:00
Sergey Sharybin
916524d650 Fixed issue with non-updating frame in clip editor when toggling undistorted render while frame is grayscaled.
Also corrected some typos in movieclip.
2012-06-08 17:16:32 +00:00
Sergey Sharybin
04766ab071 Added sorting by average reprojection error to motion tracking dopesheet. 2012-06-08 16:42:24 +00:00
Lukas Toenne
5e1bbde01d Particle Info node for Cycles. This can be used to access particle information in material shaders for dupli objects. For now only the particle Age and individual Lifetime (in frames) are supported, more attributes can be added when needed.
The particle data is stored in a separate texture if any of the dupli objects uses particle info nodes in shaders. To map dupli objects onto particles the store an additional particle_index value, which is different from the simple dupli object index (only visible particles, also works for particle dupli groups mode).

Some simple use cases on the code.blender.org blog:
http://code.blender.org/index.php/2012/05/particle-info-node/
2012-06-08 16:17:57 +00:00
Campbell Barton
b33c5168f4 mask animation keys now editable in the dope sheet (duplicate, transform, delete, select- etc). 2012-06-08 14:31:38 +00:00
Campbell Barton
4413903370 support for subframe animation evaluation for masks. 2012-06-08 09:35:51 +00:00
Campbell Barton
ae3062b741 fix for own bug - evaluating past the last frame of a mask didnt work at all. 2012-06-08 09:27:40 +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
186f542b79 remove casts to short when allocating new imbufs. 2012-06-07 18:33:36 +00:00
Campbell Barton
bdf9e02346 new sequence strip type for masks. 2012-06-07 18:24:36 +00:00
Bastien Montagne
32530c2827 Quite some warnings... 2012-06-07 18:21:07 +00:00
Sergey Sharybin
8a500eea9a Avoid imbuf loading when getting movie clip size
This prevents high memory usage by non-proxied frames when doing mask parenting.

Description from code:

  Originally was needed to support image sequences with different image dimensions,
  which might be useful for such things as reconstruction of unordered image sequence,
  or painting/rotoscoping of non-equal-sized images, but this ended up in unneeded
  cache lookups and even unwanted non-proxied files loading when doing mask parenting,
  so let's disable this for now and assume image sequence consists of images with equal sizes
2012-06-07 16:15:24 +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
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
Campbell Barton
e261d5ca3b improvement to handle recalculation, only do this on auto-handles when they are in a spline. 2012-06-07 07:28:55 +00:00
Joshua Leung
ffd75901f3 Code cleanup - Shuffled solve_parenting() function around to remove need for
forward def/local prototype
2012-06-07 05:39:28 +00:00
Joshua Leung
e69ec8be55 Bugfix [#31735] Performance issue related to object parenting to armature
In the file included with the bugreport, framerates were dropping from 60fps to
11fps for an armature with several lattices parented, and a 5fps drop everytime
an object was parented to the armature.

Upon (re-)inspection of the code, it became apparent that this was being caused
by a block of code that would recalculate the parent (perhaps recursively) as it
thought the parent state was for the wrong timestamp. However, the timestamps
this was using was never really updated (except for a single place, which set it
to a single fixed value to force recalculations to take place), which meant that
this branch was run all the time. AFACT, this is a remnant from some of the old
timeoffset stuff + pre-Depsgraph timestamping hacks that are no longer used/set.
2012-06-07 05:29:10 +00:00
Campbell Barton
d5032657ed style cleanup 2012-06-06 22:38:39 +00:00
Campbell Barton
052e34cc3d fix for bug where auto-handles were not calculated correctly for animated curves. 2012-06-06 20:26:26 +00:00
Campbell Barton
3e8ad394af code cleanup: remove unused mask args 2012-06-06 20:05:58 +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
Daniel Genrich
0499200e39 Cloth: Add support for "Self Collision Vertex Group".
Self collision vertex groups enable artists to exclude selected vertices from getting involved in self collisions. This speeds simulations and it also resolves some self collision issues.
2012-06-06 13:30:05 +00:00
Campbell Barton
d6ebba4c9e recalc animated mask deformations on load. 2012-06-06 12:48:02 +00:00
Campbell Barton
eedaaee072 fix for building without smoke. 2012-06-06 05:37:38 +00:00
Campbell Barton
cb0b3558af style cleanup 2012-06-05 22:12:17 +00:00
Campbell Barton
465b11e971 operator to reset feather weights on all shape keys 2012-06-05 19:39:12 +00:00
Sergey Sharybin
0d61876ed0 Configurable start frame for movie clip datablocks as alternative to automatic start frame number
Number of start frame in opened image sequence used to be distinguished automatically
in a way that file name used on open would be displayed at scene frame #1.

But sometimes it's useful to have it manually configurable (like in cases when you're
processing image sequence and replacing clip's filepath to postprocessed image sequence
and want new clip to show at the same frame range as it was rendered from).

Added Custom Start Frame flag to movie clip (could be accessed from Footage panel in
clip editor) and Start Frame which means number of frame from sequence which would
be displayed at scene frame #1.

For example if you've got clip pointing to file render_00100.png and Start Frame of 100
this file would be displayed at scene frame #1, if Start Frame is 1 then this image
would be displayed at scene frame #100,
2012-06-05 18:38:09 +00:00
Campbell Barton
fe58f668a1 mask point slide now accounts for scaled bezier weights, 2012-06-05 12:51:11 +00:00
Campbell Barton
f72c8565bf change how the weight for feather points are calculated with masking, instead of using absolute weights, multiply by by the weights of the adjacent beziers.
without this - there was no way to animate the overall feather influence of the feather.

will update tools to account for this next.
2012-06-05 12:22:02 +00:00
Campbell Barton
49cc9c7502 code cleanup: mask feather weight - add in checks for u==1 or u==0 2012-06-05 12:09:24 +00:00
Campbell Barton
aca2e6a739 code cleanup: helper functions for masking. 2012-06-05 11:46:55 +00:00