- Set the button in Paint Panel, Edit buttons context - It assumes the mesh to be near-perfectly mirrored. Current threshold is set to 0.0001 (maximum difference allowed). In order to evaluate proper mirroring, a new option will be added in Mesh editmode later. - When the flipped group doesn't exist yet, it creates the group - Of course this doesn't work for mirror modifier! New: Select/activate flipped bone or vertex group - Press SHIFT+F in PoseMode or WeightPaint mode to get the flipped bone. Is especially to see while painting if the mirror copying works OK. New: "Apply Envelope to VertexGroup" uses X-mirror option too. Todo; check on mirror vertex painting, and mirror Mesh editmode.... The implementation is based on a 8x8x8 Octree, where vertex locations are stored. Vertices on the threshold boundary of an Octree node are filled in the neighbour nodes as well, ensuring that the lookup works with threshold. The current size of the Octree gives good speedup, even for 128k vertices it only needs 256 lookup cycles per checked vertex. Same code could be used for the bevel tool for example. src/meshtools.c: int mesh_octree_table(Object *ob, float *co, char mode) - mode 's' or 'e' is "start octree" or "end octree" - mode 'u' is "use", it then returns an index nr of the found vertex. (return -1 if not found)
50 lines
1.5 KiB
C++
50 lines
1.5 KiB
C++
/**
|
|
* $Id:
|
|
*
|
|
* ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version. The Blender
|
|
* Foundation also sells licenses for use in proprietary software under
|
|
* the Blender License. See http://www.blender.org/BL/ for information
|
|
* about this.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
*
|
|
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
|
* All rights reserved.
|
|
*
|
|
* The Original Code is: all of this file.
|
|
*
|
|
* Contributor(s): none yet.
|
|
*
|
|
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
|
*/
|
|
|
|
#ifndef BIF_MESHTOOLS_H
|
|
#define BIF_MESHTOOLS_H
|
|
|
|
struct Object;
|
|
|
|
extern void join_mesh(void);
|
|
|
|
extern void fasterdraw(void);
|
|
extern void slowerdraw(void);
|
|
|
|
extern void sort_faces(void);
|
|
|
|
extern int mesh_octree_table(struct Object *ob, float *co, char mode);
|
|
extern int mesh_get_x_mirror_vert(struct Object *ob, int index);
|
|
|
|
#endif
|
|
|