Commit Graph

1000 Commits

Author SHA1 Message Date
Sergey Sharybin
b5716beef0 Camera tracking integration
===========================

- Do not show frame boundary border when stabilization isn't enabled.
- Separate stabilization settings from display in clip editor.
  Now clip can contain stabilization data but still be displayed
  un-stabilized in clip editor.
- Internal changes in stabilization:
  * Use separated location/scale parameters rather than 4x4 matrix.
    In some ares "decomposed" data is needed (text draw functions, i.e.).
    Also such decomposed data could be used in compositor.
  * MovieClip now uses own structure for cache where additional data
    can be stored. MovieCache structure now one of properties in
    this new structure.
  * Get rid of stable image buffer stored in MovieClipStabilization
    structure. Pre-created buffer for scaling still stored there.
    This helps to keep playback realtime -- re-creating this buffer
    introduces ~15% slowdown.
- Added sliders to 2D stabilization panel which controls intensity
  of translation/scale which applies on shot.
- Added filter type to Stabilize2D compositor node. Supports nearest,
  bilinear and bicubic interpolation.
- After discussion with Sebastian and Francois added new node called
  Transformation. It can apply translation, rotation and scale. It's
  not the same thing as applying this components separately -- all
  transformation is happening inside "canvas". And it should be more
  accurate on interpolation and sub-pixel translation.
  Need to check order of applying translation/scale/rotation btw.
- Added output sockets to movie clip compositor node. They holds
  stabilization data which can be used by Translate or Transform
  nodes.
- Minor fix of UI issues in Display panel.
2011-08-01 15:28:19 +00:00
Sergey Sharybin
3eea1954c1 Camera tracking integration
===========================

- If "Zoom To Mouse" is enabled in user preferences then
  zooming would happen to mouse position in clip editor.
- Fixed 1px padding from shot boundary rectangle.
- Allow for some operators grab cursor.
- Enlarge marker anchor sliding area and make it prioritized
  on pattern/search slide zones,
2011-08-01 08:29:17 +00:00
Sergey Sharybin
6745e45c48 Camera tracking integration
===========================

Implemented 2D stabilization:

- Based on average point of several tracks.
- Tracks for stabilization are controllable from
  "2D stabilization" panel.
- Implemented autoscaling. Could fail if average point is
  too close to frame boundary.
- Background clip in 3D viewport and MovieClip input
  compositor nodes are using stable shot.

Some internal weak things:
- Stable shots aren't cached in moviecache. There is
  only one "slot" for stable shot inside stabilization
  structure.
- This could fail if several threads are requested different
  frames (for example when starting playback, pause to make
  Nodes Editor trigger refresh, continue playback).
- Due to it shouldn't crash i decided to implement better
  caching for stable shots a bit later.
2011-07-29 15:25:00 +00:00
Sergey Sharybin
22e08353e2 Merging r38562 through r38614 from trunkinto soc-2011-tomato 2011-07-22 16:58:22 +00:00
Ton Roosendaal
ea90544d65 Need some fun once a while:
On dragging a non-connected node on a noodle, it will insert it.
Functionality tweaks are possible, but it already feels non-intrusive.

Rules:
- Insertion only when a single noodle is intersecting with node.
- Default connects first matching socket type. 
- If no socket match, it connects the first.
2011-07-22 15:28:50 +00:00
Sergey Sharybin
cd332d571a Camera tracking integration
===========================

- Fixed crash when transforming disabled marker.
- Select Inverse wouldn't select hidden parts of markers.
- Movie Clip display aspect ratio is now available on Display panel.
2011-07-21 09:23:25 +00:00
Sergey Sharybin
ac57527895 Camera tracking integration
===========================

- Fixed crash when holding down S and R keys.
- Fixed deleting of first marker.
- Tracking should now work fine with float buffers.
- Added option to show distortion grid. It's most probably
  temporary solution until [auto]calibration tools aren't
  merged.
  This grid defines straight lines on the image.
