Commit Graph

52002 Commits

Author SHA1 Message Date
Sergey Sharybin 902976e012 Fix #35378: Shape Key Animation Data still linked when creating full copy of scene
Two issues were found:

- Mesh/Curve/Lattice kay blocks weren't copying their actions
  when making object data local. This lead to object data using
  diffrent AnimData structures which were using the same action.

- Copying actions shall happen after object object data was
  localized. This is so because otherwise we'll copy actions
  for original AnimData, not for copied one.

Reviewed by Joshua, thanks!
2013-06-03 12:28:46 +00:00
Sergey Sharybin 29d0c8cb19 Fix #35610: Multiresolution Modifier Complains About Sculpt Mode
If multires has got zero subdivisions in sculpt mode, no need
of displaying warning message. It was rather strange decision
which confused artists.

Now multires with zero subdivisions will be ignored silently
when in sculpt mode.
2013-06-03 08:26:12 +00:00
Campbell Barton 790e9d9fa0 fix [#35311] Planar Decimate / Limited Dissolve fails to merge some adjacent faces
optionally limit by face flipping, also added support to delimit by material and edge crease.
2013-06-03 05:07:16 +00:00
Campbell Barton 8a1ef33e88 fix [#35468] screen list shows temp layout 2013-06-03 04:06:54 +00:00
Campbell Barton f658124ca5 fix [#35477] Clicking "Connect Hair" button translates a mesh by it's object location. 2013-06-03 03:47:41 +00:00
Campbell Barton 2a195b7825 fix [#35501] Operator log: some property changes log as [...].(null) = ... 2013-06-03 00:46:20 +00:00
Campbell Barton 3ea4d7ff01 fix [#35603] Crash with "Tag Freestyle Edge Mark" 2013-06-02 23:58:53 +00:00
Campbell Barton 9acadd17a9 fix [#35592] Collada (DAE) exporter messes up vertex colors 2013-06-02 23:53:03 +00:00
Campbell Barton dfad9b0c09 fix [#35555] Collada: export destroys mesh in some cases
add arguments to calculate normals when converting to bmesh:
  BM_mesh_bm_from_me, DM_to_bmesh

This gives some speedup to undo (which didnt need to re-calculate vertex normals), and array modifier which doesnt need to calculate face normals at all
2013-06-02 23:20:49 +00:00
Campbell Barton 99b55ef6eb add asserts when scanfilling or triangulating with zero length normal. 2013-06-02 22:54:00 +00:00
Campbell Barton ad0305281b fix [#35545] Weight paint with mirror modifier does not accurate represent bone influence 2013-06-02 22:40:45 +00:00
Campbell Barton 7bb1279279 fix [#35489] mode_set() not working in background mode, Scene change doesn't change mode either 2013-06-02 22:21:45 +00:00
Campbell Barton 0c004723fe fix [#35434] Segmentation fault switching screen layout from python
(take 2), only free popup handlers.
2013-06-02 20:59:00 +00:00
Sergey Sharybin 834492489a Fix #35599: MovieClip node crashes when using multilayer exr
Multilayer EXR is not supported as a source for movie clip yet,
but there's no excuse to crash!
2013-06-02 19:55:57 +00:00
Tamito Kajiyama d8c2709414 Better API design for making text datablocks after loading.
An optional 'internal' argument was added to the bpy.data.texts.load() operator.  
The changes in revision 57153 were reverted, so that the is_in_memory and is_dirty
properties of text datablocks are not editable again.

In the C API layer, BKE_text_load_ex() was introduced to allow for optionally
making text datablocks internal after loading.
2013-06-02 17:52:06 +00:00
Campbell Barton cfd0438d3c fix for crash in edgering subd when 3+ disconnected edge rings were found. 2013-06-02 17:02:56 +00:00
Campbell Barton 7068a5eba7 tweak to recent commit, don't show keymap in menu tooltips. 2013-06-02 15:58:43 +00:00
Sergey Sharybin 732c566f2f Fix #35587: Cycles: image movie to single image crashing
Crash was happening on windows platforms only and was caused
by some specifics about how CRT works.

Basically, blender and all of the .dll are compiled with /MT
flag, which means blender.exe and all .dll are using separate
environments. This makes it impossible to pass file descriptors
from blender to other dll, because it becomes invalid in the dll.

And this is exactly what was happening: OIIO was trying to open
movie file with all known plugins and one of them was zlib. And
the way OIIO was using zlib API is opening the file using Boost
and passing a file descriptor to zlib. And since zlib was a
dynamic library this lead to general issues using this descriptor
in zlib code.

Solved by linking to zlib statically. This allows to safely pass
file descriptor to zlib API. Alternative would be to compile all
the stuff with /MD flag, but that's much bigger and less robust
way to fix the issue.

Tested on windows using msvc2008, scons plus cmake both 32 and 64
bit versions. Seems to be working fine.

Further tweaks for mingw and msvc2012 could be needed tho.
2013-06-02 15:02:17 +00:00
Campbell Barton ec30e3f00e corrections to modifiers from recent normal handling changes
- solidify didn't define a dependsOnNormals callback (which it should have)
- build wasn't passing on dirty normals.
- decimate wasnt setting dirty normals.
2013-06-02 04:09:29 +00:00
Campbell Barton e648ca8862 use booleans for modifiers and api callbacks. 2013-06-02 03:59:19 +00:00
Campbell Barton 7ce0ea00a0 code cleanup: remove unused struct 2013-06-02 02:25:40 +00:00
Campbell Barton a8c55a612b remove duplicate operator,
select-split and unlink-selection did the same thing,
keep select split since it fits closer to mesh editmode and single key access (Ykey).
2013-06-02 00:29:30 +00:00
Campbell Barton 075a910d72 fix regression in reducing normal recalculation [#35595],
pass the dirty-normal-state from the input dm to the output.
2013-06-02 00:20:26 +00:00
Ton Roosendaal c6d1b6c3fc Bug fix, own collection while testing
New OSX "Life resize" was also being called during opening of windows - when things are
not initialized yet. Crashed on opening full-screen window (which is animated in OSX).
2013-06-01 15:24:15 +00:00
Lukas Toenne 8d3cdf292c Extended max size for group node types from 200 to 400, in case users need long socket names visible. 2013-06-01 12:45:42 +00:00
Dalai Felinto 77e4227c25 fix stubs for blenderplayer linking 2013-06-01 08:59:52 +00:00
Dalai Felinto eb41fdb367 rna small fixes (bad copy-pasting) 2013-06-01 08:49:51 +00:00
Campbell Barton 876cc99aff display menu items key shortcuts in the button tooltips. 2013-06-01 05:53:44 +00:00
Campbell Barton 2d4a682a8e add popup menu to allow python scripts to show popups without having to define a menu class first. 2013-06-01 04:06:38 +00:00
Thomas Dinges f47cb7e2d9 Fix for r56965 by Tamito:
* Panorama Camera was not working for Blender Internal and Cycles anymore.

Code checked for Freestyle render layer flag, but as the flag is enabled per default, it broke Panorama camera in all cases. It made no sense to check this on a render layer basis anyway... check if Freestyle is enabled in general now instead.
2013-06-01 02:14:07 +00:00
Campbell Barton 249bf25565 editmesh display user request, keep the edge lengths within the view bounds (so you can see edge length even when zoomed in) 2013-05-31 23:52:39 +00:00
Campbell Barton 3e97e2c8e8 style cleanup 2013-05-31 22:35:25 +00:00
Campbell Barton b577f0c16e previous fix for #35578 didnt work right, check direction of the open edge loop too. 2013-05-31 18:58:32 +00:00
Campbell Barton db42a596aa fix [#35578] New bridge tool; bowtie crossing when destination edges form one half of an 'X' 2013-05-31 15:48:42 +00:00
Sergey Sharybin 7f69cbb39f Fix #35497: rendering preview range gives wrong duration
Was a mistake in PTS calculation when using opengl animation render.
2013-05-31 10:31:44 +00:00
Sergey Sharybin cc390206fc Fix #35581: Crash when using Track Refine 2013-05-31 10:17:29 +00:00
Tamito Kajiyama 2ad930e41a Made text datablock properties 'is_in_memory' and 'is_dirty' editable in Python.
The rationale of this revision is to provide an easy way to make text datablocks internal
from within Python (i.e., by setting these properties to True and the 'filepath' property
to empty string).
2013-05-31 07:40:03 +00:00
Campbell Barton 54e8cacdcf improve edgering subdivide curvature calculations (calculate length projected onto the normal plane).
also correct recely added asserts.
2013-05-31 06:28:11 +00:00
Campbell Barton 58a748431e correct cast to uintptr_t for smallhash use. 2013-05-31 00:19:38 +00:00
Campbell Barton 638c021039 tweak to edge-loop select, so loop selecting a side of a subdivided triangle selects all edges along one side. 2013-05-30 21:39:12 +00:00
Campbell Barton 46eb79c862 units: display 0.5mm rather then 500um, nicer when dealing with very small sizes but not microscopic. 2013-05-30 21:17:50 +00:00
Campbell Barton c431df8f77 remove null checks for list functions, all hard asserts so we would have noticed problems already. 2013-05-30 19:05:46 +00:00
Campbell Barton ba767857b8 fix for incorrect use of strncat in uiItemMenuEnumO 2013-05-30 18:42:32 +00:00
Campbell Barton d7f51f83f6 remove CD_MASK_NORMAL from CD_MASK_DERIVEDMESH, bmesh merge included this but its not needed.
Now add asserts to make sure this layer is only added once the modifier stack has been calculated.
this saves normal layer being calculated whenver vertex normals need updating.
2013-05-30 18:09:19 +00:00
Campbell Barton 09e11ad6ef modifier stack: lazy initialize normals
many modifiers were calculating normals, when those normals were ignored by the next modifier.
now flag normals as dirty and recalculate for modifiers that set use `dependsOnNormals()` callback.

Quick test on mesh with 12 modifiers (mostly build type), calculated normals 6 times, now it only runs once - so this will give some speedup too.
2013-05-30 17:36:43 +00:00
Campbell Barton 7586580241 fix debug derived mesh print function, layers in the customdata that were NULL were not printed. 2013-05-30 13:13:43 +00:00
Lukas Toenne 281e538be0 Fix #35570, old group nodes with empty socket name strings crash. The identifier assignment was not taking potentially empty name strings into account. In addition some of the BLI_uniquename calls were
not passing a valid defname parameter, also crashing.
2013-05-30 11:51:21 +00:00
Sergey Sharybin 79f5a013be Patch #35464: Marker placement for motion tracker by clicking on a desired location
Now button in the toolshelf behaves this way:
- User clicks on "Add Marker"
- Then he clicks where the marker should get placed

Patch by Marcos Couto (ocf) with own modifications.
2013-05-30 11:37:53 +00:00
Brecht Van Lommel fe76c06b30 UI: support 3 digit hex colors like HTML, e.g. #123 becomes #112233.
Patch #35359 by Forest Ka.
2013-05-30 09:48:17 +00:00
Sergey Sharybin cf5e979fb4 Motion tracking: automatic keyframe selection
Implements an automatic keyframe selection algorithm which uses
couple of approaches to find out best keyframes candidates:

- First, slightly modifier Pollefeys's criteria is used, which
  limits correspondence ration from 80% to 100%. This allows to
  reject keyframe candidate early without doing heavy math in
  cases there're not much common features with first keyframe.

- Second step is based on Geometric Robust Information Criteria
  (aka GRIC), which checks whether features motion between
  candidate keyframes is better defined by homography or
  fundamental matrices.

  To be a good keyframe candidate, fundamental matrix need to
  define motion better than homography (in this case F-GRIC will
  be smaller than H-GRIC).

  This two criteria are well described in this paper:
  http://www.cs.ait.ac.th/~mdailey/papers/Tahir-KeyFrame.pdf

- Final step is based on estimating reconstruction error of
  a full-scene solution using candidate keyframes. This part
  is based on the following paper:

  ftp://ftp.tnt.uni-hannover.de/pub/papers/2004/ECCV2004-TTHBAW.pdf

  This step requires reconstruction using candidate keyframes
  and obtaining covariance matrix of 3D points positions.
  Reconstruction was done pretty much straightforward using
  other simple pipeline routines, and for covariance estimation
  pseudo-inverse of Hessian is used, which is in this case
  (J^T * J)+, where + denotes pseudo-inverse.

  Jacobian matrix is estimating using Ceres evaluate API.

  This is also crucial to get rid of possible gauge ambiguity,
  which is in our case made by zero-ing 7 (by gauge freedoms
  number) eigen values in pseudo-inverse.

  There're still room for improving and optimizing the code,
  but we need some point to start with anyway :)

  Thanks to Keir Mierle and Sameer Agarwal who assisted a lot
  to make this feature working.
2013-05-30 09:03:49 +00:00