Forward enum declaration is a bad idea, especially for C++ which requires
enum specification to dteermine which data type to use to store it.
Alternative would be to not use enum as an arument and pass it as int,
but actually would rather be strict on typing -- using explicit enum
as parameter type helps understanding the code and prevents possible
mistakes when using the function.
Update from a script I had in 2.4x, useful if you have mesh data which is _almost_ symmetrical,
there was no good way to automatically make the minor adjustments to make the mesh fully symmetrical.
Options for...
- symmetry-axis.
- blending between the +/- side.
- center mid verts.
Access from Mesh menu.
Was using edge-slide & remove-doubles but this was error prone since remove doubles could fail in some cases or find doubles where it shouldn't (with very small scale objects).
This gives more predictable behavior when the edges of a loop wouldnt slide (in that case they would just drag over to one of the sides with no user control)
and multiple edge loops work better too. eg:
- http://www.graphicall.org/ftp/ideasman42/edge_loop_del_update.png
- Ctrl+RMB only worked for edges & faces
- Menu item 'Select Shortest Path' only worked for vertices.
Now Ctrl+RMB works for vertices and the menu item works for verts/edges/faces (depending on the current selection).
by Francisco De La Cruz (xercesblue), with some of my own changes/improvements.
Converts faces to triangle-fans (useful to run on ngons).
To access select a group of faces and press "Alt+P" or alternatively select the operator from the Faces menu (Ctrl+F)
Conflicts resolved:
source/blenderplayer/bad_level_call_stubs/SConscript
Partly reverted changes to intern/cycles/blender/addon/ui.py in revision 52899
to make it easier to merge trunk changes.
Resolved conflicts:
release/datafiles/startup.blend
source/blender/editors/space_nla/nla_buttons.c
Also updated source/blender/blenkernel/intern/linestyle.c as a follow-up of
recent changes for the use of bool.
other selection operators. Instead of having only a single "extend"
option which causes the selection to toggle, there are now
three options:
- extend: adds to selection
- deselect: removes from selection
- toggle: toggles the selection
The default keymap is adjusted to have identical behavior as before,
using these new options, so end-users shouldn't experience any
difference.
Conflicts resolved:
source/blender/blenloader/intern/readfile.c
source/blender/bmesh/operators/bmo_utils.c
This commit also includes a fix of a bug identified during the merge and committed in revision 51853.
Thanks Thomas (dingto) for the timely fix!
- Rename 'mesh.select_nth' operator menu item 'Every N Number of Verts' to 'Checker Deselect',
since its not just de-selecting verts (works on edges and faces too) and the term 'checker' gives a better description of the result.
- Rename 'mesh.select_by_number_vertices' to 'mesh.select_face_by_sides', since this is a face selection tool, which wasnt obvious from its name.
also remove dissolve by type menu since the option has been removed from the operator and was giving an error.
* Bullet's convex hull implementation is significantly more robust
than the one I implemented, as well as being faster.
* This fixes bug [#32864] "Convex Hull fails in some cases."
projects.blender.org/tracker/?func=detail&aid=32864&group_id=9&atid=498
That bug, and others like it, relate to the poor handling of
co-planar surfaces in the input. Pretty much any model that is
simple-subdivided a few times gave very bad results before, Bullet's
implementation handles this much better.
* In order to ensure a smooth transition, the Bullet output is
translated into the existing HullTriangle hash structure. This makes
it easy to ensure that the existing slot output stays the same; the
interactions between the slots are somewhat complicated, detangling
is a TODO.
* Reviewed by Brecht:
https://codereview.appspot.com/6741063
* The symmetrize operation makes the input mesh elements symmetrical,
but unlike mirroring it only copies in one direction. The edges and
faces that cross the plane of symmetry are split as needed to
enforce symmetry.
* The symmetrize operator can be controlled with the "direction"
property, which combines the choices of symmetry plane and
positive-negative/negative-positive. The enum for this is
BMO_SymmDirection.
* Added menu items in the top-level Mesh menu and the WKEY specials
menu.
* Documentation:
http://wiki.blender.org/index.php/User:Nicholasbishop/Symmetrize
* Reviewed by Brecht:
https://codereview.appspot.com/6618059
Alt+V will fill the area inbetween the ripped faces - a bit like extrude.
faces are flipped to match existing geometry and customdata (uv, vcols etc) is copied from surrounding geometry too.
Conflicts resolved:
source/blender/blenloader/intern/readfile.c
source/blender/render/intern/source/convertblender.c
source/blender/render/intern/source/pipeline.c
Also addressed code inconsistency due to changes in the trunk revision 50628 (color
management with OCIO) and 50806 (UV project material). OCIO-related changes are marked
OCIO_TODO as in some other files modified in revision 50628.
updating data was only being done on the active object but sticly was being calculated for the selection.
split this into 2 operators, one that works on the selection and another that operates on the active object - so we can have a button in the mesh panels that calculates sticky.
also note that there was no way to calculate sticky from the UI - perhaps this feature should die a quiet death?
anyway - it works better then it used to for now.
currently can remove sticky/mask/skin vertex layers.
regarding the skin layer - while adding and removing the modifier normally works fine, its not 100% reliable since the mesh may be linked into another scene, or be a linked duplicate and the object with the modifier deleted.
This commit adds some first building blocks for the two operators to work modally based on mouse input. To make their function easier, two hotkeys are introduced, Ctrl+B for bevel and I for inset.
TODO:
After discussion with Campbell, we would like to add scale-style line indicators for the operators. This is already done for transform operators but a new interface for mesh operations may have to be written using pieces from that code since, strictly speaking bevel and inset are not exactly "transform" operators.
Also, a better input method for inset is needed and more options exposed. The method implemented right now uses mouse move for thickness and ctrl-mouse move for depth. These are calculated using the distance of the selection center in screen space and the mouse position. While that may work and prevents abrupt changes in values when switching from thickness tweak mode to depth tweak mode, it limits the magnitude of values that can be put into the tool especially in small or large scale.
Alternatives until a better method is written include:
* use relative offset (works but may give strange results)
* tweak manually after the operation.
Conflicts resolved:
source/blender/blenkernel/intern/material.c
source/blender/blenkernel/intern/subsurf_ccg.c
source/blender/blenloader/intern/readfile.c
source/blender/editors/animation/anim_channels_defines.c
source/blender/makesrna/intern/rna_scene.c
Additional changes:
* Fix for recent changes of BKE_* function renaming.
* Fix for an "attempt to free NULL pointer" in BlenderStrokeRenderer::RenderStrokeRepBasic().
Now only one operator. Same options for vertices, edges and faces (so adds edges sorting, and some options to vertices sorting).
Face sorting should behave as previously. However, XSortVerts won’t pack anymore selected vertices at the begining of the vert array (as it used to), if you want such behavior you’ll have to first run SortElements with Selected action.
Also added bug ref I forgot in r46354 (armature.c).