Commit Graph

1758 Commits

Author SHA1 Message Date
Nico Pietroni fe7565ad2a commented the part that set as border the non manifold vertex 2013-07-23 11:20:44 +00:00
Paolo Cignoni c5fcfd94c1 Added a MeshSampler Class to the framework as a simple example of the sampling procedure
Added another wrapper for montecarlo sampling of points 
Improved the basic wrapper of poisson disk sampling to include variable disk radius sampling
2013-07-23 07:32:12 +00:00
Paolo Cignoni 99440c4e62 #ifndef NO_QT -> #ifdef QT_VERSION 2013-07-16 15:44:52 +00:00
Paolo Cignoni 42da29417b cleaned up a bit the interface and formatting of the code of the voronoiclustering alg 2013-07-05 14:46:48 +00:00
Paolo Cignoni 7b8f21ba7a Excluded from the computation of the mass intergrals the faces with an area that is <= std num limits <scalar>::min() 2013-07-03 21:44:39 +00:00
Paolo Cignoni 1655f806df removed M_PI_2 constant. (not more supported by vs2010 on) 2013-07-03 21:12:08 +00:00
Paolo Cignoni 29b3c4e1ec Added VertexCrease, EdgeMontecarlo sampling methdo
Improved PoissondDisk sampling algorithm with the bestSampleChoiceFlag parameter
2013-06-24 10:51:53 +00:00
Paolo Cignoni 98e49178ba Added IsCoherentlyOrientedMesh and cleaned up a bit the self intersection 2013-06-24 10:50:14 +00:00
Paolo Cignoni 9acdf598a1 removed harmless gcc warning 2013-06-24 09:36:46 +00:00
Paolo Cignoni 388435d15a Added a default value to the optional cb parameter in the pointcloud normal generation function 2013-06-24 08:36:08 +00:00
Paolo Cignoni 49d759af2a Added EdgeBarycentricToFaceBarycentric to convert an edge position into a face barycentric position 2013-06-24 07:31:11 +00:00
Paolo Cignoni 5049407069 Added FaceFauxSignedCrease that Marks feature edges according to two signed dihedral angles. 2013-06-24 06:56:15 +00:00
Paolo Cignoni efe6379b4b Added updating of the bbox for generic mesh build
Added build for point clouds
Added Clear at the beginning of the Build(m)
2013-06-24 06:49:51 +00:00
Nico Pietroni 5f59f1fa5a corrected some non templated type on SplitNonManifoldVertex function 2013-05-08 09:05:58 +00:00
Nico Pietroni a52a4d0ad3 added ClearCreases function..
corrected setting B for non manifold in VertexBorderFromNone
2013-04-24 14:22:43 +00:00
Nico Pietroni 04bca27a7e erased first assert of RemoveDuplicateEdge function 2013-04-20 15:13:49 +00:00
Paolo Cignoni cbba83d17c added Annulus and OrientedAnnulus to mesh creation helpers 2013-04-15 20:14:27 +00:00
Paolo Cignoni 371ff46282 added a missing RequireVFAdjacency and corrected a bug into the RequireXX for a couple of other adjacency... 2013-04-12 09:16:49 +00:00
Paolo Cignoni eeddfe6a90 Updated to include better control of the voronoi parametrization. Changed packer (warning it requires qt...) 2013-04-03 10:07:29 +00:00
Paolo Cignoni 135f5f9ecb added Outline2VecBBox method 2013-04-03 10:02:19 +00:00
Nico Pietroni 01c0681291 added #include <vcg/complex/exception.h> 2013-03-30 15:31:57 +00:00
Nico Pietroni 8454fb5fc9 removed some commented part and changed FixDefaultVertices 2013-03-30 15:30:18 +00:00
Paolo Cignoni 9bd9f9fdc7 Further cleaning up and factorization of the stuff for the raster outline packer 2013-03-26 11:25:47 +00:00
Paolo Cignoni 4fa516b8d7 Added first version of the outlinesupport.h to manage various interaction between meshes, borders and outlines 2013-03-25 13:09:15 +00:00
Paolo Cignoni 668bf05a1d Refactored a bit CountConnectedComponents (added requiremens) 2013-03-25 10:33:22 +00:00
granzuglia 5bcce6a3d5 //static_cast<VertexPointer>(NULL) has been introduced just to avoid an error in the MSVS2010's compiler confusing pointer with int. You could use nullptr to avoid it, but it's not supported by all compilers.
//The error should have been removed from MSVS2012				
std::pair<float,VertexPointer> zz(0.0f,static_cast<VertexPointer>(NULL));
2013-03-24 16:33:50 +00:00
Paolo Cignoni 1fef63b1da improved a bit the basic step of the voronoi clustering 2013-03-22 17:07:55 +00:00
Paolo Cignoni e94cfb5a43 Refactored a bit the extended marching cube core. Cleaned up a bit the trivial walker to be used by both of them. Updated the sample for marching cube. 2013-03-22 17:06:41 +00:00
Paolo Cignoni 3a9a72c098 removed a useless template specialization to a few std::make_pair 2013-03-22 16:53:42 +00:00
Paolo Cignoni 12543d68a2 Removed also from this file the deprecated dependencies from linalg. NOW EVERY PIECE OF THE VCG relies on eigen for linalgebra. 2013-03-20 08:32:53 +00:00
Paolo Cignoni 72d67f4a11 Added parenthesis to clearly disambiguate if/then/else 2013-03-20 08:28:30 +00:00
Paolo Cignoni 5aaa6f4720 harmless small refactoring 2013-03-13 14:59:34 +00:00
Paolo Cignoni f62e07ee66 Corrected the behavoiour of the allocate::Compact when managing uninitialized and null element in adjacency 2013-03-13 14:33:09 +00:00
Paolo Cignoni 6950be4594 Improved comment/documentation. Changed throws in require 2013-03-13 14:00:29 +00:00
Paolo Cignoni 8446dbc168 corrected a wrong interface to poisson pruning (left after recent changes) 2013-03-13 00:16:51 +00:00
Paolo Cignoni 8f45cb352e Added a simpler CompactEveryVector to allocate to compact face edge and vertices... 2013-03-13 00:15:13 +00:00
ganovelli 4253c2f3b6 corrected bug on appending perFace and perEdge attributes
(thanks to Minghua Nie for pointing it out).
2013-03-11 11:53:26 +00:00
Paolo Cignoni d61c5c24a1 Slight change of the PoissonDiskPruning interface. Removed a useless parameter (the original surface mesh) 2013-03-01 08:34:33 +00:00
Paolo Cignoni 0f34456c92 further cleaning up and commenting 2013-02-28 15:51:38 +00:00
Paolo Cignoni 391e376be7 Cleaned up a bit. Only a bit. 2013-02-28 07:02:20 +00:00
Paolo Cignoni 26392a560b Corrected a small bug in the Poisson disk sampling: as an unwanted side effect invoking the sampling will change the size of the bbox of the mesh. Mostly harmless but weird. 2013-02-23 05:50:27 +00:00
Nico Pietroni 4799f4c4bc minor changes 2013-02-19 13:54:14 +00:00
Nico Pietroni 1f91e92f9a changed the strategy to find point to fix in an automatic way, and some minor changes in comments 2013-02-19 13:53:33 +00:00
Paolo Cignoni 0839617d99 Corrected a small bug in the simpler wrapper for the generation of a poisson disk distribution over a mesh 2013-01-31 10:50:19 +00:00
ganovelli 8c998ccd11 vcg::tri::Allocate<MESH>::Get*Attribute(m,name);
has CHANGED!

