Commit Graph

47594 Commits

Author SHA1 Message Date
Howard Trickey
f2f3ef8692 Fix Knife bug T39617: midpoint snap should affect intermediate points.
This reverts to the 2.69 behavior, where the snap-to-midpoint option
affected the intermediate crossed edges as well as the endpoints.
2014-04-16 14:19:36 -04:00
Campbell Barton
53fd22acb4 Fix T39756: Extrude, immediate scale
While not exactly a bug, switching to scale isnt generally useful to keep normal constraint.
2014-04-17 04:02:42 +10:00
Campbell Barton
e6cdce725c Code cleanup: use bools & const args 2014-04-17 02:53:34 +10:00
Bastien Montagne
ee387c6add Fix T39750: Bones disappearing with strange transforms.
Fixed this issue and another similar one, and some minor optimizations.
2014-04-16 18:20:27 +02:00
Bastien Montagne
a7120b9730 Fix related to new split normals draw code.
Tessellated split normals CDlayer had no swap func, hence ugly little test_index_face()
could not rotate its values correctly when rotating tessellated faces...

Extra-reported in T39735.
2014-04-16 16:54:23 +02:00
Bastien Montagne
7d45ddae33 Add Edge sharp/smooth to 3DView shading panel, as well as new Vert sharp/smooth. 2014-04-16 15:26:48 +02:00
Campbell Barton
d1b1d194dc Fix for half pixel offset rasterizing masks 2014-04-16 23:25:10 +10:00
Campbell Barton
b3972aeea0 Math Lib: optimize axis_dominant_v3_to_m3, approx 6x speedup
build the matrix directly rather then calculating with axis/angle

also remove unused function calc_poly_plane
2014-04-16 21:07:28 +10:00
Campbell Barton
233dac1494 Math Lib: increase epsilon for ortho_basis_v3v3_v3
passing in a unit length vector wouldn't always compute unit length vectors because the epsilon tested was too small.
2014-04-16 21:07:28 +10:00
Mitchell Stokes
d050577176 Fix T39445: Async LibLoad Crash
There was some deadlock due to trying manage Python's GIL. Instead of
continuing to fight with it, anything needing to call into Python while
conversion during lib loading is just delayed until it can be done in
the main thread.
2014-04-16 01:15:40 -07:00
Campbell Barton
4769b44bdd Fix T39745: "Origin to geometry" not working with Text objects. (regression) 2014-04-16 13:19:31 +10:00
Daniel Stokes
70f089b6f5 Fix T39509: Crash when assign an empty as a LoD
Missing check when looking for appropriate LoD
2014-04-15 20:06:56 +00:00
Antony Riakiotakis
556590fa3a Dyntopo:
Store PBVH node ID in CustomData. This avoids a number of hash deletions
and checks/insertions on big hashes.
2014-04-16 05:31:02 +03:00
Antony Riakiotakis
b179647d52 Dyntopo: slightly change node invalidation, only vertices can change BB
recalculation, only faces can change normal invalidation.
2014-04-16 02:10:24 +03:00
Jörg Müller
9351e872f5 Fix T39607: Audio not in synch when the blend file loads.
The problem here was that animation buffers got initialized with zeros in the beginning for unknown parts. Now it gets initialized with the first known value.
The bug's result was that the animation of the pitch started with 0 on first playback and thus any seeking while the pitch is zero resulted in seeking to the beginning.
2014-04-15 19:19:56 +02:00
Antony Riakiotakis
5d189069a4 Fix regression, sculpting on mesh with matcaps (without multires/ 2014-04-15 20:12:51 +03:00
Campbell Barton
cf01f2c760 Building with C++ guarded alloc works again 2014-04-16 02:24:21 +10:00
Campbell Barton
5c4bb81e49 Fix T39685: triangulation modifier creates zero-area faces 2014-04-16 02:24:21 +10:00
Joshua Leung
43b7dac427 Use binary search threshold when deciding whether to create ActKeyColumns too... 2014-04-16 03:23:53 +12:00
Joshua Leung
d2a5ddb4ec Optimisations for building "Long Keyframes"
For a long time, one of the bottlenecks when drawing summary channels in the dopesheet
(especially with many objects) was how the long keyframes feature (i.e showing holds
between keyframes) got built. Specifically, it was the step where we check on the previous
keyframe to see whether there's a hold between those two.

The old code performed some elaborate checks, which made sense back when we used to handle
certain summary channels (e.g. object-action/ipo, and groups IIRC) differently. However,
nowadays, everything just does it by going over the FCurves one by one, so the offending
code wasn't really providing much benefit. Unless I've forgotten some other reason why
that old method is necessary, this commit should provide a decent speedup here, making
things somewhat interactive now (if still a bit jerky).

Other Tweaks:
1) Introduced float-precision threshold when checking to see whether an existing long
   keyframe could be reused. This should hopefully reduce the number of fp-jitter issues
   when creating summaries for many channels, reducing the number of duplicates created.
