Commit Graph

2167 Commits

Author SHA1 Message Date
8c3bd1eda1 Cleanup: style 2019-01-15 10:36:52 +11:00
b5b6555768 cleanup last commit 2019-01-14 14:13:39 +01:00
ec3e2b0ce5 Fix T60304, T60301: setting error message in bevel modifier results in double free 2019-01-14 14:10:33 +01:00
56ceaea5b5 Fix T60244: Bisect in mirror modifier doesn't work properly.
That was indeed not working properly, not at all. Except for
the basic case, but as soon as you used another object to define the
mirror plane, it would be utterly broken, in several different ways!
2019-01-09 13:28:34 +01:00
91a155833e Cleanup: comments causing bad clang-format output 2019-01-08 10:37:43 +11:00
b786416106 Fix T59151 Bevel modifier has bad input width for percent.
The units scaling was inappropriate when the bevel value was
to be interpreted as a percent, so added a separate rna property
for "Width Percent" and made UI show the width appropriate for
current offset_type.
2019-01-07 07:29:54 -05:00
496f6adce2 Better bevel normal hardening when some faces were smooth.
Harden normals causes normal splitting, which will not give the
appearance expected due to autosmooth unless some edges are sharpened,
so this change fixes that. Also bevel tool will turn on autosmooth
if not already on if hardening normals.
2019-01-06 18:12:00 -05:00
e305560f13 Cleanup: add trailing commas to structs
Needed for clang formatting to workaround bug/limit, see: T53211
2019-01-07 00:34:48 +11:00
e97700ef74 Fix T59898: Slow modifier stack on trasnform 2019-01-04 14:47:41 +01:00
aef01c47e6 Fix T58113 Multiple problems with bevel harden normals.
Move the bevel hardening code all into bmesh_bevel.c.
Based on user feedback, rewrote the bevel hardening algorithm
to be more what users want.
Based on user feedback, changed the UI, removing some
not-useful options. Now hardening normals while beveling
is enabled by a simple checkbox.
Now setting face strength gives options for which faces
get their face strength set.
2019-01-03 13:39:52 -05:00
9200dc0eb1 Cleanup: preprocessor indentation 2019-01-03 15:52:07 +11:00
543ddbe6bf Cleanup: warnings (clang) 2018-12-30 15:15:05 +11:00
c509507714 Fix T59785: Curve modifier does not update in realtime in object mode
Reviewers: brecht

Maniphest Tasks: T59785

Differential Revision: https://developer.blender.org/D4134
2018-12-28 16:26:40 +01:00
2ca4f4f0cb Fix T59708: decimate modifier does not show face count before decimation. 2018-12-21 16:55:26 +01:00
c02f67fa8a Fix T57777: Decimate modifier face count does not work
Reviewers: brecht

Differential Revision: https://developer.blender.org/D4106
2018-12-20 11:17:45 +01:00
a84c823b89 Fix T58652: Crash editing shape keys weirdness with instances
This is a second attempt to get the crash fixed. The original fix
worked, but it was reverted by d3e0d7f082.

Now the logic goes as:

- All pointers which we can not have shared (the ones which are
  owned by the runtime) are cleared.
- The rest of runtime stays untouched.

This seems to be enough to keep particles happy.
2018-12-17 12:33:37 +01:00
d3e0d7f082 Fix broken particle distribution after recent fix 2018-12-14 17:33:54 +01:00
f85b05111f Fix T59334: Crash initializing crazyspace on object with subsurf and displacement 2018-12-14 16:07:59 +01:00
9d4ab3fe58 Fix T59365: Blender crashes when I try to open a .blend file.
Broken logic in check for a valid vgroup storage pointer...
2018-12-14 14:44:20 +01:00
dd4c87cd04 Merge branch 'master' into blender2.8 2018-12-14 11:09:42 +11:00
6e2d9ef2db Cleanup: naming (mean -> median) see T47811 2018-12-14 10:54:11 +11:00
b60aedc14c Fix T58450: Skin modifier not working if applied after subsurf 2018-12-12 15:07:03 +01:00
49490e5cfb Merge branch 'master' into blender2.8 2018-12-12 13:02:09 +11:00
e757c4a3be Cleanup: use colon separator after parameter
Helps separate variable names from descriptive text.
Was already used in some parts of the code,
double space and dashes were used elsewhere.
2018-12-12 12:50:58 +11:00
1ddfd8c9ec Cleanup: style 2018-12-08 15:01:47 +11:00
de491abf99 Fix modifiers evaluation outside of depsgraph/CoW context.
Fix T58237: Exporters: Curve Modifier not applied when "apply modifiers" are selected.
Fix T58856: Python: "to_mesh" broken in 2.8.