Before it was returning a valid handle to the attribute
IF it existed, otherwise the handle was invalid.
 
Now it always returns a valid handle to the attribute,
by creating the attribute name if it did not exist or returning
the handle to it if it was already there.

ALl the code using Get*Attribute  has been changed accordingly.
2013-01-30 17:18:55 +00:00
ganovelli 512da45bf7 updated to new GetPer*Attribute 2013-01-30 17:14:47 +00:00
Paolo Cignoni 2b9a9f2be2 removed a useless loop in the update cycle of the heap of the edges to be collapesed. Stupid bug pointed out by Enrico (thanks!) 2013-01-28 15:42:24 +00:00
Paolo Cignoni 69ca459335 Restructured Extrude.h in order to allow the easy separation of the side and top/bottom components 2013-01-23 08:35:23 +00:00
Nico Pietroni e633317b58 added include matrix44.h 2013-01-22 10:51:56 +00:00
Nico Pietroni 37e8a2118b changed tri::RequirePerEdgeFlags to RequirePerEdgeFlags 2013-01-22 10:50:40 +00:00
Nico Pietroni cb13855328 corrected 1 compilation error SetVertCrossVectorFromFace 2013-01-22 09:58:20 +00:00
Paolo Cignoni c3dc8316bb added a missing RequireEEAdjacency 2013-01-02 09:56:21 +00:00
Paolo Cignoni fba830b353 removed harmless gcc warning 2013-01-02 09:24:22 +00:00
Paolo Cignoni 1991e2e74f Changed a bunch of assert(hasXXX) into requireXXXX 2013-01-02 09:22:47 +00:00
Nico Pietroni e1481b34ac corrected bug on FollowDirection 2012-12-31 16:20:23 +00:00
Nico Pietroni a3a542edf2 added stop on target vertex for VertexDijkstra propagation 2012-12-31 16:19:36 +00:00
Nico Pietroni ec693dd06a added Target Faces to possibly stop the PerFaceDijsktraCompute
added selected vertex to avoid passing trought in PerVertexDijsktraCompute
2012-12-26 18:47:55 +00:00
Paolo Cignoni 0e61819cb7 Added PerFaceDijsktraCompute and PerVertexDijsktraCompute that compute straighforwar robust face-face and vertex-vertex geodesic shortest path tree 2012-12-21 15:36:52 +00:00
Paolo Cignoni dcda89eac1 added a correct import data for managing the data of the newly refined faces. 2012-12-17 15:31:28 +00:00
Nico Pietroni 98a28f8b46 added function static int FollowDirection 2012-12-12 16:03:08 +00:00
Luigi Malomo 8165152573 added UpdateFlags::EdgeSet function 2012-12-11 12:15:16 +00:00
Nico Pietroni f1233c24f3 changed IntersectionPlaneMesh to deal with different ScalarType rather then just floats 2012-12-10 17:15:55 +00:00
Paolo Cignoni fd54ab7183 Disambiguated the names of VertexFromGaussianCurvature for case when you have the full curvatures or just the HK values 2012-12-10 09:41:53 +00:00
Paolo Cignoni e9a0913eee Added edge selection management in edge selection stack 2012-12-10 09:39:44 +00:00
Paolo Cignoni c0d0599781 reformatted for allowing a breakpoint in the exception 2012-12-10 09:10:19 +00:00
Nico Pietroni bf3837e4d2 added function FollowLineDirection 2012-12-09 16:08:35 +00:00
Paolo Cignoni d29c7489ec mismatch syntax error in a require VF vs FF 2012-12-06 16:36:38 +00:00
Paolo Cignoni 7f789119a8 Forgot one due change face::HasFaceColor() -> face::HasColor()
(uniform to vertex)
2012-12-06 11:06:01 +00:00
Paolo Cignoni 63e5ef9763 changed to the new RequireXXXX syntax for type reflections 2012-12-06 11:00:37 +00:00
Paolo Cignoni c5d8479003 Refactored the complex.h file into a include manager and a base.h file
Due to a inclusion conflict order between pieces of old complex h and append/allocate
2012-12-06 10:59:18 +00:00
Paolo Cignoni 3b466514b3 Added Standard exception throwing functions to claim requirements in the mesh algorithmic functions (Te Deum!)
for example, now at the beginning of a function requiring FFAdjacency you should just write:

RequireFFAdjacency(mesh); 