2011-07-20 20:31:25 +00:00
Sergey Sharybin
0fec30a35f Camera tracking integration
===========================

- Internal change: do not use maroses for checking the only
  one bit of track/marker flags.
- Do not display track name for disabled markers when
  "Show Disabled" is turned off.
- Option to lock tracks. Locked tracks can't be be moved,
  scaled, re-tracked and so.
2011-07-20 10:51:47 +00:00
Sergey Sharybin
e42806a744 Camera tracking integration
===========================

- Sliding from preview could now be undone.
- Fixed memory leak caused by NULL-ing used scopes on
  layout restore.
- Fixed possible crash after splitting space clip.
2011-07-18 19:39:02 +00:00
Sergey Sharybin
31fda5739a Camera tracking integration
===========================

Disallow changing trasnformation mode to rotation.
It's not supported for markers and it lead to crashes.
2011-07-18 18:57:00 +00:00
Sergey Sharybin
3a6ea7b5e1 Camera tracking integration
===========================

- Track preview widget is now resizeable.
- Marker position could now be adjusted from track
  preview widget.
2011-07-18 14:54:32 +00:00
Sergey Sharybin
d279e8891f Camera tracking integration
===========================

- ColaMD moved from OpenNL to extern/.
  It'll be needed for libmv. Also, it's a bit updated from
  year 1999 to 2007.
  Need to be tested for regressions.
- Updated bundling script for libmv. Now it uses fuller
  subset of this library.
- Bundled new libmv.
- Request from Keir: add command line argument to toggle logging
  stuff on. Currently, if Blender is launched with -d argument
  libmv would start printing logging messages. There's no
  argument to increase verbosity, but there's API in libmv-capi,
  so it'll be easy to add.
- Finally fixed crash when ibuf is acquiring with user=NULL.
- Added ActiveClip property to the scene. This clip is used
  as default value for new match-moving constraints.
- Added some flags to Display panel of View3D. Related on
  displaying match-moving stuff.
- Internal change: bundles data moved inside to MovieTrackingTrack.
- Initial implementation of 3d reconstruction.
- Added constraint "Camera Solver". This constraint is supposed
  to be used to make camera follow the reconstructed camera path.
- Added "reference" property to "Follow Track" constraint.
  Now object could be "parented" to 2D track position or to
  3D bundle position.

The very quick guide:

To use reconstruction you should have footage with tracked markers,
choose two keyframes in "Tracking settings" panel. There should be
quite noticeable parallax effect between this two frames. This
is used to initialize reconstruction stuff.
Camera data (focal length and optical center) should be filled in
"Camera Data" panel. Optical center is often the center of image,
so it'll be filled in automatically.
You should also set values for undistortion (K1, K2 and K3). Currently,
there's no any visualization for this parameters and approach of
"change value -> reconstruct -> see what've changed" is the only way
for now.
Libmv team is working on auto-calibration tool, so it should be
easier to gather this coefficients in nearest (i hope) future.
There's also no scene orientation stuff.

Basic workflow:
- Open footage.
- Set markers and track them.
- Fill in camera data and keyframes.
- Hit "Solve Camera" button.
- Add "Camera Solver" constraint to camera in scene.
- Choose movieclip in that constraint.
- To see bundles in 3D viewport active clip should be set
  in scene buttons.
2011-07-07 17:58:33 +00:00
Sergey Sharybin
ef5110a033 Merging r38036 through r38196 from trunk into soc-2011-tomato 2011-07-07 17:48:22 +00:00
Brecht Van Lommel
3d5ae95986 Fix #27863: converting curve spline type from python crashes. 2011-07-05 08:57:11 +00:00
Sergey Sharybin
7ece1ef63e Camera tracking integration
===========================

