Commit Graph

45 Commits

Author SHA1 Message Date
51014d8e4f Fix #29384: Mesh without polygons + Modifier crashes when switching to sculpt mode
There were some issues with PBVH which prevented working it for meshes without faces.

Discussed with Brecht, for benefits of dynamic-topology-sculpting and so better to
make PBVH survive such things.

Added some extra NULL-pointer checks for this.
2011-11-24 13:39:43 +00:00
e84c0980a3 correct indentation and some whitespace edits (no functional changes) 2011-11-11 13:09:14 +00:00
a71e2c498c GPU Buffers
Small type cleanup, use `GPU_Buffers *' rather than `void *'. Should
be no functional changes.
2011-11-05 03:29:37 +00:00
4a04f72069 remove $Id: tags after discussion on the mailign list: http://markmail.org/message/fp7ozcywxum3ar7n 2011-10-23 17:52:20 +00:00
7c46f1c4b7 Fix some MSVC 2010 warnings (including one apparent bug in intern/elbeem/intern/solver_relax.h) 2011-09-25 12:33:51 +00:00
670f58023c == PBVH ==
OK, after that failure of committing a bunch of old junk, hopefully
this is what I actually meant to commit :)

* Added big comments to some of the fields in struct PBVHNode. I
  always forget the details of these, so finally wrote it down
  properly.

* Changed types of PBVHNode.face_vert_indices and PBVHNode.flag to
  better reflect their contents.

