Commit Graph

178 Commits

Author SHA1 Message Date
Paolo Cignoni dee3de3cc8 Added correct overloading of ImportData for per vertex curvature component. 2011-11-01 18:33:52 +00:00
Paolo Cignoni 2fe129645b Rolled back 2011-10-05 15:04:40 +00:00
ganovelli a815890b15 minimal addition to support neighboorhood relation between vertices
and between faces
2011-06-14 16:18:34 +00:00
Paolo Cignoni 5a21c7cd76 Removed the ReorderVert function used for permutating the accessory attributes of OCF components. IT should not be used. 2010-11-09 08:27:44 +00:00
ganovelli 3bd7cbe5ea added cQ() to QualityOcf 2010-11-06 16:38:15 +00:00
ganovelli eb3f1a97fc added HasPerVertexVFAdjacency and HasPerFaceVFAdjacency. Removed
generic HasVFAdjacency which made the logical AND of the two and updated the 
relative calls.
2010-06-24 12:35:37 +00:00
Paolo Cignoni 799914a0d8 commented unused argument of base ImportData to remove gcc warning 2010-06-18 14:32:50 +00:00
ganovelli 585f0462e8 ImportLocal to ImportData. Adjacencies are no more handle by ImportData, but
by speficic functions in append.h (ImportPerxxxAdj(..))
2010-06-16 16:24:26 +00:00
ganovelli de851eb29e inclusion of alltypes.h 2010-05-19 17:16:58 +00:00
Paolo Cignoni 8a47aaf62f removed a double init of a member of vector ocf and reordered members 2010-04-20 00:57:25 +00:00
ganovelli 261ff53ab1 [introduction of half edges as alternative representation]
No modification should be necessary for the existing code.

most relevant changes:

creation of folder:
vcg/connectors  
vcg/connectors/hedge.h
vcg/connectors/hedge_component.h

addition to the container of half edges to the trimesh:
HEdgeContainer hedge; // container
int hn;               // number of half edges

addition of 
vcg/trimesh/update/halfedge_indexed.h
which contains:
- the functions to compute the half edge representation from the indexed  and vivecersa
- the functions to add or remove an half edge
2010-03-25 16:52:18 +00:00
ganovelli 9fc476b130 added type traits to support the mod below:
[ Changes in definition of  TriMesh: PART II ]

Note: No changes to existing code need be the done, this mod
should be fully backward compatible

Old way to define a TriMesh ==============
struct MyMesh: public vcg::tri::TriMesh< vector<MyVertex> , vector <MyFace> >{};

new  ways to define a TriMesh ==============

struct MyMesh: public vcg::tri::TriMesh< CONT1 >{};
struct MyMesh: public vcg::tri::TriMesh< CONT1 , CONT2>{};
struct MyMesh: public vcg::tri::TriMesh< CONT1 , CONT2, CONT3>{};

where CONT[i] can be vector< [MyVertex | MyEdge | MyFace ] > 
(the order is unimportant)
2010-03-19 17:18:00 +00:00
Paolo Cignoni 63e21f15cb Disambiguated the origin of the ScalarType and CoordType in the simplex class. Now it derives from the type specified by the vertexRef component for the faces and from the Coord component for the vertexes. To be sure the ScalarType and CoordTypes are initialized to weird point3<bool> and char just to detect easisly when the wrong types shallow... 2010-03-18 10:02:32 +00:00
ganovelli c40a6c3d97 [ Changes in definition of TriMesh: PART I ]
Note for the developers: the change to make to existing projects is very little 
but strictly necessary to compile. This change IS NOT backward compliant.


==== OLD ==== way to define a TriMesh:

// forward declarations
class MyVertex;
class MyEdge;
class MyFace;

class MyVertex: public VertexSimp2 < MyVertex, MyEdge, MyFace, vertex::Coord3f,...other components>{};
class MyFace: public FaceSimp2 < MyVertex, MyEdge, MyFace, face::VertexRef,...other components>{};
class MyMesh: public TriMesh<vector<MyVertex>,vector<MyFace> >{};


==== NEW ==== way to define a TriMesh:
// forward declarations
class MyVertex;
class MyEdge;
class MyFace;

// declaration of which types is used as VertexType, which type is used as FaceType and so on...
class MyUsedTypes: public vcg::UsedType < vcg::Use<MyVertex>::AsVertexType,
                                          vcg::Use<MyFace>::AsFaceType>{};