2) Precompute colours used for shading the long keyframes, instead of recomputing for
   each block.
2014-04-16 03:23:52 +12:00
Joshua Leung
76dd3db304 Move binary-search threshold used for FCurves to BKE_fcurve.h header
Since this is now pretty much the de-facto "minimum distance between keyframes",
we might as well expose this in this header so that other places which need similar
thresholds can perform similar checks (needed for my next commit)
2014-04-16 03:23:51 +12:00
Bastien Montagne
09e5aa5156 Fix T39234: popup menus behave poorly when they have not enough width for all their columns.
Issue fixed by:
* Not having constant width for all columns, but adapt each to its content's width;
* Adapting undo's menu height to undo list length (so that we never have more than three columns).

It is still possible to get issues in extreme cases (small screen, high DPI size,
long op names everywhere...), but this should now be rare corner cases.

Also fixes a minor glitch with undo menu (first column had one item less than the others...).
2014-04-15 16:49:49 +02:00
Lukas Tönne
09874df135 Structural cleanup and improvements for the compositor.
Many parts of the compositor are unnecessarily complicated. This patch
aims at reducing the complexity of writing nodes and making the code
more transparent.

== Separating Nodes and Operations ==

Currently these are both mixed in the same graph, even though they have
very different purposes and are used at distinct stages in the
compositing process. The patch introduces dedicated graph classes for
nodes and for operations.

This removes the need for a lot of special case checks (isOperation etc.)
and explicit type casts. It simplifies the code since it becomes clear
at every stage what type of node we are dealing with. The compiler can
use static typing to avoid common bugs from mixing up these types and
fewer runtime sanity checks are needed.

== Simplified Node Conversion ==

Converting nodes to operations was previously based on "relinking", i.e.
nodes would start with by mirroring links in the Blender DNA node trees,
then add operations and redirect these links to them. This was very hard
to follow in many cases and required a lot of attention to avoid invalid
states.

Now there is a helper class called the NodeConverter, which is passed to
nodes and implements a much simpler API for this process. Nodes can add
operations and explicit connections as before, but defining "external"
links to the inputs/outputs of the original node now uses mapping
instead of directly modifying link data. Input data (node graph) and
result (operations graph) are cleanly separated.

== Removed Redundant Data Structures ==

A few redundant data structures have been removed, notably the
SocketConnection. These are only needed temporarily during graph
construction. For executing the compositor operations it is perfectly
sufficient to store only the direct input link pointers. A common
pointer indirection is avoided this way (which might also give a little
performance improvement).

== Avoid virtual recursive functions ==

Recursive virtual functions are evil. They are very hard to follow
during debugging. At least in the parts this patch is concerned with
these functions have been replaced by a non-virtual recursive core
function (which might then call virtual non-recursive functions if
needed). See for example NodeOperationBuilder::group_operations.
2014-04-15 16:28:10 +02:00
Campbell Barton
28a829893c Math Lib: avoid having to pass a pre-calculated normal tot area_poly_v3
add normal_poly_v3
2014-04-16 00:29:57 +10:00
Bastien Montagne
e4c2a3c31c Various fixes/improvements regarding BMesh's elem_index_dirty and BM_LOOP handling.
Most notably, BM_LOOP and BM_FACE index recompute should now be fully decoupled.
2014-04-15 16:20:07 +02:00
Bastien Montagne
a15ae56421 Fix T39743: Crash when deleting faces in with new autosmooth.
Odd I did not catch this one... :/
2014-04-15 16:20:07 +02:00
Brecht Van Lommel
f270b34e99 Fix T37675: blender internal viewport render wrong for volumes after rotation.
We really should not have Object.imat_ren, that's the wrong place to put render
data. But just update it now on rotation rather than doing a bigger refactor to
remove it.
2014-04-15 15:56:56 +02:00
Sergey Sharybin
97881d06b2 Fix T39610: Shared mesh used for Mesh Deform causes crash
For now disable using linked edit mesh in the meshdeform modifier.

This is because editbmesh_get_derived_cage_and_final() might easily
conflict with the thread which evaluates object which is in the edit
mode for this mesh.

We'll support this case once granular dependency graph is landed.
2014-04-15 18:37:41 +06:00
Bastien Montagne
9f17300d37 Fix T39607: Audio not in synch when the blend file loads.
Root of issue is probably in AUDASPACE itself (or even in OpenAL?).
Issue not present with SDL backend, only OpenAL afaik.