No more assert please.
2012-12-06 10:34:08 +00:00
Marco Di Benedetto b9406fad93 call to qDebug() commented out (it assumed the qt framework). 2012-12-05 17:43:27 +00:00
Paolo Cignoni 7a205ecad6 removed harmless warnings 2012-12-02 15:07:17 +00:00
Paolo Cignoni e04a37bf60 removed harmless warnings 2012-12-02 14:57:08 +00:00
Paolo Cignoni d946a6c390 Changed the intersection plane quality to use an attribute. Renamed to cover the old unstable function and renamed the old one with an OLD suffix 2012-12-02 14:51:34 +00:00
Paolo Cignoni 75ca1eabfc Uniformed the rarely used per mesh color to the const/reference notation standard of the components 2012-11-28 11:13:46 +00:00
Paolo Cignoni bf3ee42337 corrected use of point matching 2012-11-27 23:31:09 +00:00
Paolo Cignoni a7fb3e540b Added another topological check to the ear capping procedure of hole filling 2012-11-27 12:22:18 +00:00
Paolo Cignoni 387b0fb857 refactored a small piece of code (the update of even vertex in refine during a debug session) 2012-11-27 12:19:09 +00:00
Paolo Cignoni fca284d27c corrected box assignment between different types in append::MeshCopy 2012-11-27 11:52:17 +00:00
Paolo Cignoni 049fae96c0 Improved comments with notes on what version of the intersection plane mesh should be used 2012-11-26 09:18:04 +00:00
Paolo Cignoni 26fc41faf5 Added a small wrapper for montecarlo sampling of a mesh surface 2012-11-22 23:28:40 +00:00
Nico Pietroni a95eb5af08 added function EdgeSetV 2012-11-18 18:05:39 +00:00
Paolo Cignoni 8f079de515 Added a bunch of 'c' to component members to clarify constant access 2012-11-15 19:14:29 +00:00
Paolo Cignoni 8b4d04be7a Added a bunch of 'c' to component members to clarify constant access 2012-11-15 19:11:28 +00:00
Paolo Cignoni 51fe0fb938 Added a bunch of 'c' to component members to clarify constant access 2012-11-15 19:07:34 +00:00
Paolo Cignoni 41e7a19fd1 Substituted grid with kdtree in the ballpivoting... 2012-11-14 12:48:35 +00:00
Paolo Cignoni eaf97c0bf3 Great speed improvement of ball pivoting (40x on a 100k vert mesh) 2012-11-14 08:28:42 +00:00
Paolo Cignoni e268e69ad3 Commenting and cleaning up the ball pivoting/ advancing front framework 2012-11-14 06:17:15 +00:00
Luigi Malomo 5aa4e3a489 warnings removed fo CrossField::IsSingularByCross() function 2012-11-12 12:40:56 +00:00
Luigi Malomo 8dc138cf27 fixed CrossField::IsSingularByCross() function 2012-11-12 12:38:20 +00:00
Paolo Cignoni ed6042e502 Committed temporary version of the cleaned up curvature computation files 2012-11-12 11:15:21 +00:00
Paolo Cignoni 9cea19e537 Cleaned up the UpdateFlags class. Assert into throw... 2012-11-10 16:33:38 +00:00
Paolo Cignoni 586d800c66 added missing edge reflection functions (HasEdgeXXXX etc) 2012-11-10 14:57:53 +00:00
Paolo Cignoni 9900cfd4cc Added comments and requirements (exception throwing) 2012-11-10 14:41:35 +00:00
Paolo Cignoni 2a21d5fb8e simple comments and re-indentation for better reading 2012-11-10 14:36:54 +00:00
Paolo Cignoni a1e4341c98 assert->trhow and first version of the allocateEdge 2012-11-10 06:45:58 +00:00
Paolo Cignoni 6b48acfa9f Added all the missing component exceptions for colors 2012-11-09 10:52:35 +00:00
Paolo Cignoni d4cf2019bf Disambiguated a ComputeNormal() 2012-11-08 18:44:35 +00:00
Paolo Cignoni e1fb5617ff assert -> throw exception 2012-11-08 18:37:10 +00:00
Paolo Cignoni c367bf93fa Improved the VertexNormalPointCloud smoothing algorithm (it can re use a kdtree) 2012-11-08 18:33:55 +00:00
Paolo Cignoni 1d092cf736 Added a couple of missing Flags->cFlags 2012-11-08 18:31:13 +00:00
Paolo Cignoni 51a65af2c0 Added new version of algorithm for computing normals for point clouds. Approx 8 times faster and works for clouds of a few millions of points... 2012-11-08 15:33:32 +00:00
Paolo Cignoni a97119dde3 Name Cleanup VertexVectorHasPerFaceVFAdjacency -> VertexVectorHasVFAdjacency 2012-11-07 22:51:16 +00:00
Paolo Cignoni e88379c8c6 Added VertexNormalPointCloud to smooth the normals of a point cloud by using the kdtree instead of the octree... 2012-11-07 22:49:46 +00:00
Paolo Cignoni 5e6d0fe221 corrected use of constant flags method 2012-11-07 15:43:38 +00:00
Paolo Cignoni bb4f118a03 Small bug in the time computation of Poisson sampling 2012-11-07 01:14:27 +00:00
Paolo Cignoni 4e6a97770b Significant changes to the Geodesic computation class
- Cleaned: removed useless wrapper
- Documented
- Removed the automatic computation of the farthest vertex NOBODY never ever used it in all our basecode (but every one declared a useless var for that...)
- Changed the name of the class to something meaningful (Geodesic::Compute instead of Geo::FarthestVertex)
2012-11-07 01:07:08 +00:00
Paolo Cignoni b6d198362c Small changes to the compactVector (added a check on empty vectors) and improved the sample on allocation. 2012-10-31 06:58:08 +00:00
Paolo Cignoni ed4500a156 Improving Documentation: removed doxygen warnings. 2012-10-26 07:08:18 +00:00
Paolo Cignoni fe95eeca43 Improving Documentation: removed a ton of doxygen warnings. Cleared a bit the groups structure, added a few comments to allocator 2012-10-26 06:16:15 +00:00
Paolo Cignoni 6c3d86d448 Still Improving the documentation. 2012-10-25 23:52:48 +00:00
Paolo Cignoni 7e5ebe06f4 removed useless append.h and a spurious uber still floating around... 2012-10-25 23:39:31 +00:00
Paolo Cignoni d59ea952ed Added append to the set of files always included by complex.h 2012-10-25 23:37:25 +00:00
Paolo Cignoni fc5a0216ac Improved documentation about allocation. Added sample on allocation. 2012-10-25 22:53:33 +00:00
Paolo Cignoni 9658740974 Improving documentation. Reordered groups and started documenting main components 2012-10-25 13:47:31 +00:00
Paolo Cignoni 84b9387264 Removed inclusion of subset.h 2012-10-23 23:41:41 +00:00
Paolo Cignoni 864f9cb9d7 Removed two now useless files, boundary (that involved conversion between tetrahedral and tri meshes) and subset (duplicate functionalities wrt append.h) 2012-10-23 11:12:41 +00:00
Paolo Cignoni ecd88fcb28 Added a default parameter to the sampling class and a few utility sampling classes for taking point on faces. 2012-10-22 18:42:11 +00:00
Paolo Cignoni c980267cd8 Corrected refine, Now instead of using a dangerous vector of vertex type (that could cause issues with ocf types) it use just a vector of pair<position,normal> 2012-10-22 18:37:51 +00:00
granzuglia 3a6031554b - updated file according to new vcglib syntax 2012-10-22 12:11:49 +00:00
granzuglia 1151b88b54 - updated file according to new vcglib syntax 2012-10-22 12:06:43 +00:00
ganovelli 60be67113d removed 2012-10-19 15:08:14 +00:00
Paolo Cignoni 75122cd193 Improved comments and interface of perlin noise color 2012-10-19 12:32:05 +00:00
Paolo Cignoni 1918c53a09 Cleaning of names and reordering of Color functions 2012-10-19 11:52:57 +00:00
Nico Pietroni f4ef1e09d5 removed import/export functions and added to wrap/io_trimesh/import_field.h and wrap/io_trimesh/export_field.h 2012-10-16 10:07:58 +00:00
Paolo Cignoni ac9b6b16f2 Improved documentation of inertia and slightly changed the interface (added a constructor) 2012-10-16 07:36:35 +00:00
Paolo Cignoni 036aeae1c9 corrected a bug in torus creation 2012-10-15 12:49:17 +00:00
Paolo Cignoni ec0c145454 corrected the order or the parameter of the torus 2012-10-15 09:58:01 +00:00
Paolo Cignoni 1331ead487 Corrected a small bug in TestFaceFaceIntersection
the case of two faces sharing an edge was not managed correctly in the case the two faces had the two edges opposite to the shared vertex lying on the same plane.
2012-10-15 09:26:15 +00:00
Paolo Cignoni fb60087ee4 component_ocf are now part of the standard inclusion sequence of complex.h
No more need of including them.
It was needed to avoid the issue of wrong inclusion order that could trigger a failure in the partial specialization of the reflection functions that should say if a component is present or not...
2012-10-15 09:17:48 +00:00
Paolo Cignoni 42252b04b4 Improved documentation of Attribute mechanims 2012-10-15 08:17:26 +00:00
Nico Pietroni 210b348626 corrected UpdateNormal calls 2012-10-14 07:41:58 +00:00
Nico Pietroni a8e4104559 removed missmatch initialization in SelectSingularByCross function 2012-10-14 07:40:26 +00:00
Paolo Cignoni 980b463a41 Added Torus primitive creation 2012-10-11 22:45:21 +00:00
Paolo Cignoni a40bb0ff93 minimal change (useless passing by reference of const intended parameters) 2012-10-11 11:19:37 +00:00
Paolo Cignoni 6739455da9 Updated to reflect the naming changes in updateNormals 2012-10-11 11:11:33 +00:00
Paolo Cignoni 41060feef9 Updated to reflect the naming changes in updateNormals 2012-10-11 11:09:30 +00:00
Paolo Cignoni df87b9710e Updated to reflect the naming changes in updateNormals 2012-10-11 11:08:38 +00:00
Paolo Cignoni bf13a8ee8f Changed a bit the interface of the exception throwing. Updated normals and other to follow this changes 2012-10-11 11:04:37 +00:00
Paolo Cignoni 36c12730d9 Substituted old deprecated LinAlg with Eigen stuff 2012-10-11 11:02:52 +00:00
Paolo Cignoni 44b9b56c42 Updated to reflect the naming changes in updateNormals 2012-10-09 08:51:15 +00:00
Paolo Cignoni ba4a51e02d Updated to reflect the naming changes in updateNormals 2012-10-09 08:00:25 +00:00
Paolo Cignoni f9b2088e12 Cleaned up and moved into the tri namespace all the refine class 2012-10-09 07:56:47 +00:00
Paolo Cignoni 34f4e6c98c **** SIGNIFICANT CHANGE ****
Name uniformation NO MORE PLURALS IN NAMES
From UpdateNormals to UpdateNormal
2012-10-09 07:55:30 +00:00
Paolo Cignoni 905e1a7209 Cleaned up a bit 2012-10-09 07:53:55 +00:00
Paolo Cignoni bc3952ccc1 Updated to reflect the naming changes in updateNormals 2012-10-09 07:48:22 +00:00
Paolo Cignoni fc75c0c62d Harmless gcc warnings 2012-10-09 07:05:45 +00:00
Paolo Cignoni 707577cbf9 Removed unnecessary include files: 2012-10-08 12:07:14 +00:00
Nico Pietroni c4b53d16cc edded 2 includes:
* component.h 	 for per face Normal calculation function
* exception.h	 for excepion handling
2012-10-08 11:51:35 +00:00
Paolo Cignoni f53f93d553 Updated to reflect the naming changes in updateNormals 2012-10-08 10:27:19 +00:00
Paolo Cignoni feeec9f979 Updated to reflect the naming changes in updateNormals 2012-10-08 09:12:21 +00:00
Paolo Cignoni bd171b714f Orthography lenght -> length 2012-10-08 09:10:03 +00:00
Paolo Cignoni b974b6987d Updated to reflect the naming changes in updateNormals 2012-10-08 09:06:50 +00:00
Paolo Cignoni c059114300 Orthography lenght -> length 2012-10-08 09:05:11 +00:00
Paolo Cignoni dfc9192715 Orthography lenght -> length 2012-10-08 09:03:25 +00:00
Paolo Cignoni 33e1231056 Heavily reformatted and cleaned for documentation. Hopefully no semantic changes involved... 2012-10-08 09:01:24 +00:00
Paolo Cignoni 6f7db152b2 updated to the new eigen folder structure (something moved out from unsupported folder...) 2012-10-05 17:01:22 +00:00
Paolo Cignoni ab76074ccc removed useless ; 2012-10-04 20:41:28 +00:00
Paolo Cignoni cbf99ac69a updated to the change update/edge -> update/component_ep 2012-10-04 20:40:40 +00:00
Paolo Cignoni 18e2f6dd7c Updated to the new exception based strategy (no more assert for missing components) 2012-10-04 20:37:49 +00:00
Paolo Cignoni f62ca270b7 Better naming for the EdgePlane face component for fast closest query 2012-10-04 16:22:08 +00:00
Paolo Cignoni 2b0dbf2d20 Better naming for the EdgePlane face component for fast closest query 2012-10-04 16:19:03 +00:00
Paolo Cignoni 2577210a54 **** SIGNIFICANT CHANGES *****
- Cleaned up include order: Now you only need to include <vcg/complex/complex.h> (no more vertex/base.h etc) 
- Added official VN() EN() FN() const members for knowing number of vertexes etc...
- Added exceptions (at last!)
    Now instead of:
       assert(HasPerVertexNormal(m)) 
    you should write:
      if(!HasPerFaceNormal(m)) throw vcg::MissingComponentException();