class MyVertex: public Vertex < MyUsedTypes, vertex::Coord3f,...other components>{};
class MyFace: public Face < MyUsedTypes, face::VertexRef,...other components>{};
class MyMesh: public TriMesh<vector<MyVertex>,vector<MyFace> >{};

                                 
===== classes introduced          
[vcg::UsedType] : it is a class containing all the types that must be passed to the definition of Vertex, Face, Edge... This
class replaces the list of typenames to pass as first templates and the need to specify the maximal simplicial. So 

<MyVertex, MyEdge, MyFace  becomes <MyUsedTypes<

and 

VertexSimp2 becomes Vertex

[vcg::Use] : an auxiliary class to give a simple way to specify the role of a type

Note 2: the order of templates parameters to vcg::UsedTypes is unimportant, e.g:

class MyUsedTypes: public vcg::UsedType <vcg::Use<MyVertex>::AsVertexType,
                                         vcg::Use<MyEdge>::AsEdgeType,
                                         vcg::Use<MyFace>::AsFaceType>{};

is the same as:
class MyUsedTypes: public vcg::UsedType <vcg::Use<MyFace>::AsFaceType,
                                         vcg::Use<MyEdge>::AsEdgeType,
                                         vcg::Use<MyVertex>::AsVertexType>{};

Note 3: you only need to specify the type  you use. If you do not have edges you do not need 
to include vcg::Use<MyEdge>::AsEdgeType in the template list of UsedTypes.
==== the Part II will be a tiny change to the class TriMesh it self.
2010-03-15 10:42:52 +00:00
Paolo Cignoni 2a18ebd5f5 Heavily restructured component of vertex simplex. Compacted all the emptyXXXX into a single EmptyCore class. Cleaned up the interface for the optional stuff now there is a standard static function that can say if a given component is enabled or not. 2010-03-04 13:34:38 +00:00
Paolo Cignoni 5e1f0ce521 Heavily restructured component of vertex simplex. Compacted all the emptyXXXX into a single EmptyCore class. Cleaned up the interface for the optional stuff now there is a standard static function that can say if a given component is enabled or not. 2010-03-03 16:01:39 +00:00
Paolo Cignoni fc6483307b added a missing cVFi() 2010-02-23 16:45:45 +00:00
Paolo Cignoni 18c92582d4 Cleaned up the CompactFaceVector and the CompactVertexVector, Now they correctly manage existing FV and FF topology by preserving them (if they are initialized to something meaningful). 2010-02-22 17:37:51 +00:00
Paolo Cignoni 3b152298cc added runtime assert to prevent dangerous simplex to simplex assignment in the case of OCF optional attributes. 2010-02-11 00:14:35 +00:00
Paolo Cignoni 3e7b2267f0 added a missing const to the distance functor 2009-12-02 15:11:00 +00:00
Marco Di Benedetto 939da657a9 added public: to TexCoord* Name(). 2009-12-01 17:36:27 +00:00
Paolo Cignoni 302a7725fa removed harmless warnings 2009-11-17 23:34:46 +00:00
Paolo Cignoni 6051c1eeaa added a missing IsVFAdjacencyEnabled and a missing typename 2009-10-29 17:16:41 +00:00
Nico Pietroni 74bd57f2fa missing CurvatureType and CurvatureDirType inside EmptyCurvatureData 2009-10-14 17:19:56 +00:00
Nico Pietroni c57e10951c corrected funtion Normal::ImportLocal 2009-10-14 14:25:59 +00:00
Paolo Cignoni 415228fcd4 Added some missing importLocal functions 2009-08-30 13:54:06 +00:00
Marco Di Benedetto 015d94f736 fixed typo in normal and color (was ImporLocal()). 2009-06-29 05:46:43 +00:00
Marco Di Benedetto 460e6bd73a fixed initialization and resizing bugs on texcoords. 2009-06-29 03:33:56 +00:00
Marco Di Benedetto e5d07a7d62 added specializations for HasPerVertexNormal() and HasPerVertexColor(). 2009-06-28 22:41:05 +00:00
Marco Di Benedetto 24327b218c added HasColorOcf(). 2009-06-28 22:39:57 +00:00
Marco Di Benedetto 4dae9d3d97 added cN() and fixed assert in color. 2009-06-28 03:18:49 +00:00
Marco Di Benedetto 29b9011026 added HasNormalOcf() and HasColorOcf(). 2009-06-28 03:14:48 +00:00
Paolo Cignoni ace6a183b3 added a missing HasPerVertexTexture() 2009-06-24 20:30:36 +00:00
Paolo Cignoni a88ee5b244 Added ocf management of per vertex texture coord 2009-06-23 20:45:44 +00:00
Federico Ponchio e888ef1560 removed some useless consts 2009-06-03 12:23:20 +00:00
Paolo Cignoni 8be6f002a3 Significant rewrote of the ImportLocal framework. Now it can really manage differently typed meshes.
It still requires that for OCF meshes the user enable stuff as needed.
2009-04-05 23:33:04 +00:00
Paolo Cignoni 2631ae5351 Added sph49f, disabled ImportLocal for a while 2009-03-25 07:51:28 +00:00
Paolo Cignoni b8fc43e7c6 Added non optional per vertex radius component 2009-03-18 15:53:52 +00:00
Paolo Cignoni eca304e5f5 mark of Vertex should not be named HasFaceMarkOcf!! 2008-12-21 01:39:46 +00:00
ganovelli c9b6f8f7c8 2008-12-19 10:31:56 +00:00
ganovelli ca3f973398 added unsupported to deprecated in the warning 2008-12-12 18:11:42 +00:00
Paolo Cignoni 7befff7bec make point2 derived Eigen's Matrix, and a set of minimal fixes to make meshlab compile
with both old and new version. The fixes include:
- dot product: vec0 * vec1 => vec0.dot(vec1) (I added .dot() to the old Point classes too)
- Transpose: Transpose is an Eigen type, so we cannot keep it if Eigen is used. Therefore
  I added a .tranpose() to old matrix classes, and modified most of the Transpose() to transpose()
  both in vcg and meshlab. In fact, transpose() are free with Eigen, it simply returns a transpose
  expression without copies. On the other be carefull:  m = m.transpose() won't work as expected,
  here me must evaluate to a temporary: m = m.transpose().eval(); However, this operation in very
  rarely needed: you transpose at the same sime you set m, or you use m.transpose() directly.