...And many other cases... ;)

Thing is, we need target IDs to always be evaluated ones (at least I
cannot see any case where having orig ones is desired effect here).
Depsgraph/Cow system ensures us that when modifiers are evaluated by it,
but they can also be called outside of this context, e.g. when doing
binding, or object conversion...

So we need to ensure in modifiers code that we actually are always
working with eval data for those targets.

Note that I did not touch to physics modifiers, those are a bit touchy
and rather not 'fix' something there until proven broken!
2018-12-07 18:55:08 +01:00
16e67dc206 Merge branch 'master' into blender2.8 2018-12-07 16:42:36 +01:00
0eb61c799d Fix T57994: Particle Instance modifiers 'Index Layer' off by one
better have this vertex color layer cover the whole 0-1 range

thx @sergey for checking

Maniphest Tasks: T57994

Differential Revision: https://developer.blender.org/D3976
2018-12-07 16:33:25 +01:00
79312c1912 Depsgraph: Remove duplicated sets of recalc/update flags
There were at least three copies of those:

- OB_RECALC* family of flags, which are rudiment of an old
  dependency graph system.
- PSYS_RECALC* which were used by old dependency graph system
  as a separate set since the graph itself did not handle
  particle systems.
- DEG_TAG_* which was used to tag IDs.

Now there is a single set, which defines what can be tagged
and queried for an update. It also has some aggregate flags
to make queries simpler.

Lets once and for all solve the madness of those flags, stick
to a single set, which will not overlap with anything or require
any extra conversion.

Technically, shouldn't be measurable user difference, but some
of the agregate flags for few dependency graph components did
change.

Fixes T58632: Particle don't update rotation settings
2018-12-07 11:37:38 +01:00
989fbff16f Cleanup/refactor binding code for MeshDeform modifier.
We had two different ways of doing it, SurfaceDeform and LaplacianDeform
would do it through a special modifier stack evaluation triggered from
binding operator, while MeshDeform would do it through a regular
depsgraph update/eval (also triggered from its binding op).

This enforces the later to search back for orig modifier data inside
modifier code (to apply binding on that one, and not on useless CoW
one).

Besides the question of safety about modifying orig data from threaded
despgraph (that was *probably* OK, but think it's bad idea in general),
it's much better to have a common way of doing that kind of things.

For now it remains rather dodgy, but at least it's reasonably consistent
and safe now.

This commit also fixes a potential memleak from binding process of
MeshDeform, and does some general cleanup a bit.
2018-12-07 11:22:31 +01:00
484389cdcd Fix T58210, Part II: Surface Deform modifier (un)binding is broken.
This fixes/clarifies Surface Deform evaluation code that does the
binding, since that part should only be called outside of depsgraph
evaluation, with orig data-blocks and not CoW ones.

Now we have a decent amount of asserts and checks to ensure eveything
works as expected.

Also had to add a special case to get target's mesh in binding case,
since often target's evaluated mesh is not available, in that case (and
in that case only), we can actually compute that mesh (because we are
out of depsgraph evaluation).
2018-12-05 20:54:02 +01:00
6e00415a85 Fix T58679: Missing modifiers update on changes to texture 2018-12-05 17:35:48 +01:00
e666ee965c Fix T58227: Subdivision Surface Type Simple messes up UVs
This seems to be a bug in OpenSubdiv. For now simply use Catmark
subdivision scheme with infinitely sharp edges.

Later on it's either gets fixed in OpenSubdiv or we do bilinear
subdivision on our side.
2018-12-04 15:18:37 +01:00
6330b715ef Fix T58220: EdgeSplit at Split Angle: 0 doesn't split flat faces.
Add special handling for both edge cases (:p):
* 180° is same as no splitting by angle;
* 0° is same as split on all edges unconditionnaly.