For now, workaround in Blender is to call seek twice when starting play
(not needed when resuming from pause).
2014-04-15 14:25:33 +02:00
Bastien Montagne
08de05f3db Some style cleanup in sound area. 2014-04-15 14:25:33 +02:00
Campbell Barton
ea99efeb2c Code cleanup: indentation 2014-04-15 19:44:13 +10:00
Bastien Montagne
d9211b1e7b Fix compilation (size_t not defined) by including stddef.h in BLI_sys_types.h 2014-04-15 09:11:45 +02:00
Tamito Kajiyama
e1e519bfc0 Fix my last commit cad4bfe: Added 'use_' prefix to Freestyle edge/face mark properties. 2014-04-15 14:44:08 +09:00
Campbell Barton
955634e17c Revert part of last commit,
RNA is low level data access, setting mesh values shouldn't change draw options.

Also its redundant to name attrs Face.freestyle_face_mark,
removed edge/face from attr names
2014-04-15 14:46:53 +10:00
Campbell Barton
aa10cf7f5c GHash: add BLI_ghashutil_uinthash_v4 for hashing 4 ints at once 2014-04-15 14:40:33 +10:00
Tamito Kajiyama
cad4bfe653 Freestyle: Added missing mesh property definitions for Freestyle Edge/Face marks.
This revision also addresses the issue of these properties not shown in the Outliner
in the Datablocks display mode.  Now Freestyle edge/face marks can be keyframed
through the Outliner.
2014-04-15 13:30:01 +09:00
Campbell Barton
a7241d09cd GHash: add typed hash functions (were all (void *))
- BLI_ghashutil_strhash_n takes string length, to avoid terminating the string before hashing.
- BLI_ghashutil_inthash/uinthash take ints, to avoid casting to (void *)

This also showed up incorrect use of inthash, which was using a pointer.
2014-04-15 14:22:36 +10:00
Campbell Barton
ea610e655c Style cleanup: C & pep8 2014-04-15 13:11:48 +10:00
Bastien Montagne
3cf39fc72a Fix T39740: New Autosmooth instant crash entering Edit Mode
One should always be wary of last minute changes, especially in comples code area... :/
2014-04-14 23:42:38 +02:00
Sergey Sharybin
0c51010c67 Fix video FFmpeg nt being able to produce video files due to usage of deprecated settings 2014-04-15 00:15:09 +06:00
Sergey Sharybin
8fd6879b88 Fix T39700: Plane deform still works forever
Clamped the EWA sampling region to buffer size now. Solves the issue,
but needs more tests to be sure weights are correct.
2014-04-14 23:59:08 +06:00
Bastien Montagne
4f00737f4b Fix T39736: Ctrl+V reports "Objects Pasted" regardless if it worked or not. 2014-04-14 19:49:18 +02:00
Sergey Sharybin
dcec99734b Fix for the eyedropper fixes from today
Missing color copy, noticed by @campbellbarton, thanks!
2014-04-14 17:56:04 +06:00
Sergey Sharybin
4863253c2f Fix T39702: VSE channel preview: strips used as effect operands no more visible 2014-04-14 17:50:47 +06:00
Sergey Sharybin
e6ff0ec73d Fix T39704: Texture painting fails with different float image working space
This was rather a TODO item related on supporting the proper painting color
space, but added a small tweaks which will make things working for now in
most of the situation (assuming the default view of display is ivnertible,
as it is to be expected to be anyway).

Shouldn't give much overhead since the conversion processors are cached in
the color management code.

And for the note: no, projection painting does not requite such a tweak
because viewport works in sRGB space anyway.
2014-04-14 14:10:00 +06:00
Sergey Sharybin
0d38f21cbc Fix the eyedropper not working properly with different scene linear spaces
Either was some residue from the past or somebody didn't implement this in
the right way.

Also fixed memory leak in ED_space_clip_color_sample() caused by missing
image buffer release.
2014-04-14 13:48:20 +06:00
Campbell Barton
7c78bcef6c Fix for crash un-indenting in the text editor 2014-04-14 13:28:09 +10:00
Antony Riakiotakis
6f153046e0 Reduce overhead when sampling texture images for brushes. The tests can
be cached and reused.
2014-04-13 19:03:14 +03:00
Antony Riakiotakis
5d79c2662e Cleanup:
Naming:

Change pressure to size_pressure, it notes correctly that this value is
updated and expected to be used for size updating only.
Change name of cursor function and since it is used for uv sculpting
only now move to the relevant file. Also cleanup unneeded functionality
from function.

Stroke:

Separate updating of stroke variables to invariants (updated when
stroke->init = false) and variants.
2014-04-13 18:14:45 +03:00
Antony Riakiotakis
301d7d2f63 Fix T39430, incorrect color management in paint cursor when using
texture nodes.

Adopt a similar system to texture sampling for painting.
2014-04-13 17:20:23 +03:00