2012-10-04 11:10:25 +00:00
Nico Pietroni 7ffcc407c9 corrected some warning and added support for read/write rosy format 2012-10-03 16:38:23 +00:00
Paolo Cignoni 14cffd1f6e Removed template default parameter. Now if you use the distortion class you have to specify if you want per vertex or per wedge tex coords. 2012-10-02 13:42:33 +00:00
Nico Pietroni a95c0efa2e added GradientToCross and ExporttoRosy format see Interactive Visualization of Rotational Symmetry Fields on Surfaces
Jonathan Palacios and Eugene Zhang
2012-09-18 15:31:40 +00:00
Nico Pietroni e2e948dbd6 added cast to float lines 308 309 2012-09-18 15:18:33 +00:00
Nico Pietroni 0cde611654 added function SetQasDistorsion and minor changes 2012-09-18 15:14:12 +00:00
Nico Pietroni 3658530bde corrected some warning 2012-09-05 23:25:55 +00:00
Nico Pietroni d9a95aaffc added Function FaceClearS 2012-09-03 15:56:24 +00:00
Nico Pietroni 10e827b071 added include <wrap/callback.h> 2012-09-03 15:55:41 +00:00
Nico Pietroni b297040835 added MakeDirectionFaceCoherent
solved gcc compiling issues
2012-09-03 15:54:25 +00:00
Paolo Cignoni cfba5001fd Disambiguate function name PerVertexWeighted -> PerVertexNelsonMaxWeighted 2012-07-31 09:15:20 +00:00
Paolo Cignoni f3ef64cc0c Heavily changed the whole hole filling class, now much shorter, more readable and hopefully more robust.
Still to better balance shape vs diedral angle quality measure.
2012-07-31 09:13:48 +00:00
granzuglia 0edde01197 - removed compiler time error from TestIntersection to TestFaceFaceIntersection 2012-07-27 17:48:17 +00:00
Paolo Cignoni 500a478e14 Improved the SplitNonManifoldVertex function. Now it is able to also move the split vertexes apart 2012-07-27 12:57:34 +00:00
mtarini 3adc453f53 Now zonohedra construction robust to basically *any* input, no matter how degenerate. 2012-07-24 01:48:21 +00:00
mtarini 15665c15ef added a few testing methods (IsTriOnly, IsQuadOnly, IsTriQuadOnly) 2012-07-20 13:50:08 +00:00
Paolo Cignoni f1d6d5d32a Changed the GetInfo of the hole stuff. Now it require the userbit specified 2012-07-19 08:09:28 +00:00
mtarini a70fd3daa5 Better comments 2012-07-18 22:18:14 +00:00
mtarini 8e4a8e9b6e first version 2012-07-18 22:02:36 +00:00
mtarini 240b88a582 added method MergeFlatFaces (does what it says). Plus clean-ups. 2012-07-18 21:46:12 +00:00
Paolo Cignoni 45b0deb7eb Important Change: ** LastBitFlag ** now is named ** FirstUnusedBitFlag **
Corrected the name of the function allocating a user bit among the flags of the simplexes. 
Changed in ALL the simplexes (vertex, edge, face, etc) and updating functions. 
Note that the LastBitFlag should never be used by common users...
2012-07-18 09:37:32 +00:00
mtarini 36d9030955 added SplitNonFlatQuads method 2012-07-17 19:21:46 +00:00
ganovelli d9132e6cbc corrected assertion 2012-07-09 15:14:36 +00:00
Paolo Cignoni 7ffb878913 SIGNIFICANT CHANGE
About the point to mesh distance functionalities
Now the two different 'path' for this distance computation (with or without the precomputation of planes and edges for triangular faces) are well distinct and with different names:
PointDistanceEP and PointDistanceBase