In both cases we can also avoid computing poly normals.
2018-12-04 10:51:19 +01:00
17a4323ef5 Subdiv: Set edge render flags according to Optimal Display
This is a part of T58609, but work is still needed to properly
support this flag in the draw manager.
2018-12-03 17:05:28 +01:00
bb16167fd8 Depsgraph: completely move customdata_mask to the ID node.
Move all mask-related fields from Object and OperationDepsNode
to Object_Runtime and IDDepsNode. Auto-apply DEG_TAG_GEOMETRY
if the mask changes after DEG rebuild. Update DEG API and all
code that uses it.

This fixes "source mesh data is not ready" errors from Data
Transfer modifier when parameters are changed in the UI after
the recent mesh_get_eval_final fix.

Reviewers: sergey

Differential Revision: https://developer.blender.org/D4025
2018-12-03 18:29:06 +03:00
95be6826e3 Data Transfer Modifier: fix mesh_get_eval_final usage.
It can't be used during modifier evaluation, and rna
enum code should access the evaluated objects.
2018-12-03 17:01:02 +03:00
71c624dcd8 Partial fix for T58113 bevel harden normals bug.
This fixes the problem where not all faces got hardened properly
when using a hardening mode in the bevel modifier.
2018-12-02 06:29:58 -05:00
62edc31d34 Cleanup: correct function signatures 2018-11-28 16:21:24 +11:00
9d4129eee6 Modifiers: fix bunch of missing 'self transform' deg relations.
When a modifier depends on some other object's position, then it also
depends in its own position, this has to be also told to depsgraph.

Fixes several modifiers where moving target would update the modifier,
while moving modified object itself would not.
2018-11-27 21:17:06 +01:00
0ebb632f69 Fix missing reset-to-NULL in own recent changes in modifiers utils. 2018-11-27 21:17:06 +01:00
013a5c8b77 MOD_wave: fix various issues.
Missing dependsOnNormal callback, potential usage of NULL mesh
pointer, style...
2018-11-27 21:17:06 +01:00
2a578b37b3 Modifiers: cleanup/harmonize deform modifiers code re. mesh source.
Also fixes a few issues (like meshdeform's EM variant not using editmesh
data), and adds a few optimizations (like only generating that source
mesh when we do have a vgroup defined in parameters, for modifiers only
using it to access vgroup)...
2018-11-27 21:17:06 +01:00
b4087ea639 Modifiers: Refactor MOD_deform_mesh_eval_get() helper a bit.
Now that function also takes expected number of vertices, and do the
checks against generated mesh internally.
2018-11-27 21:17:06 +01:00
4543da6ca6 MOD_simpledeform: do not compute mesh when not needed.
Related to T57972.
2018-11-27 21:17:06 +01:00
c89bb6f165 MOD_smooth: do not compute mesh when not needed.
Related to T57972.
2018-11-27 21:17:06 +01:00
9c82cc5123 MOD_smooth: do not compute mesh when not needed.
Also fixes potential memory leak.

Related to T57972.
2018-11-27 21:17:06 +01:00
15add11595 MOD_shrinkwrap: do not compute mesh when not needed.
This modifier only uses mesh to get vgroup, which is only needed in case
modified object is indeed a mesh! Building a mesh from curve here is not
only useless and time-consuming, it will also easily fail the assert
about same number of vertices!

Note that surface_project and subsurf option also need more work at some
point, but this is probably not that urgent for now.

Also, use MOD_get_vgroup() helper in modifier code itself and pass
resulting MDeformVert & index to BKE_shrinkwrap's `shrinkwrapModifier_deform()`,
this is simpler and avoids duplicating vgroup handling code.

Related to T57972.
2018-11-26 21:07:50 +01:00
ede994c314 MOD_curve: do not compute mesh when not needed.
This modifier only uses mesh to get vgroup, which is only needed in case
modified object is indeed a mesh! Building a mesh from curve here is not
only useless and time-consuming, it will also easily fail the assert
about same number of vertices!

Also, use MOD_get_vgroup() helper in modifier code itself and pass
reluting MDeformVert & index to BKE_curve's curve_deform_verts(),
this is simpler and avoids duplicating vgroup handling code.

Also fixes crash when used on lattice.

Related to T57972.
2018-11-26 21:07:50 +01:00
8cd5edf850 MOD_cast: do not compute mesh when not needed.
This modifier only uses mesh to get vgroup, which is only needed in case
modified object is indeed a mesh! Building a mesh from curve here is not
only useless and time-consuming, it will also easily fail the assert
about same number of vertices!

Also fixes crash when used on lattice.

Related to T57972.
2018-11-26 21:07:50 +01:00