- Internal changes:
  * Fixed bundle.sh script to bundle libmv: it was generating
    incorrect CMakeLists header.
  * Rename CLIP_OP_delete to CLIP_OT_delete_track.
  * Fixed crash when BKE_movieclip_acquire_ibuf is called
    with NULL user.
  * Made MovieTrackingMarker structure 8-bytes aligned
  * Use writestruct rather than writedata for track markers.
    This allows to change MovieTrackingMarker safely.
- Added "Delete Marker" operator which deletes marker for
  current frame only. Hotkey is Shift-Del.
- Added MovieClip.size and MovieClip.resolution RNA properties.
  Use last accessed frame number to get ImBuf from sequence.
- Added different actions for "Clear Path" operator:
  * Clear path up to current frame.
  * Clear the whole path.
  * Cleat remained part of path (for frames after current).
- Changed buttons order and icons for tracking. New order is:
  * Track frame backwards.
  * Track sequence backwards.
  * Track sequence forwards.
  * Track frame forwards.

NOTE: this breaks compatibility with existing .blend files again,
      but it should be much easier to change data structures without
      breackaged in the future.
2011-06-29 18:05:07 +00:00
Sergey Sharybin
bcf23357bc Camera tracking integration
===========================

- Fixed bug with drawing cache line for marker states.
  It worked correct for cases, when start frame was 1.
- Added color codes for path parts before current frame and
  after current frame.
- Added color code for disabled marker. Color is specifying for
  unselected disabled marker. Color for selected marker is
  calculating automatically. Color for active disabled marker
  is equal to the enabled active marker.
2011-06-28 15:46:38 +00:00
Sergey Sharybin
75889661de Camera tracking integration
===========================

- Internal changes:
  * Rename uiTemplateMarker to uiTemplateTrack.
  * Fixed some comments in movieclip.c.
- Control channels which are affect on track.
- Fixed track deletion when it's point isn't selected.
2011-06-28 10:09:57 +00:00
Sergey Sharybin
35633f35d5 Camera tracking integration
===========================

Refactored interface of movie clip editor:
- Remove all "modal" things like active tool and mode.
  They aren't so useful as I thought when was starting
  implementation of UI.
