ganovelli
cf7563eff4
[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:50:10 +00:00
Paolo Cignoni
1fb9d1c555
added a few disambiguating 'template' keywords
2010-03-23 22:37:46 +00:00
ganovelli
fb9d702e08
nametypebound..corrected bugs, changed a name, regrouped functions.
...
Change useless NameOf in NamesWithType which returns all the names bound to a given type
2010-03-23 09:47:52 +00:00
ganovelli
bda10aba6e
NameTypeBound wsorking (still to refine)
2010-03-23 09:25:13 +00:00
Paolo Cignoni
80f825a428
removed harmless warnings
2010-03-16 14:25:30 +00:00
Paolo Cignoni
404831fc2f
added a missing 'template' keyword between class and metod name.
2010-03-16 11:06:32 +00:00
ganovelli
09b0fb5ef7
added a way to define a scope, i.e. a collection of bounds between name of the attributes
...
and their type, so that one can add an attribute without knowing its type. It is useful
when working with plugin.
example:
vcg::tri::NameTypeScope myScope;
AddNameTypeBound<int>(myScope,std::string("number");
AddNameTypeBound<float>(myScope,std::string("incoming_light"));
we have crated a scope myScope where "number" is bound a int and incoming_light is a float
In another part of code where I may not know the type of "number", I can still do:
AddPerVertexAttribute(myScope, mesh, "number");
and an int attibute name "number" will be added.
2010-03-15 15:17:20 +00:00
Paolo Cignoni
355edd042e
removed harmless warnings
2010-02-24 09:56:58 +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
446400f6fc
Now the compactvertex and compactface funtions use the importlocal chain so we are sure that all the meaningful data is correctly copied (otherwise ocf stuff will not be copied) On the other hand when using ImportLocal we do not copy pointer based stuff like adjacency and *vertex pointers* that must be terefore copied by hand...
2010-02-19 00:21:26 +00:00
Paolo Cignoni
39f12e9fdd
added a function to permutate the vertex vector according to a given permutation.
2009-12-07 09:05:20 +00:00
ganovelli
b902431bc1
extended support to dump attributes (see wrap/io_trimesh/[import | export]_VMI.h )
...
It was only for vertices, now it is also for faces and mesh attributes.
Compiled gcc and .net. Tested only on toy exmaples
2009-10-07 11:05:29 +00:00
ganovelli
f1b1220225
small changes to enable the mesh dumping on VMI file (see wrap/io_trimesh/[import | export]_VMI.h )
...
and HandlesWrapper renamed to PointerToAttribute
2009-07-29 12:46:46 +00:00
Marco Di Benedetto
a79d8f9bd8
changed field order in PointerUpdater to prevent constructor warning (in initialization list).
2009-07-08 16:12:46 +00:00
Marco Di Benedetto
54f5418be2
removed reset to false of preventUpdateFlag in Clear().
2009-06-29 16:13:26 +00:00
ganovelli
f223914581
factorized a bit the attribute classes in TriMesh;
...
added to IsValidHandle the check that pointer to data is not null.
Explanation:
a handle may be not valid for two reasons:
1) the attribute has been destroyed with a DeletePer*Attribute
2) the handle has been declared but not initialized.
The change is to cover the case 2)
2009-06-04 16:13:21 +00:00
ganovelli
917343b0f5
removed the (useless) template parameter to Per[XXX]DeleteAttribute(mesh,name)
2009-03-20 10:22:16 +00:00
ganovelli
87b8c55144
added Allocator::IsValidHandle which returns true if an handle to an attribute is valid or if the attribute
...
has been removed. This modification affects timesh/allocate.h and trimesh/base.h
2009-01-15 17:41:59 +00:00
ganovelli
4cae6b5107
added the update of the pointers related to the AddEdges
2008-11-26 17:46:31 +00:00
ganovelli
1aa88e635b
added update of newEnd in AddFaces
...
Added [de]allocation of edges and per-edges attributes.
2008-11-12 15:46:16 +00:00
Paolo Cignoni
2e7c97e90e
Corrected the update cycle in the AddFace. Thanks to Michele Vannoni for pointing out this bug!
2008-11-07 15:36:19 +00:00
ganovelli
0d4b3fbed0
[Polygon modification]
...
Added components to the face to handle generic polygons.
(compiled with .net and gcc)
This commit includes the following files:
vcg/complex/trimesh/base.h
Added deallocation of polygon data in the destructor
vcg/complex/trimesh/allocate.h
generalization from 3 to VN() vertices
vcg/complex/trimesh/update/topology.h
generalization from 3 to VN() vertices
vcg/complex/trimesh/update/flags.h
generalization from 3 to VN() vertices
vcg/simplex/face/pos.h
generalization from 3 to VN() vertices
vcg/simplex/faceplus/base.h
Added the method VN() to query the number of vertices
of the polygon (deafult 3) and methods Prev and Next
vcg/simplex/faceplus/component.h
added Alloc and Dealloc calls along the hierarchies
2008-10-08 09:10:53 +00:00
ganovelli
1a9220ce98
behaviour change: AddFaces and AddVertices return the vert.end() and face.end() if called with n==0.
...
Added AddVertices with local pointers to VertexPointer to update
2008-07-29 13:20:44 +00:00
Paolo Cignoni
1407af2537
removed harmless warnings
2008-07-09 10:31:55 +00:00
Paolo Cignoni
700b8cd26e
Removed annoying unsigned vs signed warnings.
...
Thanks to Alain Boyer for the kind bug submission!
2008-06-29 22:44:44 +00:00
ganovelli
db1c99cdf9
added PerMeshAttribute
2008-06-23 14:18:13 +00:00
Massimiliano Corsini
1059b3d24d
add missing include
2008-06-05 14:12:40 +00:00
ganovelli
666040bcf5
PerVertexAttribute and PerFaceAttribute added to Trimesh
2008-05-15 16:32:27 +00:00
Paolo Cignoni
820bfdd65e
fast return for compacting functions if no compacting is needed
2008-04-18 17:45:23 +00:00
Paolo Cignoni
fc917d5080
moved Index function from append to the allocate
2008-04-10 09:18:57 +00:00
Paolo Cignoni
9a31f6318d
template the reorder functions on the vector types (for ocf)
2008-04-03 22:47:10 +00:00
Paolo Cignoni
3d4222b231
Completed the garbage collecting functions CompactVertexVector and CompactFaceVector.
2008-03-11 09:22:07 +00:00
Paolo Cignoni
1f38a990b5
forgotten required std::
2007-12-11 20:18:55 +00:00
Paolo Cignoni
7d6a210e75
Added the CompactVertexVector garbage collecting function.
2007-12-11 11:36:03 +00:00
Paolo Cignoni
12c8c9f3ff
Added Allocator::DeleteFace and Allocator::DeleteVertex; Now the use of SetD() should be deprecated.
2007-10-16 16:46:53 +00:00
Paolo Cignoni
f4d3561502
Added test in AddVertices to do not update un-initalized vert references (for newly allocated faces)
2007-01-11 10:24:25 +00:00
Paolo Cignoni
5670460684
Added check with the new end and avoided dangerous updating of already updated pointers
2006-11-29 15:58:50 +00:00
Paolo Cignoni
d614e6baa5
Added default constructor with null initialization to adjacency members.
...
AddFaces and AddVertices NEED to know if the topology is correctly computed to update it.
2006-11-28 22:34:28 +00:00
Federico Ponchio
cc5d4df4e8
Removed a couple of useless assert.
2006-11-13 13:12:27 +00:00
ganovelli
841b424b5c
the calls to HasFFAdjacency e HasVFAdjacency have been changed to override them for the optional attributes (see vcg/complex/trimesh/base.h)
2006-10-27 11:06:29 +00:00
Paolo Cignoni
804c4aaf1c
Added #include <assert.h>
2006-10-17 06:54:14 +00:00
Federico Ponchio
b5f612153c
usual typename missing
2006-10-02 09:31:47 +00:00
Paolo Cignoni
655ae0ce8b
Fixed a few bug.
2006-09-29 15:11:41 +00:00
Paolo Cignoni
aabba26c14
Removed a useless, wrong version of AddFaces
2006-09-29 14:40:22 +00:00
Paolo Cignoni
a16d494cd5
fix bug end iterator++
2006-02-28 12:22:48 +00:00
Paolo Cignoni
baad6db4b9
fix bug end iterator++
2006-02-28 12:13:49 +00:00
Paolo Cignoni
e58bf0d711
Removed flags clearing (now it should be in the constructor of face and vertex)
2005-11-10 15:37:58 +00:00
Paolo Cignoni
dee2e4f284
Re-inserted the cFFp and cVFp access. If only the const version of the member function exists, the compiler will call it
...
when a non-const object invokes that function
2005-10-13 09:32:11 +00:00
Federico Ponchio
1723bbf895
cFFp doesn not exist -> FFp (there is the const version...)
...
same for cVFp.
2005-10-12 17:26:19 +00:00
Paolo Cignoni
ead8780772
Removed clearing of flags of added faces. Now the flag component has a constructor that clear it.
...
FF and VF adjacency are updated only if they are present and consistent (e.g. only if VFp(k) != 0 or FFp(k)!=0)
2005-10-12 10:47:21 +00:00