Commit Graph

975 Commits

Author SHA1 Message Date
2a40c6ee2b Modifier eval: add support for request poly normals layer.
Ensure we do get poly normals if they are requested in given cddata mask.
2019-03-08 17:53:31 +01:00
605749ffaa Modifiers Evaluation: generate loop normals when requested.
This also fixes T62228.

However, datatransfer code is still doing bad things with its source,
still working on proper changes here.
2019-03-07 16:25:25 +01:00
ab0bc65c24 Refactor CDData masks, to have one mask per mesh elem type.
We already have different storages for cddata of verts, edges etc.,
'simply' do the same for the mask flags we use all around Blender code
to request some data, or limit some operation to some layers, etc.

Reason we need this is that some cddata types (like Normals) are
actually shared between verts/polys/loops, and we don’t want to generate
clnors everytime we request vnors!

As a side note, this also does final fix to T59338, which was the
trigger for this patch (need to request computed loop normals for
another mesh than evaluated one).

Reviewers: brecht, campbellbarton, sergey

Differential Revision: https://developer.blender.org/D4407
2019-03-07 11:29:50 +01:00
de13d0a80c doxygen: add newline after \file
While \file doesn't need an argument, it can't have another doxy
command after it.
2019-02-18 08:22:12 +11:00
e0e6229176 Cleanup: rename Mesh.edit_btmesh -> edit_mesh
When bmesh was in a branch we had both edit_mesh and edit_btmesh,
now there is no reason to use this odd name.
2019-02-17 18:05:18 +11:00
452df3f392 Cleanup: comments 2019-02-12 01:51:03 +11:00
eef4077f18 Cleanup: remove redundant doxygen \file argument
Move \ingroup onto same line to be more compact and
make it clear the file is in the group.
2019-02-06 15:45:22 +11:00
65ec7ec524 Cleanup: remove redundant, invalid info from headers
BF-admins agree to remove header information that isn't useful,
to reduce noise.

- BEGIN/END license blocks

  Developers should add non license comments as separate comment blocks.
  No need for separator text.

- Contributors

  This is often invalid, outdated or misleading
  especially when splitting files.

  It's more useful to git-blame to find out who has developed the code.

See P901 for script to perform these edits.
2019-02-02 01:36:28 +11:00
552b2287db Logging: Use CLOG for blenkernel
Part of D4277 by @sobakasu
2019-02-01 12:46:39 +11:00
3891ad8e03 Fix T58492: smoke flow jitters around flow source when using adaptive domain.
This is more like a band-aid than a real fix actually, real fix would be
to understand why rendering smoke requires auto texspace to be ON
(afaict, this was not the case in 2.7x)...

But I've already spent way too much time on this issue, at least now we
get better situation than before (i.e. smoke with adaptive domain works
well even when orig domain mesh has autospace flag disabled).
2019-01-22 21:52:15 +01:00
cd41570b55 Revert "Fix T57371: Generative modifiers in editmode display vertex group weights ..."
This reverts commit 6dbfd7f6d6.
2019-01-11 20:09:42 +01:00
6dbfd7f6d6 Fix T57371: Generative modifiers in editmode display vertex group weights ...
... incorrectly (or assert)

Thanks @angavrilov and @lichtwerk for the fix.
2019-01-11 18:56:05 +01:00
41b65d9a8e Fix T59631: Crash in Surface Deform modifier Bind when Dynamic Paint is included.
We should *never* prevent copying basic mesh CDLayers (vertices etc.),
that does not make sense.

I guess issue was not in old DM because geometry was duplicated anyway,
and in 'normal' modifier stack eval, probably because bare mesh was
awlays requested? But we should not have to be explicit here about it.
2019-01-10 16:47:41 +01:00
60a5559b6c Correct modifier stack validation 2018-12-17 12:44:48 +01:00
095f9f26aa Fix T57770: Edit-mesh wireframe cage select fails 2018-12-06 09:38:08 +11:00
efe769f3f0 Cleanup: unused function 2018-12-06 07:44:25 +11:00
Dalai Felinto
80ffd7b459 Implement bvhtree.fromObject
Passing depsgraph instead of scene, since a scene does not fully define the
state of object you want to use for the BVH.

Also, mesh_create_eval_final_view and mesh_create_eval_final_render are pretty
much the same, so mesh_create_eval_no_deform and
mesh_create_eval_no_deform_render are as well.

Issue reported on: T58734

Reviewers: sergey
https://developer.blender.org/D4032
2018-12-05 07:58:58 -02:00
34b73cb11c Fix T57620: display custom normals in Edit Mode.
Since it seems that CD_ORIGINDEX is not available for loops,
the only choice is to simply use the loop normals already
computed by depsgraph after evaluating modifiers.

This revealed a bug where the Auto Smooth settings would be lost
from the mesh after complex modifiers, or after edit mesh to mesh
conversion, so restoring them is needed to get correct results.
2018-12-04 19:53:14 +03: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
3235a3081c Fix T57858: Add validation callback to CustomData layers.
Our mesh validation was only checking cd layout so far, not their actual
data. While this might only be needed for a few types, this is a
required addition for things like imported UVs, else we have no way to
avoid nasty things like NANs & co.