- Toolbar (T-panel) now contains tools only, no options/properties there.
- All properties are moved to properties panel (N-panel).
2011-06-17 14:47:22 +00:00
Sergey Sharybin
f4ce5770ca Merging r37518 through r37593 from trunk into soc-2011-tomato 2011-06-17 14:41:44 +00:00
Campbell Barton
68a12c74b6 fix [#26621] Memory leaks when creating popup window.
also fixes memory leak when cancelling a popup dialog (new image for example).
2011-06-17 12:48:33 +00:00
Sergey Sharybin
6e3bcdcb26 Camera tracking integration
===========================

- Marker's preview panel is now avaliable with any
  tool selected (except NONE).
- Fixed bug with marker's point going outside of pattern
  when scaling pattern which isn't centered to marker's pos.
- Changed a bit pattern area image generation.
  Now it shouldn't give artifacts with different kinds of
  offsets caused because of float-?int conversions.
- Rollback code for generating flat buffer of search area
  when tracking. It'll be more accurate with current position
  calculation.
  Will switch to BKE_tracking_acquire_search_imbuf when
  backwards position calculation would be implemented.
- Added option to make markers thin. It's in Debug panel due
  to this option was really useful for debugging preview image
  but not sure it'll be useful for artists.
- Added "View Selected" operator (hotkey is numpad period).
  Fits view to show all selection at the frame.
- Added option "Lock to Selection" which locks view
  to show centered selection. Useful to visual markers
  tracking during playback.
  This option is on "Display" panel.
2011-06-15 17:23:08 +00:00
Sergey Sharybin
02ace953a9 Camera tracking integration
===========================

- itasc adopted for Eigen3 library.
  It compiles well, but need deeper testing for regressions.
- Removed Eigen2 library.
- Added settings to tracker which could be changed from UI.
- Pattern area is now affects on tracker.
  Currently libmv supports square patterns which are centered
  to marker's position. Maximal pattern dimensions is sending
  to libmv as pattern size. Would be changed when libmv would
  support non-centered and non-square patterns.
- Fixed bug with syncing pattern's flags when tracking.
- Current frame in cache line became a bit more visible.
  It's useful for me to when debugging.
- Changed behaviour of "Add Marekr" operator: not it's non-modal
  and places marker on mouse position at click.
- Added macro "Add Marekr and Move" which is used to place
  markers from toolbar button.
- Added some utility functions to get image buffer under search
  and pattern area which also returns relative position of
  marker center for this images.
  Generated images are more "correct" from coords rounding
  POV, but  re-calculation of marker position back to
  frame coords is more complicated and not implemented yet,
  so old not very accurate logic is still used.
- Added preview widget with content of pattern area.

NOTE: files saved in previous versions of this branch could
      easily crash on tracking. Use "Reset To Settings" button
      from Tracking Settings before tracking selected markers
      for such files.

TODO:
- Implement adjusting marker position from marker's
  preview widget.
- We've got an idea of sliding marker after click before
  releasing mouse button.
2011-06-14 16:22:06 +00:00
Sergey Sharybin
6e0332fd40 Camera tracking integration
===========================

- Disallow moving pattern/search area in way when marker position is
  outside of pattern area.
- MoiveClip could be set as background for 3D view.
  Added background source property to BGPic to switch between image
  and movie. Movie is a bit more complicaated entity than clip (due to
  displaying bundles, test objects and so) that's why i've sliptted
  background into two sources.
- Added Layout.template_movieclip to display general clip settings.
  Used in Footage panel of SpaceClip and background image properties
  in 3d view.
- Display bundles in 3D view as spheres. Selection is synchronized to
  markers associated with this bundle.
  Bundle can't be selected in 3D view.
- Recoded internal DNA structures, RNA and operators to match libmv entities.
  Tracking data now consists of Tracks, each tracks consists of markers
  which are associated with frame number. Markers holds position only,
  pattern and search areas settings are stored in track. Such settings should
  be unified for all markers in track and marker should hold position and
  frame number only.
2011-06-10 17:06:37 +00:00
Sergey Sharybin
eb57876275 Merging r37123 through r37370 from trunk into soc-2011-tomato: 2011-06-10 16:58:07 +00:00
Campbell Barton
912db4cdb5 [#27615] Box select of mesh object disabled or translated due to curve object
ED_view3d_init_mats_rv3d was calling glMultMatrixf() which was mostly harmless but could also lead to confusing bugs (2 reported previously).
Looked into this and every call to ED_view3d_init_mats_rv3d except for object drawing, doesn't need this so made a second version of ED_view3d_init_mats_rv3d - ED_view3d_init_mats_rv3d_gl which does the matrix multiplication, remove confusing checks in selection code.
2011-06-09 03:56:32 +00:00
Campbell Barton
299602b360 fix for vertex group copy to selected
- was using un-initialized stack memory if the source / target object had no vertex group.
- if the target object had no vertex groups it would fails silently (not a bug but not very good functionality)
- added an error message if any copying fails.
2011-06-07 18:04:03 +00:00
Campbell Barton
e55833a094 fix [#27572] Mirror Shapekey and Mirror vertex Group not working for Lattice. 2011-06-06 06:40:09 +00:00
Campbell Barton
e4bb5403d3 fix for crash opening the file selector twice with multiple windows open (when the mouse was over the inactive window). 2011-06-06 00:42:36 +00:00
Campbell Barton
08f44adba9 file selector now scales with DPI better 2011-06-05 14:00:06 +00:00
Ton Roosendaal
88676349a4 Code holiday commit:
- fix: user pref, window title was reset to 'Blender' on tab usage

- Undo history menu back:
  - name "Undo History"
  - hotkey alt+ctrl+z (alt+apple+z for mac)
  - works like 2.4x, only for global undo, editmode and particle edit.

- Menu scroll
  - for small windows or screens, popup menus now allow to display
    all items, using internal scrolling
  - works with a timer, scrolling 10 items per second when mouse 
    is over the top or bottom arrow
  - if menu is too big to display, it now draws to top or bottom, 
    based on largest available space.
  - also works for hotkey driven pop up menus.

- User pref "DPI" follows widget/layout size
  - widgets & headers now become bigger and smaller, to match 
    'dpi' font sizes. Works well to match UI to monitor size.
  - note that icons can get fuzzy, we need better mipmaps for it
2011-06-04 17:03:46 +00:00
Sergey Sharybin
c4849aee1c Camera tracking integration
===========================

Implemented basic structures and operators for markers manipulaiton.

Markers contains:
- Position of marker at frame in unified 0..1 coordinates
- Relative positions of left-bottom and right-top corners of pattern area
- Relative positions of left-bottom and right-top corners of search area
- Selection flags

New operators:
- Create new maerker. It's a modal operator which creates markers
  at mouse position when LMB is clicking.
- Delete selected markers.
- Select marker using RMB. Some parts of marker (point, patter, search)
  could be deselected.
- Select markers using rectangular selection.
- Select markers using circle selection.
- Marker translation (G-key).
- Marker scaling (S-key).

UI changes:
- Added mode to space clip. Currently supported modes are:
    * View mode
    * Tracking mode
  This was intended to separate different categories of tools,
  so interface shouldn't be overheaded with plenty of tools
  which aren't actually using in the same time.
- Created new panel when actiev tool is 'MARKER' and there's
  active marker where positions could be adjusted in pixel space.

Internal changes:
- Splitted DNA/RNA movieclip files to make separation of
  tracking data and movie data more clear. This could be useful
  in the future when we'll want to support multiplie moies
  for single camera tracking (to make tracking more accurate).
- Added new file in blenkernel, where all tracking-related function
  would be stored. Not very much function here at this moment,
  but in the future all stuff related on converting DNA to external
  tracking data would be stored here.
2011-06-03 15:39:53 +00:00
Sergey Sharybin
8f8a03529b Camera tracking integration
===========================

- Initial implementaiton of new ID named MovieClip.
  Currently it has plactically the same functionality as
  images, but this functionality would be widen in nearest future.

- Initial implementation of SpaceClip.
  This space is supposed to be used for acting with MovieClips
  (opening, playbacking, math-moving interaction and so on).

  Currently you could open image sequence/movie file here, pan/zoom,
  use a playback here.

  I've added cache visualizer to this space, but it's currently more
  a developer's feature to see how cache system works, but it could
  be adopted for further artists' usage (something like cache visuzlizer
  for simulations).

- Added new theme area for Space Clip.
  No special colors were defined here yet.

- Implementation of basic cache system for movies.
  This cache system is very familiar with sequence cache system,
  but it supposed to be more portable: at least cache keys aren't
  limited with sequence-based data and current seqcache could
  became an interface between sequencer and moviecache without
  much logic (only logic related on keys handling would be necessary
  here).

  Implemented basic limitors (ab\mount of cached imbuf's), so it'll
  be a bit more difficult to go out of memory when playing long
  animations in Image Editor (this cache system could be used for
  images too, in the future).

- Very basic tools implementation -- only sceletion added, no
  real tool implemented (only camera focal length added to the UI
  which hasn't got real affect on anything).

Assorted notes:
- Not sure about best behaviour for Unlink clip button: should
  it be imageeditor-like (with de-referencing only) or text-editor
  like (with removing datablock from file).
- Also not sure if tools/properties should be splitted into
  different areas or it'll be better to have tools and settings
  for this tool/item/etc in the same area (tools at the top,
  properties are under them).
  Code for properties area is '#if 0'-ed.
- Sound isn't supported during playback in movie clip.
2011-05-30 04:18:02 +00:00
Campbell Barton
155d589333 add the property as an argument to enum item functions, not used yet but needed for dynamic python enums. 2011-05-26 13:38:16 +00:00
Campbell Barton
6357b12641 fix [#27462] Linked Object (camera) can be moved by Lock Camera to View 2011-05-23 15:46:09 +00:00
Campbell Barton
0d26333eb5 fix view3d_persp_mat4, which gave incorrect translation, rename to ED_view3d_to_m4. added doxygen docs. 2011-05-23 02:23:03 +00:00
Campbell Barton
e038b25579 view3d function naming, no functional changes. 2011-05-21 08:56:37 +00:00
Campbell Barton
363bfdc46a use consistant arguments to ED_view3d_win_* funcs, a single float vector rather then 2 floats. 2011-05-20 13:50:41 +00:00
Campbell Barton
53d5761c94 function rename to give clearer meaning that they change from window to 3d coordinates.
some functions had vague names, I even ended up re-writing some of these functions by accident!
also added doxy comments.

* ED_view3d_win_to_3d (was window_to_3d)
* ED_view3d_win_to_delta (was window_to_3d_delta)
* ED_view3d_win_to_vector (was window_to_3d_vector / viewvector)
* ED_view3d_win_to_segment_clip (was viewline)
* ED_view3d_win_to_ray (was viewray)
2011-05-20 13:09:34 +00:00
Campbell Barton
4916c44af8 simplify window_to_3d_vector() and call it from viewline()
also update python view function to match.
2011-05-20 10:28:40 +00:00
Campbell Barton
1dad9bf0bc change window_to_3d to take screen coords as floats. 2011-05-19 07:55:48 +00:00
Campbell Barton
7282f8cf98 window_to_3d() wasn't working at all (only used by grease pencil/path conversion), now works in ortho and perspective view, initgrabz() is no longer needs to be called first. 2011-05-18 18:01:01 +00:00
Campbell Barton
f4d8be977f there wasn't a good way to know if a RegionView3D was perspective or not (without having the View3D too and checking its camera values), added struct member 'is_persp', set with the view matrix. 2011-05-18 17:52:26 +00:00
Brecht Van Lommel
178ba76b09 RNA: pass Main rather than Context to register/unregister callbacks. 2011-05-18 10:56:26 +00:00
Campbell Barton
baa64d1751 fix for user reported issues
- camera object movement was missing a notifier
- auto perspective now works when rotating the view.
- shift+b now zooms.
2011-05-15 02:39:36 +00:00
Campbell Barton
e7db080565 option to have the view controls apply to the camera view (and camera object).
- follow rotate/pan/zoom/dolly operators.
- auto-depth preference works.
- smooth view navigation supported.
- view selected, all & numpad operator work too.

TODO
- deal with camera transform locked axis
- find a way to move/zoom the frame while the camera is locked (if it turns out to be a problem).
2011-05-14 17:50:33 +00:00
Campbell Barton
4b7d981c91 view3d api edits, no functional changes.
rename v3d functions
* view3d_to_ob -> ED_view3d_to_object
* view3d_apply_ob -> ED_view3d_from_object
* view3d_apply_mat4 -> ED_view3d_from_m4

Changed ED_view3d_to_object() not to temp modify the view rotation and don't overwrite the objects recalc.
2011-05-14 04:25:47 +00:00
Campbell Barton
47569160d7 rename setcameratoview3d to view3d_to_ob & add to ED_view3d.h so others can use. 2011-05-13 18:05:30 +00:00
Campbell Barton
5f5cdf9d00 for bug [#27358] Transform bug when transform > 500
mouse coords would with cont. grab would wrap at short.
use mouse coords as int rather then short.

this problem still happens on linux because of XTranslateCoordinates
2011-05-12 16:47:36 +00:00
Campbell Barton
89a166d0de remove some duplicate declarations 2011-05-10 14:48:06 +00:00
Campbell Barton
1e0c3d315b minor cleanup, no functional changes. 2011-05-09 14:41:44 +00:00