See the sample/trimesh_closest sample for more details
2012-07-06 15:24:04 +00:00
Paolo Cignoni 87d01da58f Yet some other changes to the stat collecting functions for computing the average edge lenght on a mesh. 2012-07-06 09:06:43 +00:00
Paolo Cignoni 3d956d8b48 Changed ComputeFaceEdgeHistogram into ComputeFaceEdgeDistribution. It was plainly wrong... :( 2012-07-06 08:08:24 +00:00
Paolo Cignoni 81a4cd4765 Corrected two wrong (unused) return types in stat collecting functions for trimesh 2012-07-06 05:38:05 +00:00
granzuglia 398f906bb6 added missing cmath include 2012-07-05 14:46:16 +00:00
Paolo Cignoni cd1ae00082 Added tri::UpdateFlags<MESH_TYPE>::FaceBorderFromFF(m); to the basic refine call.
In order to move these per face flags in less places as possible...
2012-07-04 15:25:21 +00:00
Paolo Cignoni b2e2bfe2df added Cotangent weighting to the basic laplacian smoothing. 2012-07-04 15:23:59 +00:00
Paolo Cignoni bfc10096f0 small improvemnt in stat collection for voronoi atlas 2012-07-03 10:21:41 +00:00
Paolo Cignoni f036874693 better comments 2012-07-03 09:14:17 +00:00
Paolo Cignoni e362d54a25 Timing functions and stat collecting for voronoi atlas 2012-07-03 09:13:07 +00:00
Paolo Cignoni 776fbe45a0 First Version of the Voronoi Atlas parametrizator. 2012-07-02 16:41:28 +00:00
Paolo Cignoni 539de75614 Cleaned up a bit the printint stuff. Now it should collect stats in a more clean way 2012-07-02 16:31:52 +00:00
Paolo Cignoni 487b6c7bd5 Corrected a bug in search for the best edge to be fixed in the FindFarthestVert when setting up the system for the poisson solver... 2012-07-02 09:38:42 +00:00
Paolo Cignoni 7cc19a31c6 Added two stupid wrapper to ComputePerFaceQualityMinMax and ComputePerVertexQualityMinMax 2012-07-02 08:30:17 +00:00
Paolo Cignoni 52fed4c451 Added a PerWedgeMakeUnitaryUV to normalize for packing 2012-07-02 08:29:11 +00:00
Paolo Cignoni ad9a7a237d updated to match the Distorsion->Distortion name change 2012-07-02 08:19:06 +00:00
Paolo Cignoni d900752b52 Renamed to correct the spelling error (distorsion -> distortion) 2012-07-02 08:15:24 +00:00
Paolo Cignoni d6ff9f01de Heavily modified. Corrected Spelling of distorsion->distortion
Completed a few measures and added difference between angle distortion in cos or rad space
2012-07-02 08:13:50 +00:00
Paolo Cignoni 28f3e120f0 Corrected naming for the unreference vertices function now the func that just count the unref vert is called CountUnreferencedVertex 2012-06-28 17:21:20 +00:00
Paolo Cignoni 9ed6314d10 removed harmless gcc warnings 2012-06-28 09:09:08 +00:00
Paolo Cignoni af15a07c0f corrected small bug in RemoveDuplicateFace involving the unsafe subtracting 1 from an unsigned int that could be zero... 2012-06-14 13:48:25 +00:00
Paolo Cignoni 36905c5d93 Added extrude.h file for the creation of extruded meshes from profiles 2012-06-06 06:25:56 +00:00
Paolo Cignoni 75ebfa9d5a Rewrote and commented the function that given a face pointer it follows the chain of non-faux edges. Now it supports the case of meshes with face with ALL edges faux (isolated faces in a polygon). 2012-05-28 11:30:37 +00:00
Nico Pietroni 894ebb26f6 added RemoveHugeConnectedComponentsDiameter function 2012-05-25 13:33:36 +00:00
Nico Pietroni 5445d99402 several major modifications 2012-05-25 13:21:11 +00:00
Paolo Cignoni cb3fc0dbe2 corrected harmless gcc warnings 2012-05-06 16:01:14 +00:00
Paolo Cignoni 0c16045423 corrected harmless gcc warnings 2012-05-06 15:36:02 +00:00
Paolo Cignoni 64d7f31279 corrected bug in the face laplacian normal smoothing 2012-05-06 15:31:07 +00:00
Paolo Cignoni 05195b6201 in the functions for creating meshes: corrected bug in the OrientedRect and changed the interface of the grid to allow the creation of a flag grid 2012-05-06 14:22:29 +00:00
Paolo Cignoni 0cad100f9d corrected harmless gcc warnings 2012-05-06 14:20:34 +00:00
Paolo Cignoni 4c44513d4f corrected bug in the UpdateTopology::EdgeEdge function: it touched a vector element beyond .end() 2012-04-22 09:01:04 +00:00
Paolo Cignoni 39df21640a Updated to reflect the change from ColorRamp -> SetColorRamp 2012-04-18 21:19:11 +00:00
Paolo Cignoni 5f22a3f7b5 added a very simple function wrapper to get a poisson disk distribution over a mesh with just function call 2012-04-18 21:12:12 +00:00
Paolo Cignoni 508c733bd4 added a missing updateQuality::FaceFromVertex 2012-04-18 21:09:56 +00:00
Paolo Cignoni ba507529c8 Modified intersectionPlaneQuality so that it also compute the per vertex normal according to the mesh... 2012-04-18 21:09:08 +00:00
Paolo Cignoni ffdc2f2b28 Geodesic: Added possibility of saving also the implict tree of the shortest path. For each vertex you can give an attribute where the function will save the 'parent' e.g. the previous vertex in the shortest path to the closest source. 2012-04-12 23:54:23 +00:00
Paolo Cignoni 5aed57a364 Heavy restructuring of the append function. Now it is hopefully must more efficient.
Added a parameter for requesting the copy of the non trivial topology. (e.g. all the adjacency relations beyond FV and EV).
2012-04-04 10:11:46 +00:00
Paolo Cignoni 059a2f220b added EdgeCount method for counting selected edges 2012-04-04 09:59:10 +00:00
Paolo Cignoni 06d481f5de standardized function names e used area function of vcg lib 2012-04-04 09:57:46 +00:00
Paolo Cignoni 783aef369b added hn initialization in the trimesh constructor 2012-04-04 09:53:54 +00:00
msabbadin 7c3687b8db corrected an assert in PrincipalDirections static method:
from assert(m.HasVFAdjency());
to assert(tri::HasPerFaceVFAdjacency(m) && tri::HasPerVertexVFAdjacency(m));
2012-04-02 14:42:56 +00:00
Paolo Cignoni 8a631d48c1 Corrected a significant bug in the reflection types for ocf components.
Changed the basic reflection mechanism: Instead of having a function templates over all the four containers now we template over Trimesh and we rely on a second function templated on face/vert that wants a vector<face> ; this second function only is eventually overloaded by another function that needs a vector_ocf of faces. 

That is Before we had:
- in complex.h

template < class  CType0, class CType1, class CType2 , class CType3>
bool HasPerFaceVFAdjacency   (const TriMesh < CType0, CType1, CType2, CType3> & /*m*/) {return TriMesh < CType0 , CType1, CType2, CType3>::FaceContainer::value_type::HasVFAdjacency();}

- in the component_ocf.h

template < class VertContainerType, class FaceType, class Container1, class Container2  >
		bool HasPerFaceVFAdjacency (const TriMesh < VertContainerType , face::vector_ocf< FaceType >, Container1, Container2 > & m)
	{
	  if(FaceType::HasVFAdjacencyOcf()) return m.face.IsVFAdjacencyEnabled();
	  else return FaceType::FaceType::HasVFAdjacency();
	}


While now we have:
- in complex.h

template < class FaceType  > bool   FaceVectorHasPerFaceVFAdjacency     (const std::vector<FaceType  > &) {  return FaceType::HasVFAdjacency(); }
template < class TriMeshType> bool   HasPerFaceVFAdjacency     (const TriMeshType &m) { return tri::FaceVectorHasPerFaceVFAdjacency  (m.vert); }

- and in component_ocf.h

template < class FaceType >
  bool FaceVectorHasPerFaceVFAdjacency(const face::vector_ocf<FaceType> &fv)
  {
    if(FaceType::HasVFAdjacencyOcf()) return fv.IsVFAdjacencyEnabled();
    else return FaceType::HasVFAdjacency();
  }
2012-03-31 01:16:58 +00:00
Paolo Cignoni b43fffd46f added a few security assert on deletion of simplexes that you are actually deleting objects that belongs to the given mesh 2012-03-30 23:43:04 +00:00
Nico Pietroni d5e7d551ba clean up the code and used new per face component 2012-03-29 16:33:33 +00:00
Nico Pietroni d4275a3597 added several functions 2012-03-16 13:48:18 +00:00
Nico Pietroni d941439fbb corrected several bugs and done several changes 2012-03-16 13:47:42 +00:00
Paolo Cignoni c4e116a42a Corrected a bug in the RemoveUnreferencedVertex. It considered only faces and removed vertices referenced by edges 2012-03-14 16:01:30 +00:00
Nico Pietroni ad417602bd added default constructor 2012-03-09 11:01:25 +00:00
Nico Pietroni 5e7f95f94a major changes 2012-03-08 18:09:31 +00:00
Nico Pietroni f97f54a89b erased vertex manifold as prerequisite 2012-03-08 18:09:09 +00:00
Nico Pietroni 1aed2f16da first release version.. need to be tested in several functions 2012-03-08 18:08:35 +00:00
Paolo Cignoni add25e7bf0 added a missing std:: 2012-02-27 07:06:26 +00:00
Paolo Cignoni 6983d4f6e9 Added a few comments... 2012-02-25 14:40:23 +00:00
Luigi Malomo 01453b8b0e Fixed a call to InterpolationParameters. A Point3 reference must be provided for barycentric coordinates output, instead of 3 separate scalars. 2012-02-14 12:13:38 +00:00
Luigi Malomo f358db54fd Added a quick check for callback presence (avoid crash if cb function is not provided) 2012-02-14 12:02:43 +00:00
Paolo Cignoni d331cf7f60 Added OrientedDisk creation method. and a missing "clear()" 2012-02-09 17:50:38 +00:00
Paolo Cignoni c90b11ca80 Changed all the MeshType::HasSomething() into the now standard tri::HasSomething(MeshType &m)
This changed implied the fact that you need different functor constructor (you have to keep the mesh inside it to know at runtime if some attribute are present or not)
2012-01-25 10:23:22 +00:00
Nico Pietroni fc7983d3fd added HasPolyInfo function, line 538 2012-01-24 13:34:46 +00:00
Nico Pietroni 5ad96544bb added several functions... 2012-01-23 13:09:38 +00:00
Paolo Cignoni b10ed11bc0 Added two functions to build disk, rectangles and squares (oriented in space).
Changed the reflection functions as usual
2012-01-23 07:07:19 +00:00
Paolo Cignoni 48e607f884 Changed all the MeshType::HasSomething() into the now standard tri::HasSomething(MeshType &m) 2012-01-23 06:38:32 +00:00
Paolo Cignoni 4bdf843589 Changed all the MeshType::HasSomething() into the now standard tri::HasSomething(MeshType &m) 2012-01-20 08:03:25 +00:00
Paolo Cignoni 6094438b4b Changed all the MeshType::HasSomething() into the now standard tri::HasSomething(MeshType &m) 2012-01-20 07:58:43 +00:00
Paolo Cignoni 58042fda3e Changed all the MeshType::HasSomething() into the now standard tri::HasSomething(MeshType &m) 2012-01-20 07:52:22 +00:00
Paolo Cignoni e9d476e93c Changed all the MeshType::HasSomething() into the now standard tri::HasSomething(MeshType &m) 2012-01-20 07:49:26 +00:00
Paolo Cignoni f4cf3b9221 Changed the name of the Distance from point to plane
from DistancePointPlane
to     SignedDistancePointPlane
to underline the fact that it is SIGNED!!!
2012-01-18 11:44:42 +00:00
Paolo Cignoni 86617dd872 Changed the name of Clean::IsOrientedMesh() -> Clean::OrientCoherentlyMesh()
It is a mesh changing method!
2012-01-18 11:42:08 +00:00
Paolo Cignoni 57e4689e1b corrected bug in the ImportVertexAdj Topology must be copied only if meaningful. 2012-01-18 11:27:07 +00:00
Paolo Cignoni 048b884a3e Added tri:UpdatePosition::Scale(mesh) 2012-01-18 11:22:40 +00:00
ganovelli c097e6edd5 added GetClosestVertexScale 2011-12-21 16:13:07 +00:00
ganovelli c2e3d66d19 added template parameter in function call 2011-12-21 16:10:30 +00:00
Paolo Cignoni 95e69075e4 Yet another removal of the usage of the faceprojection flags 2011-12-19 00:51:49 +00:00
Paolo Cignoni 0fe6fdaedc Yet another removal of the usage of the faceprojection flags 2011-12-19 00:51:03 +00:00
Paolo Cignoni 11fa2ba58a Added ComputeEdgeHistogram to Stat functions 2011-12-18 22:33:27 +00:00
Paolo Cignoni 9af315bb18 Two significant changes
1) the name of the supposedly non changed mesh is done explicit in the template name 
2) If the the selection of the vertexes is not consistent with the face selection the append could build faces referencing non existent vertices so it is mandatory that the selection of the vertices reflects the loose selection from edges and faces (e.g. if a face is selected all its vertices must be selected
2011-12-15 07:52:51 +00:00
Paolo Cignoni 3b61972116 Implemented the correct management of per edge attribute. It was half done... 2011-12-15 07:23:51 +00:00
Paolo Cignoni 412ef1aa65 Added UpdateSelection::VertexFromEdgeLoose
added parameter for preserving the old selection to the UpdateSelection::VertexFromFaceLoose
2011-12-14 08:54:54 +00:00
Paolo Cignoni ae58754015 Significant change of names to the UpdateSelection Class.
now follows the standard VertexClear instead of ClearVertex.
Updated all the other files of vcg using it...

(added also selection stuff for edges..)
2011-12-13 10:07:00 +00:00
Paolo Cignoni 5ec7fc1e4a added missing const to the Index function 2011-12-12 23:29:16 +00:00
Paolo Cignoni c038b3584e Corrected blatant bugs in the updateTopology--VertexEdge 2011-12-12 23:28:25 +00:00
ganovelli ab373e50cd missing include added 2011-11-21 16:12:48 +00:00
Paolo Cignoni 3d6857a0b0 re-added the empty constructor to marker face... 2011-11-21 14:04:23 +00:00
Paolo Cignoni 5bcb52529b harmless gcc warning 2011-11-21 09:38:00 +00:00
Paolo Cignoni b09619c1ea harmless gcc warning 2011-11-21 09:37:18 +00:00
Paolo Cignoni 5af75e6dac Removed bug in the ImportEdgeAdj, ImportFaceAdj, ImportHEdgeAdj. All of the same kind...
for(unsigned int vi = 0; vi < 2; ++vi)
 {
   size_t i = Index(mr,er.cEEp(vi));
   el.EEp(i) = (i>ml.edge.size())? 0 : &ml.edge[remap.edge[i]];
   el.EEi(i) = er.cEEi(i);
 }

 el.EEp(i)  should be  el.EEp(vi) !!!!
2011-11-21 09:36:21 +00:00
Paolo Cignoni 0e76a8e0ce Removed the useless faceprojection flag update function. No more needed! 2011-11-21 09:10:52 +00:00
Paolo Cignoni 285d78d293 removed the default empty constructor to avoid the use of the object without a mesh.... 2011-11-21 09:07:36 +00:00
Paolo Cignoni 342f182ee0 Added RemoveDuplicateEdge and CountNonManifoldEdgeEdge 2011-11-15 11:20:12 +00:00
Paolo Cignoni f9a7860f5e Added a much more robust IntersectionPlaneMeshQuality function to compute the intersection between a mesh and a plane that exploit quality for storing the distance from the plane and to make consistent decision about the cutting of the plane... 2011-11-15 11:19:08 +00:00
Paolo Cignoni e0055f8b5c added a missing const... 2011-11-15 11:15:24 +00:00
Paolo Cignoni 2ab3b3ab5b Changed the semantic and the return value of the generic DeleteAttribute (e.g. the one that does not take a type)
** It must not crash if you try to delete a non existing attribute, 
because you do not have a way of asking for a handle of an attribute for which you do not know the type.
2011-11-15 11:05:35 +00:00
Paolo Cignoni 89635131a7 added in the comment a biblio ref to a very similar approach 2011-11-07 16:09:35 +00:00
Paolo Cignoni 34921eb3ba corrected small nasty bug in the rarely used compact edge vector... 2011-11-07 15:41:59 +00:00
Nico Pietroni 5fee62fbb1 changed several calls of CrossVector function 2011-11-01 18:41:54 +00:00
Nico Pietroni 4af26f2df2 line 565 changed "if (numholes!=1) return false;" to "if (numholes==0) return false;" it may be even have multiple holes 2011-11-01 18:40:55 +00:00
ganovelli cedf5fb284 bug fixing:
- mixup of nomes Edge and Face on the components.
- possibly use of empty vector in import_obj.h
Thanks to nagaokagetora for showing them
2011-10-25 10:03:10 +00:00
Paolo Cignoni e886684842 moved voronoi_clustering here from meshlab... 2011-10-20 22:26:46 +00:00
Nico Pietroni 2d8c6222cd added DifferenceCrossField, commented some non used function 2011-10-19 09:02:27 +00:00
Paolo Cignoni 16c39dfe24 removed other harmless gcc warnings... 2011-10-17 23:57:27 +00:00
Paolo Cignoni 7c6956fd4d Corrected some gcc compilation errors, Changed the IsFeasible function (now it tests that there is exactly one hole... 2011-10-17 23:35:30 +00:00
Paolo Cignoni 486795fcfb Better Comments on the Genus. 2011-10-17 23:33:48 +00:00
Nico Pietroni f4a0b8bce4 added Coord3DtoUV function 2011-10-05 16:33:22 +00:00
Nico Pietroni a7c702c81d first release version 2011-10-05 16:17:40 +00:00
Paolo Cignoni 2fe129645b Rolled back 2011-10-05 15:04:40 +00:00
ganovelli 09e0ccc62c added variational shape approximation partition of the mesh both
for triangle meshes and for vertex meshes
2011-06-14 17:10:57 +00:00
Marco Di Benedetto ddb4e72887 moved PointerToAttribute outside mesh definition to avoid type mismatches in append with two different mesh types. 2011-06-14 14:52:38 +00:00
granzuglia 129d4edbaf added several missing include file 2011-06-08 08:46:02 +00:00
granzuglia f58b646616 added several missing include file 2011-06-07 14:37:27 +00:00
granzuglia 05ba578f8e added missing std prefix 2011-06-07 13:48:49 +00:00
Paolo Cignoni 6de8b3f890 Added tri_edge_collapse_quadric_tex.h. The specialization of edge collapse for tex and geometry. It should be cleanded a little... 2011-06-05 23:39:31 +00:00
Paolo Cignoni 23d9ad9684 added BasicVertexPair templated class to store as less as possible of an edge... 2011-06-05 23:37:43 +00:00
Paolo Cignoni 3fc9b9ef1f Added MeshCopy(dst,src), with the same syntax of memcopy 2011-06-03 14:37:50 +00:00
Paolo Cignoni 3d4ae1b506 Added UpdatePosition::Translate 2011-06-03 08:32:27 +00:00
Paolo Cignoni 477767ab77 Added QualityMidPointFunctor and QualityEdgePredicate; Two classes (functor and the predicate) that you need for using the refine framework to cut a mesh along a linear interpolation of the quality. This can be used for example to slice a mesh with a plane. 2011-06-02 21:31:30 +00:00