- the last issue is Normalize which both modifies *this and return a ref to it. This behavior
  don't make sense anymore when using expression template, e.g., in (a+b).Normalize(), the type
  of a+b if not a Point (or whatever Vector types), it an expression of the addition of 2 points,
  so we cannot modify the value of *this, since there is no value. Therefore I've already changed
  all those .Normalize() of expressions to the Eigen's version .normalized().
- Finally I've changed the Zero to SetZero in the old Point classes too.
2008-10-28 00:59:46 +00:00
ganovelli 7021c9af38 added warning for deprecation 2008-09-30 10:35:44 +00:00
ganovelli b5bca977a7 added pragma message to deprecate this way to define the simplex 2008-09-28 14:30:09 +00:00
ganovelli 68d900ec7e changes to compile previous commit with gcc 2008-09-24 09:15:38 +00:00
ganovelli a952bb1801 DistanceFunctor templated on the type of the query
Added PointNormalDistanceFunctor
2008-09-24 08:42:17 +00:00
Paolo Cignoni 559161beda Changed the name of the pointer to edge Ep into the more standard VEp (like vertex plus and the other vertex to simplex adjacencies VFp and VTp) 2008-08-20 20:34:01 +00:00
Nico Pietroni 491317ecd5 *** empty log message *** 2008-01-07 10:36:00 +00:00
Nico Pietroni 00f3907e1b *** empty log message *** 2007-10-11 08:39:05 +00:00
mtarini 84946de883 Texture coord name change! "TCoord" and "Texture" are BAD. "TexCoord" is GOOD. 2007-03-12 15:42:11 +00:00
Paolo Cignoni b7ab2cfe56 VTb moved to VTp 2007-02-26 14:21:44 +00:00
ganovelli 01a81c63de added QualityType to comply vertexplus type 2007-02-20 14:08:34 +00:00
Nico Pietroni 25b916162d corrected wrong initial define
from:

#ifndef __VCGLIB_VERTEX__VN__TYPE
#define __VCGLIB_VERTEX__VN__TYPE

to:

#ifndef __VCGLIB_VERTEX__VNVT__TYPE
#define __VCGLIB_VERTEX__VNVT__TYPE
2007-01-25 01:08:09 +00:00
mtarini 8b66ea4b94 newline at endoffile 2006-12-14 13:38:10 +00:00
Nico Pietroni e35961b498 *** empty log message *** 2006-11-10 11:50:57 +00:00
Marco Di Benedetto 1fbdc88c2c First Commit. 2006-09-28 13:30:39 +00:00
Paolo Cignoni 837f3482f5 added severla comments
reimplemented operator ()
2006-08-23 15:35:36 +00:00
Paolo Cignoni 7810ccc68e added minimal comments 2006-08-23 15:34:20 +00:00
ganovelli 19a6e60812 cambiato VTb in VTp 2006-07-10 17:04:41 +00:00
Marco Di Benedetto 3c222fd583 First Commit. 2006-05-08 15:19:21 +00:00
Paolo Cignoni 53dfb84a07 newline at end of file please 2006-04-11 08:41:31 +00:00
Paolo Cignoni f8e4bf2c94 Added HasFlags and initialization of flags at construction. 2005-11-12 18:41:14 +00:00
Paolo Cignoni 9d764b3a8c Added cVFp member 2005-10-14 13:25:50 +00:00
Nico Pietroni dae0988085 added getBBox method 2005-10-06 14:26:39 +00:00
Nico Pietroni 644fca68bf minor changes 2005-10-05 17:39:14 +00:00
Nico Pietroni de125d7f59 first release version 2005-10-03 14:13:13 +00:00
Nico Pietroni c19fce46a3 first release version 2005-09-30 12:51:39 +00:00
Paolo Cignoni 2cfe4038ab *** empty log message *** 2005-09-14 14:32:35 +00:00
Paolo Cignoni e3b4ba1f45 Initial commit 2005-07-06 08:09:26 +00:00
ganovelli 3d0dee1073 *** empty log message *** 2005-06-30 10:16:11 +00:00
Paolo Cignoni 7761b396ab Initial Commit. 2005-05-17 13:42:25 +00:00
Paolo Cignoni 1cb26bdfbd Created (Vertex-Face Topology And Incremental Mark). 2005-04-14 17:25:42 +00:00
Paolo Cignoni 9d106c50c1 Minor changes 2005-03-18 16:38:36 +00:00
Paolo Cignoni b4b7f45041 Removed NormalizedNormalV (out of standard and wrong) and
added the member functions Normal and NormalizedNormal() (just like for faces)
2005-03-18 00:13:45 +00:00
ganovelli f9ca9b6ad8 *** empty log message *** 2005-03-14 16:46:50 +00:00
Paolo Cignoni 7b5459a777 Wrote down the final right version of the naming rules (af and NOT fa) 2005-03-11 13:33:38 +00:00
Paolo Cignoni d829ce7db6 Removed wrong named vertex and face configuration files 2005-03-11 12:10:59 +00:00
Paolo Cignoni 5bd4d8b2b1 Better Doxygen documentation 2004-10-28 00:56:44 +00:00
ganovelli d4e5b26c12 added default template paramteer 2004-10-25 16:17:30 +00:00
Federico Ponchio e99cb94a03 Created. 2004-10-22 14:35:11 +00:00
ganovelli f10b76771b added template on corrdinate type (default Point3) 2004-10-11 17:45:05 +00:00
Paolo Cignoni db05ba4282 DUMMY classes definition moved into vcg namespace 2004-09-28 15:24:56 +00:00
Paolo Cignoni 359c3a841d Initial Update 2004-09-09 23:15:43 +00:00
ganovelli 6137d15e7e removed 2004-09-09 12:51:01 +00:00
ganovelli 11ed8f5715 created (changed from afvnvm) 2004-09-09 12:50:39 +00:00
ganovelli 0bbd5bb33b minor changes to comply gcc compiler (typename's and stuff) 2004-08-25 15:15:27 +00:00
Nico Pietroni fe34dc9c78 vertex with normal FFtopology and temporary mark for decimation 2004-08-10 14:53:11 +00:00
Nico Pietroni 2ce9499498 corrected NormalizedNormalV function... 2004-07-20 15:24:53 +00:00
ganovelli 16e27ee1e8 VFb moved to VFp, userbit to bitflag,setV, inclusion of pos.h 2004-07-15 11:25:01 +00:00
Nico Pietroni 9b76dfbd2b adde NormalizedNormalV funtion to compute the normal on a vertex 2004-07-15 10:13:48 +00:00
ganovelli 24583cbed2 muted from atvnvm 2004-07-09 10:10:22 +00:00
ganovelli 2542c1654a renamed to comply alphabetical order 2004-07-08 13:20:10 +00:00
Nico Pietroni 20f941401c vertex with tetra topology. normals and temporary mark 2004-07-08 08:46:15 +00:00
Nico Pietroni a139c7006c vertex with tetrahedron adiacency, normal and mark for decimation 2004-06-22 14:29:36 +00:00
ganovelli 91e427d61f created 2004-05-14 00:39:27 +00:00
ganovelli ba71d8f492 syntax error (typo) 2004-05-13 22:44:40 +00:00
ganovelli ebdf01794a define updated 2004-05-13 22:42:57 +00:00
ganovelli ccce11f1e0 default template parameters 2004-05-13 22:40:02 +00:00
Nico Pietroni 06a7d3a6de no default template parameters.. 2004-05-13 12:49:42 +00:00
Nico Pietroni 54aaa60259 no default template parameters... each one must be specified 2004-05-13 12:49:22 +00:00