Commit Graph

694 Commits

Author SHA1 Message Date
Howard Trickey
4d1d50ea8b Fix bevel crash #33801, when first edge of a vertex is wire. 2013-01-08 03:30:31 +00:00
Antony Riakiotakis
c3b5c726c7 * Fix for #31581. The issue was that we scaled the face prior to
projecting it. The original paper suggests to simply interpolate between
the two points of an edge if the distance of the point to that edge is
smaller than a threshold.

* Fixed both 3D and 2D code to utilize this. Possibly other places in
blender where this scaling is done will have to be adjusted.

* Changed vertex interpolation to use 2D interpolation, since it already
did projection on plane and 2d calculations are faster.

* Also added notifier on hard recalc when uvcalc_transfor_correction is
used. Results in instant feedback on UV editor when edge sliding.
2013-01-07 21:42:40 +00:00
Campbell Barton
6747dec926 style cleanup 2013-01-07 03:24:22 +00:00
Howard Trickey
835ebd576c Fix bevel crash bug #33714. Had to disable elem tag on new vertices. 2013-01-03 13:37:17 +00:00
Campbell Barton
b2f6e6b113 code cleanup: BM_face_create_ngon()
Change some of the paranoid checks into an assert since they should never happen.
2013-01-03 08:06:12 +00:00
Campbell Barton
7b212b3bd0 fix [#33689] Crash with decimate modifier
in fact a more general bug in BM_face_create_ngon() where edges containing the same vertex multiple times were not accounted for.
2013-01-03 07:53:30 +00:00
Campbell Barton
c2839bfe76 add option WITH_SYSTEM_BULLET to link against the bullet installation found on the system.
Note: this doesn't work yet for everything with latest stable bullet (2.81), need to look into why and likely apply some patches upstream.
However I managed to link blender by disabling some features, likely it can be made to work without too much trouble.
2013-01-03 00:23:52 +00:00
Campbell Barton
827f9aa737 rename BM_edge_calc_squared_length -> BM_edge_calc_length_squared, matching len_v3, len_squared_v3 2012-12-31 02:40:15 +00:00
Campbell Barton
1aebc0e790 style cleanup 2012-12-31 02:37:28 +00:00
Nicholas Bishop
ab960eea88 Add symmetrize operator for dynamic-topology sculpt mode 2012-12-30 18:31:01 +00:00
Nicholas Bishop
2e9cb31c02 Add BMLog for efficiently storing changes to vertices and faces
The BMLog is an interface for storing undo/redo steps as a BMesh is
modified. It only stores changes to the BMesh, not full copies.

Currently it supports the following types of changes:
- Adding and removing vertices
- Adding and removing faces
- Moving vertices
- Setting vertex paint-mask values
- Setting vertex hflags
2012-12-30 18:24:08 +00:00
Nicholas Bishop
2d39e46414 Add BM_edge_calc_squared_length() query function
Same as BM_edge_calc_length(), but avoids square root for cases where
only comparison is needed.
2012-12-30 18:22:21 +00:00
Campbell Barton
857df8065f style cleanup 2012-12-28 14:19:05 +00:00
Campbell Barton
4e88bfca1b fix [#33677] Lambda is un-settable for mesh.vertices_smooth_laplacian
lambda is python keyword.
2012-12-28 11:12:46 +00:00
Howard Trickey
4e5d5e0d84 Add 'vertex_only' option to bevel tool.
Right now, changing segments to > 1 doesn't do anything,
but intend to work on making that cause rounded corners.
2012-12-28 02:45:10 +00:00
Campbell Barton
84361f602a fix [#33651] Spin tool destroys unselected loose vertex
bmesh.ops.extrude_face_region() didn't check for isolated verts (not connected to geometry), and removed them, happened for Ctrl+LMB extrude too.
2012-12-27 01:02:32 +00:00
Campbell Barton
fb989c2a65 code cleanup: don't alloca zero size and remove paranoid NULL checks (checked all uses and there not needed). 2012-12-24 14:59:15 +00:00
Campbell Barton
9090049505 code cleanup 2012-12-23 16:09:26 +00:00
Campbell Barton
b0fd9378e3 correct own error in openmp use for BM_mesh_elem_index_ensure(). 2012-12-22 08:37:34 +00:00
Campbell Barton
99433a3466 minor bmesh improvements
- use 2 omp sections for vert -> (edge, face) selection flushing.
- dont use face-loop iterator for cddm_from_bmesh_ex conversion to give some speedup (some modifiers use this).
- use float(*)[3] for functions that return coords.
2012-12-21 07:28:14 +00:00
Campbell Barton
b249255859 fix own error in bmesh/openmp unhiding, set BM_OMP_LIMIT to 0 so we can spot these cases more easily (will change before release). 2012-12-21 06:06:17 +00:00
Campbell Barton
2cb39ea9da use BM_face_create() over BM_face_create_ngon() in bevel and extrude individual faces to get some speedup. 2012-12-19 09:45:56 +00:00
Campbell Barton
fbf4f57cd6 bmesh optimization: use BM_face_create() rather then BM_face_create_ngon() in BM_mesh_copy(), gives ~30% overall speedup in my tests. 2012-12-19 09:13:06 +00:00
Campbell Barton
f6c5a72e3f fix [#33606] Adding the Decimate modifier will crash Blender
own regression since 2.65 release.
2012-12-19 01:24:12 +00:00
Campbell Barton
e72239c6a4 style cleanup 2012-12-18 01:52:18 +00:00
Campbell Barton
899ba3fdb6 style cleanup 2012-12-18 01:46:15 +00:00
Bastien Montagne
ab2c273b12 Added GPL header to sconscripts!
Also changed shebang to '#!/usr/bin/env python', this is more portable across unixes...
2012-12-17 08:01:43 +00:00
Campbell Barton
54787a8855 fix own error [#33529] Bevel on a certain edgeloop results in segmentation fault
relied on edges having a loop, now use overlap apiflag instead.
2012-12-16 14:17:15 +00:00
Campbell Barton
bb26d80ad8 code cleanup and move alternate shell calculation method into its own function: BM_vert_calc_shell_factor_ex 2012-12-14 16:10:46 +00:00
Campbell Barton
bee7c20a97 move edge split into its own function which can be called by the modifier without having to call a bmesh operator (gives some speedup). 2012-12-12 12:57:27 +00:00
Campbell Barton
b93f02042e use header only tags for edge split (to prepare to move this into tools/) 2012-12-12 12:29:37 +00:00
Campbell Barton
2ee180eab6 add threshold for bmesh & openmp so its not used with low poly meshes, BM_OMP_LIMIT may need tweaking. 2012-12-12 07:20:34 +00:00
Campbell Barton
3d69dbd44a use openmp to thread some common bmesh operations
- BM_mesh_elem_toolflags_ensure / bmo_flag_layer_alloc / bmo_flag_layer_free / bmo_flag_layer_clear
- BM_mesh_select_flush
- EDBM_index_arrays_init

notes:
- mostly use openmp `sections` to split operations on vert/edge/face since this is a fairly minor change.
- split tool flag pool in 3, this means we can allocate exact sizes needed and iterate on them in threads without alloc'ing.
2012-12-12 05:04:01 +00:00
Campbell Barton
c40030a36c replace BLI_array_declare with BLI_array_staticdeclare() and BLI_array_alloca() for smaller arrays. 2012-12-12 02:48:03 +00:00
Campbell Barton
71730f26d7 replace BLI_array_fixedstack_declare with() new macro BLI_array_alloca() which uses stack memory always and doesn't need to be freed explicitly. 2012-12-11 15:10:19 +00:00
Campbell Barton
f6c14d430f minor speedup - replace use of smallhash with api_flags for BM_edge_split() 2012-12-11 14:30:12 +00:00
Campbell Barton
e2f0a1e4db own cleanup commit in bmesh branch - removed last letters from ends of some comments. 2012-12-11 14:24:27 +00:00
Campbell Barton
231d1a3ddd bmesh toolflags would use BLI_MEMPOOL_SYSMALLOC when reducing layers only (would use MEM_mallocN in one case but malloc in another). better use blenders MEM_mallocN for both. 2012-12-08 13:15:04 +00:00
Campbell Barton
a3ce9408a2 fix [#33438] Bevel modifier "angle" mode is broken
bevel modifier was making zero area faces & edges that made scanfill fail (since it no longer removes doubles when filling ngons)
2012-12-08 07:35:54 +00:00
Howard Trickey
0bca862e9c Bevel: fix 'causing artifacts' bug 33245.
Really was caused by a previous bevel making
a two-edged face, which caused other faces to
be dropped when copying a bmesh.
The quadstrip code needed to be more careful
to avoid creating two-edge faces.
2012-12-07 18:45:52 +00:00
Campbell Barton
576bc2e6e4 bevel - use tri-fan filling in the special case when a bevel edge meets a non bevel edge at a valence 2 vert.
this is the topology tri-fan was intended to be used.
2012-12-04 15:28:34 +00:00
Campbell Barton
41b6e700e0 bevel: re-order checks so angle checks are done after quick sanity checks. 2012-12-04 14:41:40 +00:00
Campbell Barton
0526fcf13f revert part of r52720, Id rather leave these as-is, even if they give warnings under some configurations. 2012-12-03 08:11:04 +00:00
Campbell Barton
671b871e7f fix [#33392] In-dev freeway generation addon crashes on recent builds. 2012-12-03 05:40:48 +00:00
Campbell Barton
48aa356b7b use const for bm_mesh_allocsize_default, bm_mesh_chunksize_default 2012-12-03 05:38:28 +00:00
Campbell Barton
17c2621fd1 bridge tool - simple optimization, break early if edge loop length comparisons are worse then existing best loop test. 2012-12-03 05:02:32 +00:00
Campbell Barton
a490f4f7c4 fix [#33391] Bridge two Edgeloops fails in simple case 2012-12-03 04:53:30 +00:00
Howard Trickey
11e87d118e Bevel: fix for bulging part of bug 33280.
Bulging still happens, but fixed the cases where it was obvious
because it destroys an otherwise straight 'pipe' by snapping
the vertex mesh points to that pipe.
2012-12-03 01:46:37 +00:00
Bastien Montagne
818a345be3 Silent a bunch of gcc warnings (usually dummy, but noisy!). 2012-12-02 16:01:06 +00:00
Bastien Montagne
1d09d0a9c5 Silent some warnings (the one in bmesh_operator.c was even preventing build in -Werror mode). 2012-12-02 13:35:33 +00:00