* There should be no functional changes here.
2011-07-31 02:34:53 +00:00
7370ba1839 fix for NULL pointer usages 2011-07-09 19:59:32 +00:00
d0e4f7b9f2 remove unused code, comment some that may be useful (maintainers can remove). 2011-05-23 15:23:31 +00:00
210ee1ade4 whitespace only, no functional change mixed tabs/spaces --> tabs. 2011-04-21 13:11:51 +00:00
Nathan Letwory
7900b5949f doxygen: blender/blenlib tagged. 2011-02-27 20:37:56 +00:00
Nathan Letwory
5b607701a7 doxygen: prevent GPL license block from being parsed as doxygen comment. 2011-02-23 10:52:22 +00:00
7809d7d0c8 fix [#26152] Blender File for Image too Small
disallow 0% rendersize.

also mark new cmake vars as advanced: RPMBUILD, X11_XF86keysym_INCLUDE_PATH
2011-02-21 01:02:30 +00:00
8c4e95da48 Fix for crash when sculpting on multires object during playback
- Restored BLI_pbvh_grids_update stuff;
- Marc all nodes as changes in ED_sculpt_modifiers_changed, so
  draw_buffers would be keept correct.
2011-02-20 15:35:01 +00:00
8b7482892b made most variables which are only used in a single file and not defined in header static for blenlib, blenkernel and editors. 2011-02-14 17:55:27 +00:00
329e2d8037 Todo issue: sculpting on deformed mesh
Used a crazyspace approach (like in edit mode), but only modifiers with
deformMatricies are allowed atm (currently shapekeys and armature modifiers only).
All the rest modifiers had an warning message that they aren't applied because
of sculpt mode. Deformation of multires is also unsupported.

With all this restictions users will always see the actual "layer" (or maybe
mesh state would be more correct word) they are sculpting on.

Internal changes:
- All modifiers could have deformMatricies callback (the same as deformMatriciesEM but
  for non-edit mode usage)
- Added function to build crazyspace for sculpting (sculpt_get_deform_matrices), but it
  could be generalized for usage in other painting modes (particle edit mode, i.e)

Todo:
- Implement crazyspace correction to support all kinds of deformation modifiers
- Maybe deformation of multires isn't so difficult?
- And maybe we could avoid extra bad-level-stub for ED_sculpt_modifiers_changed
  without code duplicating?
2011-01-31 20:02:51 +00:00
8f21a43535 split BKE_utildefines.h, now it only has blender specific defines like GS() MAKE_ID, FILE_MAXDIR, moved the generic defines to BLI_utildefines.h.
no functional changes.
2011-01-07 18:36:47 +00:00
1807beabf5 - UNUSED macro wasn't throwing an error with GCC if a var become used.
- made interface, windowmanager, readfile build without unused warnings.
- re-arranged CMake's source/blender build order so less changed libs are build later, eg: IK, avi
2010-10-16 02:40:31 +00:00
d1759639dc - remove unused includes IMB_*, BIF_* & MEM_*
- remove MEM_guardedalloc.h from header files (include directly)
2010-08-16 05:46:10 +00:00
5505697ac5 Merge GSOC Sculpt Branch: 28499-30319
https://svn.blender.org/svnroot/bf-blender/branches/soc-2010-jwilkins
See log of that branch for details.
2010-07-14 14:11:03 +00:00
f406cf4ac8 Fix a few compile warnings and rename gpu_buffers.h to GPU_buffers.h
for consistency.
2010-07-14 10:46:12 +00:00
93bdba9b21 Fix for crash with PBVH in background mode, patch by Campbell. 2010-07-01 15:12:10 +00:00
425da6206f [#22262] Sculpting shape keys using the Smooth brush switches the shape to the Basis
PBVH used the same verts array as mesh data and shape key/reference key coords
were applying on the mesh data, so on some refreshing undeformed mesh was
displayed.
Added utility functions to get vert coords from key block, apply new vert coords
on keyblock and function to apply coords on bpvh, so now pbvh uses it's ovn
vertex array and no changes are making to the mesh data.

Additional change:
Store key block name in SculptUndoNode, so now shape wouldn't be copied to
wrong keyblock on undo
2010-06-21 20:10:59 +00:00
89320c911e Sculpt & modifiers: patch by Sergey Sharybin, with modifications by me.
Fixes various crashes and redraw problems, most noticeable new feature
is that you can now sculpt on a multires mesh with deforming modifiers
preceding it.

I've left out support for sculpting on multires with enabled modifiers
following it, in this case only the base mesh can be sculpted now. The
code changes needed to do this are just too ugly in my opinion, would
need a more torough redesign which I don't think we should try now. In
my opinion this is also not really an important case, since it's going
to be incredibly slow anyway to run a modifier on a high res mesh while
sculpting.


So, to summarize current state:

* Fastest sculpting: base mesh with no modifiers or multires with only
  modifiers preceding it.
* Slower sculpting: base mesh with modifiers, depends on the speed of
  the modifiers.
* Not supported: multires mesh with modifiers following it.
2010-06-02 18:04:31 +00:00
389e590460 ghash alloc string from render branch
svn merge https://svn.blender.org/svnroot/bf-blender/branches/render25 -r28571:28573
 svn merge https://svn.blender.org/svnroot/bf-blender/branches/render25 -r28575:28576
2010-05-07 07:54:25 +00:00
afa872200c merge multires changes into trunk 2010-05-03 16:06:36 +00:00
a2778a262b Fix #20548: flat shading not drawing right in sculpt mode. 2010-03-22 17:17:36 +00:00
1e9bf0cfdb spaces -> tabs, (4 spaces == 1 tab, only for white space preceding text) 2010-03-22 09:30:00 +00:00
07b547980d remove unused includes for blenlib, left ifdef's for non linux os's alone. 2010-03-20 18:52:03 +00:00
081c1205a3 correct fsf address 2010-02-12 13:34:04 +00:00
c5ef38a415 Fix #20420: grab brush + subsurf modifier crash. Previously the PBVH nodes
were cached once at the start, but these can change when modifiers are
executed, now it simply doesn't cache them anymore, that was only really
a performance bottleneck when it was caching individual vertices.
2010-02-01 11:36:22 +00:00
e26005795d [#20587] Time field under Stamp (rendering) is always showing 00:00:00.01 2010-01-10 10:50:11 +00:00
40e9b1711b bugfix [#20627] Sculting - Mesh without faces crashes
fix own error in py ui also
2010-01-10 10:20:44 +00:00
d16547ab73 Alt+B view clipping is now taken into account properly for sculpt, particle
edit and snapping, by clipping the view ray.
2010-01-05 14:26:38 +00:00
996152de58 Bugfix: sculpt mode could crash using a mesh without faces. 2009-12-18 17:15:58 +00:00
5e48ab8d75 Sculpt:
* Increase epsilon for intersection a bit more, ortho view + small
  faces are problematic.
* Fix a redraw issue with one partial redraw too much at the end of
  the stroke.
2009-12-16 19:19:08 +00:00
cb4d9a7427 Sculpt:
* Temporary workaround for sculpt not working well with small polygons,
  still seems to be some issues, but can at least paint now.
* Small optimization avoiding local function variable aliasing.
2009-12-11 16:59:09 +00:00
c6ffe23762 Sculpt Branch:
* Added detection if VBO extension is supported.
* Redraw other 3d views after sculpting.
* Fix brush sometimes punching through mesh with very small polygons,
  added an extra epsilon to the ray-triangle intersection.
2009-12-11 14:16:17 +00:00
9ea765e5d3 Sculpt Branch:
* Smooth brush works again for multires.
* Optimal Display option for multires modifier, same as subsurf.
2009-12-09 13:37:19 +00:00
4ca2581b77 Sculpt Branch:
* Don't allow adding/removing multires levels in editmode.
* Customdata code for swapping mdisps restored.
* Fix inflate brush crashing with multires.
* Smooth and layer brush don't work yet with multires, but at
  least avoids crashing now.
* Fix threading issue with flatten brush.
2009-12-07 19:11:37 +00:00
134935a8db Sculpt: Grid based PBVH
* PBVH can now be created contain both from face grids or standard
  meshes. The former is much quicker to build for high res meshes.
* Moved some drawing code into pbvh (mostly for the frustum test).
* Moved ray intersection code into pbvh.
* GPU buffers also can be built from either mesh or grids now.
* Updated sculpt code to work with this. The ugly part is that there
  is now a macro for iterating over vertices, to handle both cases,
  and some duplicated code for e.g. undo.
* Smooth brush does not work yet with grids.
2009-11-25 13:40:43 +00:00
2e3326c153 Sculpt: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r24330:24483 2009-11-11 10:44:46 +00:00
1327833282 Sculpt: WIP brush behavior changes
* Draw/Inflate/Layer now keep working on the original mesh coordinates and
  normals from when the stroke started. This helps avoid the mesh blowing
  up, but can still be better. The old behavior is still available as
  "Accumulate" in the UI.
* This requires some more memory usage for the BVH, would like to find a
  way to avoid that.
* Smooth falloff is now the default.
* Spacing is now enabled by default, with a value of 7.5.
* Anchored now stores normals per node to save some memory.
2009-11-06 16:46:35 +00:00
636fe90680 Sculpt: updating normals now no longer uses the vert-face map, to save memory.
The weak point now is the thread-safe atomic access to normals from multiple
threads, did not seem to be a bottleneck in my tests but I don't really trust
it to be fast.
2009-11-04 20:36:38 +00:00
3078c80635 Sculpt: Multithreading & PBVH Changes
* Sculpting, normal update and bounding box code is now multithreaded
  using OpenMP.
* Fix a number of update issues: normals on node boundaries, outdated
  bounding boxes, partial redraw, .. . There's probably still a few
  left, but should be better now.
* Clicking once now does a single paint instead of two (was also
  painting on mouse up event).
* Smooth shading now is enabled for the full mesh when the first face
  uses it (so it can be tested at least).

Implementation Notes:

* PBVH search can now be done either using a callback or bt gathering the
  nodes in an array. The latter makes multithreading with OpenMP easier.
* Normals update code is now inside PBVH, was doing it per node before but
  should do all faces first and only then vertices.
* Instead of using search modes + 1 modified flag, now nodes get 4 flags
  to indicate what needs to be updated for them, found that this makes it
  easier for me to understand the code and fix update bugs.
* PBVHNode is now exposed as an abstract type, I think this makes it more
  clear what is happening than having it's data passed as part of callback
  functions.
* Active_verts list was replaced by looping over nodes and the vertices
  inside them. However the grab brush still uses the active_verts system,
  will fix that later.
* Some micro-optimizations, like avoiding a few multiplications/divisions,
  using local variables instead of pointers, or looping over fewer vertices
  to update the bounding boxes.
2009-11-02 18:47:03 +00:00
93beb0b85a Commit of the sculpt patch (#19672). Further development will be in this branch until we merge to trunk. 2009-10-27 19:53:34 +00:00