Commit Graph

5625 Commits

Author SHA1 Message Date
Sergey Sharybin
08bd300f0e Camera tracking integration
===========================

- Changed libmv api to use doubles instead of floats.
  No real benefit rather than keeping API uniform.
- Optimized reconstructed camera search. It's optimized for
  playback, not random access.
- Added option to show projection of bundles into footage.
  To see bundles "Show Bundles" from Display panel should
  be enabled. Used very rough limit of 3 px to consider projection
  is fine. Colors are still hard-coded. Not sure it could be useful
  to make them configurable.
- Added option to mute footage. It could be useful to check
  if markers/bundles are moving smoothly.
- Added selector for focal length units.
2011-07-11 09:04:00 +00:00
Sergey Sharybin
1135dbcc36 Merging r38265 through r38295 from trunk into soc-2011-tomato 2011-07-11 08:43:34 +00:00
Janne Karhu
897cbe4b42 Fix for [#27398] Particle systems with animated groups render incorrectly in viewport
* Hmph.. depsgraph and group duplication == illogical.
2011-07-10 23:49:59 +00:00
Janne Karhu
2fb4a37baa Fix for [#27289] Hair: Render Option - Object does not point objects to end of "hair path"
* Objects are now always rotated in the directions of the hair paths
* Secondary fix: particle size wasn't updated for hair particles, so dupliobject size couldn't be change after the hair was edited
2011-07-10 17:30:31 +00:00
Janne Karhu
de7592b489 Fix for [#26873] Animated displacement modifier on an object doesn't work with hair particle objects
* Noise is now considered an animated texture as it changes with every frame
* Converted a few places in particles code to use the particle system's own random table instead of BLI_frand.
2011-07-10 17:04:56 +00:00
Sergey Sharybin
b16a448e8d Camera tracking integration
===========================

Clean-up: animation data is not necessery in MovieClip. Removing.

It'll be easy to add it back just reverting this commit.
2011-07-09 19:57:29 +00:00
Sergey Sharybin
964c3cb0fa Camera tracking integration
===========================

- Implemented hide/show track functionality.
- Small re-exposing Marker menu into UI.
  Now it's called "Track". Added new operators there.
- Set reconstructed clip as active to scene.
2011-07-09 19:51:23 +00:00
Sergey Sharybin
0c802ad23e Merging r38237 through r38264 from trunk into soc-2011-tomato 2011-07-09 17:49:36 +00:00
Ton Roosendaal
de10ffab75 Bugfix #27761
Material nodes: when no output node was active, it sets one.
Not common to happen anymore, only for deleting output nodes
without clicking on nodes.
2011-07-09 17:03:35 +00:00
Sergey Sharybin
5506d18fa8 Fox #27866: Curve handle snaps/locks when it shouldnt
It was a precision error in calchandleNurb. Do not align handles
along handle which si too short.
2011-07-09 14:22:52 +00:00
Nicholas Bishop
abdf420a6d == GPU Buffers ==
This patch attempts to clean up and document the GPU buffers
code. There are a few bug fixes as well.

Patch reviewed here: http://codereview.appspot.com/4631052/

Summary:

* Bugfix: make GPU_buffer_copy_normal convert from shorts to floats
  correctly, also fixed the use of cached face normal CustomData.

* Bugfix: changed the `mat_nr' field of GPUBufferMaterial from char to
  short.

* Changed color buffer setup to not alloc a temporary copy of color
  data, just passes the MCol data in directly.

* Changed the GPU buffer pool code to make clearer what operates
  specifically on the global pool.

* Lots of refactoring for GPU_drawobject_new; should operate mostly
  the same (except got rid of one unecessary allocation), just split
  into more functions and without macros now.

* Converted some #defines into enumerations.

* Made some stuff private, pulled out of header file.

* Deleted unused function GPU_buffer_pool_free_unused().

* Removed GPU_interleaved_setup and related #defines. (I think this
  was used for editmode VBOs, but those were disabled.)

* Added lots of comments.

* Added a few comments in the code signed `--nicholas' to note places
  where I am unsure about design or usage, would be good to address
  these better.

* Code formatting changed to be more consistent with the rest of
  Blender.

* Renamed some fields and variables to be more consistent with
  Blender's naming conventions.

* Renamed some fields and variables to use more descriptive names,
  e.g. renamed `redir' to `mat_orig_to_new'.

* Removed print outs with DEBUG_VBO -- don't feel too strongly about
  this one, just not used elsewhere in Blender, could be easily added
  back if others disagree though.

* Moved the PBVH drawing code down to the bottom of the file, before
  was sitting in the middle of the other VBO code
2011-07-08 19:58:02 +00:00
Sergey Sharybin
c3d2e13a49 Camera tracking integration
===========================

- Made settings for tracking non-animatable.
- Fixed crash when enabling/disabling markers from
  "Specials" menu.
- Translate all coords to make first reconstructed camera
  be at position (0,0,0).
- Blender's camera now affects on reconstructed data.
  Bundles are "parented" to active scene camera. So now
  bundles' could could be scaled and rotated when camera
  is rotating/scaling.
2011-07-08 17:42:13 +00:00
Sergey Sharybin
3685eac8e1 Merging r38220 through r38236 from trunk into soc-2011-tomato 2011-07-08 17:40:29 +00:00
Brecht Van Lommel
a5906de7c4 Fix #26962: softbody collision doesn't respect subsurf+displace modifiers.
Softbody was still using a flag to determine if it should use the final or
deform derivedmesh, but this wans't exposed in the UI. Others systems use the
collision modifier, now softbody uses it also to get vertices and faces, but
with own collision code.
2011-07-08 13:22:58 +00:00
Sergey Sharybin
f20de08afd Camera tracking integration
===========================

- 32 bit linux compilation should be fixed now.
- Camrea reconstruction data should be better now
  when there's no reconstructed cameras.
- Implemented "Set Origin" operator
- Added "Specials" W-key menu for SpaceClip.
  Supports such operators:
  * Enable track
  * Disable track
  * Set origin
2011-07-08 08:38:54 +00:00
Sergey Sharybin
5e80cb3662 Camera tracking integration
===========================

- Disallow negative size for bundles.
- Fixed bug with passing disabled markers to solver.
2011-07-07 19:27:14 +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
29f2cbdd8f Fix #27876: particles instancing a whole group didn't take group offset into account. 2011-07-06 10:05:27 +00:00
Brecht Van Lommel
959cd0fe69 Fix #27777: vertex color disabled when in a reused node material. 2011-07-05 19:45:26 +00:00
Brecht Van Lommel
1ff54f91ff Fix: #27861 bevel angle limit at 90° wasn't working well on cube, tweaked
epsilon value to be a bit smaller.
2011-07-05 08:28:54 +00:00
Janne Karhu
db2d737f0e Fix for [#27182] particle/collision kill interacting strangely
* Particle die time wasn't taken correctly into account in certain situations when calculating dynamics.
2011-07-05 02:56:14 +00:00
Janne Karhu
35965308a8 Fix for [#27579] Particles Cache Problem
* Horrors from the ancient world of deprecated code: object animation offset can't really work correctly with particles unless point cache takes full control of particle system timing.
* Disabled the non-working offset control from effecting particles so that for now particles will work consistently and the offset is only applied to the object.
2011-07-05 02:18:55 +00:00
Jeroen Bakker
830fe8af84 Updated the indent, sorry! 2011-07-04 19:22:37 +00:00
Jeroen Bakker
e814f2c71d ====== Proposal: Nodes property windows enhancement ======
===== Situation before this patch =====

in the current situation inside the node editor there is a properties panel (press 'n'-key). This pabel displays some information about the node, backdrop and grease pencil. The UI of the property panel is typically vertical oriented. Nodes in the other hand are not oriented in a direction. Both area's are draw via the same draw function.

With some nodes this will create not user-friendly UI. Try the color-balance for instance). The 3 color circles are drawn next to each other, it would be better to draw them below each other.

When creating more complex nodes you don't want to display all handles in the node-panel and in the properties panel. For instance fine-tuning handles you only want to appear in the property panel to reduce place in the node itself.

===== Situation after this patch  =====

This patch separates the draw functions of the property panel and the node panel.
When no special draw function is created for the property panel, the draw function of the node will be used as 'fallback'

===== Impact =====

==== BKE_node.h ====

add a new uifunc (called uifuncbut) to the bNodeType struct. The definition is the same as the uifunc.

==== node_buttons.c ====

if the uifuncbut is set, call it. currently calls the uifunc method

==== drawnode.c ====

static void node_composit_set_butfunc(bNodeType *ntype). set the uifuncbut function where needed. When at the end of the method uifuncbut is still empty, set uifuncbut to the uifunc. 

===== Final note =====

! PS. this is not limited to the compositor it also works for Materials and Textures !
! PPS. For other branching creating their own node-tree. Please make sure that your uifuncbut is set NULL or a valid draw function !
2011-07-04 18:48:36 +00:00
Jeroen Bakker
c4491f558b Current situation
A mesh can consist out of multiple material. Take a character with clothing's. the skin can be a different material as the different clothing's. During compositing it is a common use-case to only do a part of the composit on only a specific material. Currently this can not be done.

In blender movies this feature is known to be implemented, but until now it never got integrated into trunk.
Proposal

With material index the Blender internal renderer will be capable of creating a buffer containing the material indexes of the first pixel-hit. This will be implemented in the same manner as the object index.

In the compositor the ID Mask node can be used to extract the information out of the Render pass.
Impact
User interface

On the properties-space the next changes will be done

    Scene⇒Render layer⇒Passes⇒Material index will be added
    Material⇒Options⇒Pass index will be added

DNA

    Material struct will get an new field called “index”. this will be a short-type.
    Material struct the field pad will be removed.
    A new Render-layer pass will be added (bit 1«18)

RNA

    Material RNA is updated (based on “pass index” from object)
    Render layer RNA is updated (based on IndexOB)

Blender internal renderer

The Blender internal renderer will process the render pass as a copy of the Object index.
Blender compositor

The render layer input will get a new output socket called “IndexMA”
Usage

An example on how to use material index can be found at:

https://svn.blender.org/svnroot/bf-blender/trunk/lib/tests/compositing/composite_materialindex.blend

This is also example of a commit message longer than the commit itself :)
2011-07-04 18:14:41 +00:00
Sergey Sharybin
dc81327f75 Camera tracking integration
===========================

- Removed TRACK_PROCESSED flag which is actually unneeded now.
- When libmv fails to track marker for next frame, add marker
  for new frame with old position and set it up as Disabled.
- "Break" track path when markers sequence is "broken".
  This means path wouldn't be drawed over frames, during which
  racking object was lost.
- Update Properties Editor for SpaceClip during playback.
  Track preview button should now update nicely.
2011-07-02 16:03:47 +00:00
Sergey Sharybin
9cabee006b Camera tracking integration
===========================

- Fixed bug with swapped width/height used for per-pixel cycle
  when disabling color channel to be used for tracking.
- Marker preview is now using sub-pixel precision.
- Tracking stuff uses the same imbug generation function
  as preview area does. Sub-pixel precision should be ok
  now here too.
2011-07-02 11:06:30 +00:00
Sergey Sharybin
ed4d973da3 Camera tracking integration
===========================

- Removed unneeded checking of marker==NULL
- Tracks could be named now.
- Implemented "Follow Track" constraint to "parent"
  objects to tracks from movie clip.
- Added operator to create such constraint for active object
  using clip and track from current context.
2011-07-01 17:12:08 +00:00
Sergey Sharybin
f141b59497 Merging r37952 through r38022 from trunk into soc-2011-tomato 2011-07-01 16:39:13 +00:00
Ton Roosendaal
bd81fde1ff Packaging variable named 'a' for release 2011-07-01 14:46:14 +00:00
Campbell Barton
7f1fe0fdc2 fix for own mistake with key shortcuts r37850 2011-06-30 15:43:38 +00:00
Sergey Sharybin
85dc00e254 Fix for undefined "index" in key.c.
Probably forgotten to be remaned to defgrp_index after
recent commit here.
2011-06-30 07:35:41 +00:00
Campbell Barton
5c3e73fd56 replace inline loops for get_weights_array with calls to defvert_find_weight() 2011-06-30 03:04:39 +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
425a5886ae Camera tracking integration
===========================

Request from Sebastian König:

Change behaviour of "Clear Track Path" operator to clear
data for frames after current rather than clearing the whole track data.
2011-06-28 16:44:10 +00:00
Sergey Sharybin
a53035161b Camera tracking integration
===========================

- Fixed typo in marker state cache line offset.
- Do not try to track disabled markers.
2011-06-28 16:24:18 +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
08407e79ea Camera tracking integration
===========================

- Fixed "sliding" when panning footage in high zoom.
  This was most noticeable near right top corner of footage.
- Fixed 1px flickering of marker during playback with
  "Lock to Selection" toggled on. This was caused by
  precision errors. Used UI_view2d_to_region_no_clip-like
  offsets calculations, but in float values. Maybe there
  could be something smarter..
- Implemented tarcking along single frame.
  Hotkey is ALT+left/right array. Also changed a bit
  tracking tools buttons in Tools panel.
- Fixed "Lock to Selection" during tracking -- tracks
  synchronization should happen before centering view.
- Approximate marker's position for frames, which haven't
  got marker for them.
  Use the nearest marker from left side for approximation.
  For frames above  first marker's framenr sue first marker
  position.
- Markers now could be disabled. Added checkbox to
  "Active Marker" panel.
- Changes in cache line:
  * Bright line means active track has marker for frame.
  * Dark line means marker's position is approximated.
  * Yellow-less line means marker is disabled for that frames.

NOTE: .blend files which are saved with previous tomato version
      would fail to work properly. I don't want to spend time
      on making that files work properly atm, so don't blame on this.
2011-06-27 14:24:23 +00:00
Sergey Sharybin
70eb9e85c5 Merging r37732 through r37862 from trunk into soc-2011-tomato 2011-06-27 14:20:48 +00:00
Campbell Barton
ae49f6deb0 fix for a leak in sound_read_sound_buffer(), used when drawing the sequencer waveform. 2011-06-27 05:03:58 +00:00
Campbell Barton
308cd73d8b scenes now adjust brush usercounts on copying and freeing, pointed out by Jason Wilkins 2011-06-27 04:05:19 +00:00
Ton Roosendaal
1186bdfc08 Putting back blender.org and release number in info header.
Worked always great for tutorials in past, to check what's been used.
2011-06-26 17:01:10 +00:00
Campbell Barton
12e02fd474 own patch [#27752] Python Callback (Scriptlink functionality)
Python:
 * adds bpy.app.handlers which contains lists, each for an event type:
   render_pre, render_post, load_pre, load_post, save_pre, save_post
 * each list item needs to be a callable object which takes 1 argument (the ID).
 * callbacks are cleared on file load.

Example:
 def MyFunc(scene): print("Callback:", data)
 bpy.app.handlers.render_post.append(MyFunc)

C:
 * This patch adds a generic C callback api which is currently only used by python.
 * Unlike python callbacks these are not cleared on file load.
2011-06-24 16:54:30 +00:00
Campbell Barton
ebff5d5fb2 free_bvhtree_from_mesh was incorrectly useing sizeof() when clearing memory. 2011-06-24 05:34:03 +00:00
Lukas Toenne
587b51831d More flexible size options for particle billboards. This adds scale factors for width and height of billboards, relative to the particle size. It's useful when the particle size is primarily used for collision and the like, so the billboard appearance can be adjusted independently. Also allows non-square billboards.
In addition the billboards can be scaled by the particle velocity with optional head and tail factors (similar to line drawing options). This allows for pseudo-motionblur effects.
2011-06-23 18:59:47 +00:00
Campbell Barton
99253abef8 allow building with ffmpeg but not aud 2011-06-23 16:10:48 +00:00
Campbell Barton
bb3742fe91 correction to recent commit & made ffmpeg includes only add when enabled. 2011-06-23 15:58:41 +00:00
Campbell Barton
2023db70a8 cmake option to build without an audio library. 2011-06-23 09:27:56 +00:00
Sergey Sharybin
0bb215eece Camera tracking integraiton
===========================

- Corrected copyrights in my new files header.
- Added debug option to dump as PNG image content of search
  areas tracking between which was failed.
- Removed internal tracking settings like pyramid level and
  tolerance. Weren't useful neither for me nor for artists.
- Fixed bug in BKE_tracking_get_marker which could lead
  to failure of getting marker for current frame when
  there's marker for requested frame.
- Fixed bug with disappearing markers after tracking for
  cases when marker was added at frame different from
  tracking start frame and tracking start frame is
  equal to tracking end frame.
- Stop tracking when no markers could be tracked.
- Changed marker selection rules:
  * If marker isn't selected, all it's areas are getting
    selected with mouse.
  * If marker is selected and selection type doesn't have
    "extend" mode (SHIFT isn't holded down) the nearest
    to mouse cursor area would be selected. All the reast areas
    would loose selection.
- Limit number of frames which would be used in "Track Markers"
  operator. So now you could easily track along 10/20/etc frames.
- Change scene current frame after "Track Markers" operator.
- Implemented speed limitors. Now tracking could happen:
  * As fast as possible
  * With reatime speed (scene FPS)
  * With half of realtime speed
  * With quarter of realtime speed.
- Got rid of orig_user in MovieTrackingContext and user
  in TrackMarkersJob. This prevents crashes when user
  joins some space to SpaceClip from which tracking was started.
- Made keyframes on path bigger and do not draw keyframes for
  non-selected markers.

TODO: need to get rid of storing main, scene and screen
      in TrackMarkersJob. This is needed to set scene's
      current frame after tracking (such behavior is comfortable
      for artists) but this could lead to crash if scene is
      getting removed when tracking job is running.

      Render animation operator also stores scene and main,
      so such solution could be fine for first time before
      we've got something smarter.
2011-06-22 14:54:53 +00:00