Note that more layer types may need that callback, time will say. For
now added it to some obvious missing cases...
2018-12-03 16:22:27 +01:00
1983a52e04 Depsgraph: assert that mesh_get_eval_final/deform aren't used in eval.
Using those functions during multithreaded evaluation is a sure
way to have a race condition and crash.
2018-12-03 17:01:02 +03:00
9ed522db73 Fix more cases of evaluated mesh being built for non-COW objects. 2018-12-01 19:09:09 +03:00
ee8a2edb96 Fix usage of mesh_get_eval_final in vertex selection.
It's a very bad idea to call this on non-COW instances - see T58150.
Also, when rebuilding mesh it's better to accumulate mask flags to
avoid possible repeated rebuilds from different users.
2018-12-01 14:46:55 +03:00
bfcd25b313 Texture Paint: avoid rebuilding evaluated mesh on first stroke.
Ensure all relevant CustomDataMask bits are set during normal evaluation.
2018-12-01 12:12:35 +03:00
b7e02c677d Fix mesh_build_data() calling mesh_finalize_eval() before copying texspace.
mesh_finalize_eval() may set ob->data to evaluated mesh, needs to be
done *after* call to BKE_mesh_texspace_copy_from_object(), else that one
is meaningless.

Related to investigations on T57985, but does not solve it at all. :(
2018-11-25 18:49:57 +01:00
5aa728ec7e Cleanup: style 2018-11-21 05:25:52 +11:00
fd926f0058 Modifier stack: Only ensure derived mesh when USE_DERIVEDMESH is defined
This is more an internal transition away from derived mesh.
2018-11-20 14:53:41 +01:00
1ee8c3e46a Modifier stack: Use evaluated mesh to check normals 2018-11-20 14:53:41 +01:00
f600b4bc67 Shrinkwrap: new mode that projects along the target normal.
The Nearest Surface Point shrink method, while fast, is neither
smooth nor continuous: as the source point moves, the projected
point can both stop and jump. This causes distortions in the
deformation of the shrinkwrap modifier, and the motion of an
animated object with a shrinkwrap constraint.

This patch implements a new mode, which, instead of using the simple
nearest point search, iteratively solves an equation for each triangle
to find a point which has its interpolated normal point to or from the
original vertex. Non-manifold boundary edges are treated as infinitely
thin cylinders that cast normals in all perpendicular directions.

Since this is useful for the constraint, and having multiple
objects with constraints targeting the same guide mesh is a quite
reasonable use case, rather than calculating the mesh boundary edge
data over and over again, it is precomputed and cached in the mesh.

Reviewers: mont29

Differential Revision: https://developer.blender.org/D3836
2018-11-06 21:20:17 +03:00
91c6beb28a Cleanup: Remove unused modifiers callback
Was only used by subsurf in the past years, it is unlikely
other modifiers will every need this any time soon.
2018-10-24 14:04:29 +02:00
dbb35ff7c8 Cleanup: unused functions 2018-10-15 17:37:54 +11:00
27389362a4 Mesh: remove DerivedMesh for boundbox calculation
Fixes edit-mesh not having a boundbox calculated for it.
2018-10-15 17:14:05 +11:00
0941d99323 Cleanup: remove unused functions 2018-10-15 16:59:27 +11:00
54ecff1fca Mesh: remove derived mesh for nurbs conversion 2018-10-12 18:05:26 +11:00
b7363941f7 Cleanup: make BKE_mesh_ensure_normals_for_display public 2018-10-11 16:34:12 +11:00
606ac3eb7f Fix modifier cage option being overwritten
Editmesh modifier calculation behaved as if eModifierMode_OnCage
was enabled for all modifiers.

Remove assignment after all modifiers are calculated.
2018-10-10 15:22:47 +11:00
9751d7188e Cleanup: naming 2018-10-10 15:18:34 +11:00
9bb1bd0b5e Correct bad statvis default in recent commit 2018-10-10 15:11:00 +11:00
62020eddec Cleanup: naming
- mesh_calc_modifiers & editbmesh_calc_modifiers
  now follow similar naming.
- me and mesh were too easily confused in mesh_calc_modifiers
  (remove 'me', access ob->data).
2018-10-10 15:01:46 +11:00
58a41df51e Cleanup: add back add_shapekey_layers to modifier stack
Looks like this might not be used, add back just in case.
2018-10-10 14:37:08 +11:00
c3c4f8f60a Cleanup: uncomment statvis calculation (still disabled) 2018-10-10 14:28:31 +11:00
c61142c0b5 Modifier: use simplified bmesh -> mesh conversion 2018-10-10 13:14:15 +11:00
f1959f0999 Fix Weight Paint display with Subdivision Surface modifier.
The flag used to be set by the now removed old weight paint coloring code.
2018-10-09 14:21:23 +03:00
1b910082a0 Edit Mesh: replace DerivedMesh w/ Mesh
DerivedMesh is now removed from edit-mesh modifier evaluation.
2018-10-09 17:48:28 +11:00
79ca13a745 Cleanup: naming
Use BKE_mesh_* prefix for mesh module.
2018-10-09 16:09:59 +11:00
72e90c5db3 Cleanup: remove unused EditDerivedBMesh 2018-10-09 15:57:38 +11:00
3c78763482 Edit Mesh: remove derived-mesh from crazy-space calculation 2018-10-09 15:38:06 +11:00
20fbe6bca8 Modifier: move edit-mesh calculation from DerivedMesh to Mesh 2018-10-09 15:11:06 +11:00
75ac83610b Modifier: add non derived mesh modifier wrappers
Rename modifier_deformVerts_ensure_normals &
modifier_applyModifier_ensure_normals with wrappers that match 2.7x
convention.
2018-10-09 13:20:20 +11:00
c8c3bbaade Cleanup: naming
Rename DerivedMesh modifier functions to make room for mesh versions.
2018-10-09 12:23:22 +11:00