Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
CGoGN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Etienne Schmitt
CGoGN
Commits
351c36b2
Commit
351c36b2
authored
Mar 14, 2014
by
CGoGN
Browse files
Options
Browse Files
Download
Plain Diff
Merge /home/vanhoey/CGoGN
Conflicts: include/Algo/Modelisation/polyhedron.hpp
parents
b9fb2856
9d4aacc3
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
98 additions
and
74 deletions
+98
-74
include/Algo/Import/import2tables.h
include/Algo/Import/import2tables.h
+2
-2
include/Algo/Modelisation/polyhedron.hpp
include/Algo/Modelisation/polyhedron.hpp
+47
-60
include/Algo/ProgressiveMesh/pmesh.h
include/Algo/ProgressiveMesh/pmesh.h
+6
-3
include/Algo/ProgressiveMesh/pmesh.hpp
include/Algo/ProgressiveMesh/pmesh.hpp
+41
-7
include/Algo/Render/GL2/colorPerFaceRender.hpp
include/Algo/Render/GL2/colorPerFaceRender.hpp
+2
-2
No files found.
include/Algo/Import/import2tables.h
View file @
351c36b2
...
...
@@ -102,8 +102,6 @@ private:
bool
importPlySLFgeneric
(
const
std
::
string
&
filename
,
std
::
vector
<
std
::
string
>&
attrNames
);
bool
importPlySLFgenericBin
(
const
std
::
string
&
filename
,
std
::
vector
<
std
::
string
>&
attrNames
);
#ifdef WITH_ASSIMP
bool
importASSIMP
(
const
std
::
string
&
filename
,
std
::
vector
<
std
::
string
>&
attrNames
);
#endif
...
...
@@ -131,6 +129,8 @@ public:
bool
importVoxellisation
(
Algo
::
Surface
::
Modelisation
::
Voxellisation
&
voxellisation
,
std
::
vector
<
std
::
string
>&
attrNames
);
bool
importPlySLFgenericBin
(
const
std
::
string
&
filename
,
std
::
vector
<
std
::
string
>&
attrNames
);
MeshTablesSurface
(
typename
PFP
::
MAP
&
map
)
:
m_map
(
map
)
{
}
...
...
include/Algo/Modelisation/polyhedron.hpp
View file @
351c36b2
...
...
@@ -506,66 +506,53 @@ void explodPolyhedron(typename PFP::MAP& map, Dart d, VertexAttribute<typename
}
}
// template <typename PFP>
// void quads2TrianglesCC(typename PFP::MAP& the_map, Dart primd)
// {
// DartMarker m(the_map);
// // list of faces to process and processed(before pos iterator)
// std::list<Dart> ld;
// ld.push_back(primd);
// // current position in list
// typename std::list<Dart>::iterator pos = ld.begin();
// do
// {
// Dart d = *pos;
// // cut the face of first dart of list
// Dart d1 = the_map.phi1(d);
// Dart e = the_map.phi1(d1);
// Dart e1 = the_map.phi1(e);
// Dart f = the_map.phi1(e1);
// if (f==d) // quad
// {
// the_map.splitFace(d,e);
// // mark the face
// m.markOrbit<FACE>(d);
// m.markOrbit<FACE>(e);
// }
// else m.markOrbit<FACE>(d);
// // and store neighbours faces in the list
// d = the_map.phi2(d);
// e = the_map.phi2(e);
// d1 = the_map.phi1(the_map.phi2(d1));
// e1 = the_map.phi1(the_map.phi2(e1));
// if (!m.isMarked(d))
// ld.push_back(d);
// if (!m.isMarked(e))
// ld.push_back(e);
// if (!m.isMarked(d1))
// ld.push_back(d1);
// if ((f==d) && (!m.isMarked(e1)))
// ld.push_back(e1);
// pos++;
// }while (pos!=ld.end()); // stop when no more face to process
// }
// template <typename PFP>
// Dart triangleFan_topo(typename PFP::MAP& the_map, int n)
// {
// Dart d = the_map.newFace(3,false);
// Dart e = the_map.phi1(d);
// for(int i=1;i<n;++i)
// {
// Dart f = the_map.newFace(3,false);
// the_map.sewFaces(the_map.phi_1(f),e);
// e = the_map.phi1(f);
// }
// the_map.sewFaces(the_map.phi_1(d),e);
// return d;
// }
template
<
typename
PFP
>
void
quads2TrianglesCC
(
typename
PFP
::
MAP
&
the_map
,
Dart
primd
)
{
DartMarker
m
(
the_map
);
// list of faces to process and processed(before pos iterator)
std
::
list
<
Dart
>
ld
;
ld
.
push_back
(
primd
);
// current position in list
typename
std
::
list
<
Dart
>::
iterator
pos
=
ld
.
begin
();
do
{
Dart
d
=
*
pos
;
// cut the face of first dart of list
Dart
d1
=
the_map
.
phi1
(
d
);
Dart
e
=
the_map
.
phi1
(
d1
);
Dart
e1
=
the_map
.
phi1
(
e
);
Dart
f
=
the_map
.
phi1
(
e1
);
if
(
f
==
d
)
// quad
{
the_map
.
splitFace
(
d
,
e
);
// mark the face
m
.
markOrbit
<
FACE
>
(
d
);
m
.
markOrbit
<
FACE
>
(
e
);
}
else
m
.
markOrbit
<
FACE
>
(
d
);
// and store neighbours faces in the list
d
=
the_map
.
phi2
(
d
);
e
=
the_map
.
phi2
(
e
);
d1
=
the_map
.
phi1
(
the_map
.
phi2
(
d1
));
e1
=
the_map
.
phi1
(
the_map
.
phi2
(
e1
));
if
(
!
m
.
isMarked
(
d
))
ld
.
push_back
(
d
);
if
(
!
m
.
isMarked
(
e
))
ld
.
push_back
(
e
);
if
(
!
m
.
isMarked
(
d1
))
ld
.
push_back
(
d1
);
if
((
f
==
d
)
&&
(
!
m
.
isMarked
(
e1
)))
ld
.
push_back
(
e1
);
pos
++
;
}
while
(
pos
!=
ld
.
end
());
// stop when no more face to process
}
}
// namespace Modelisation
...
...
include/Algo/ProgressiveMesh/pmesh.h
View file @
351c36b2
...
...
@@ -60,9 +60,8 @@ private:
VertexAttribute
<
typename
PFP
::
VEC3
>&
positionsTable
;
DartMarker
&
inactiveMarker
;
SelectorUnmarked
dartSelect
;
Algo
::
Surface
::
Decimation
::
Edge
Selector
<
PFP
>*
m_selector
;
Algo
::
Surface
::
Decimation
::
Selector
<
PFP
>*
m_selector
;
std
::
vector
<
Algo
::
Surface
::
Decimation
::
ApproximatorGen
<
PFP
>*>
m_approximators
;
std
::
vector
<
Algo
::
Surface
::
Decimation
::
PredictorGen
<
PFP
>*>
m_predictors
;
std
::
vector
<
VSplit
<
PFP
>*>
m_splits
;
...
...
@@ -85,6 +84,10 @@ public:
Algo
::
Surface
::
Decimation
::
SelectorType
s
,
Algo
::
Surface
::
Decimation
::
ApproximatorType
a
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
)
;
ProgressiveMesh
(
MAP
&
map
,
DartMarker
&
inactive
,
Algo
::
Surface
::
Decimation
::
Selector
<
PFP
>*
selector
,
std
::
vector
<
Algo
::
Surface
::
Decimation
::
ApproximatorGen
<
PFP
>*>&
approximators
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
)
;
~
ProgressiveMesh
()
;
bool
initOk
()
{
return
m_initOk
;
}
...
...
@@ -92,7 +95,7 @@ public:
void
createPM
(
unsigned
int
percentWantedVertices
)
;
std
::
vector
<
VSplit
<
PFP
>*>&
splits
()
{
return
m_splits
;
}
Algo
::
Surface
::
Decimation
::
Edge
Selector
<
PFP
>*
selector
()
{
return
m_selector
;
}
Algo
::
Surface
::
Decimation
::
Selector
<
PFP
>*
selector
()
{
return
m_selector
;
}
std
::
vector
<
Algo
::
Surface
::
Decimation
::
ApproximatorGen
<
PFP
>*>&
approximators
()
{
return
m_approximators
;
}
std
::
vector
<
Algo
::
Surface
::
Decimation
::
PredictorGen
<
PFP
>*>&
predictors
()
{
return
m_predictors
;
}
...
...
include/Algo/ProgressiveMesh/pmesh.hpp
View file @
351c36b2
...
...
@@ -42,7 +42,7 @@ ProgressiveMesh<PFP>::ProgressiveMesh(
Algo
::
Surface
::
Decimation
::
SelectorType
s
,
Algo
::
Surface
::
Decimation
::
ApproximatorType
a
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
)
:
m_map
(
map
),
positionsTable
(
position
),
inactiveMarker
(
inactive
)
,
dartSelect
(
inactiveMarker
)
m_map
(
map
),
positionsTable
(
position
),
inactiveMarker
(
inactive
)
{
CGoGNout
<<
" creating approximator and predictor.."
<<
CGoGNflush
;
...
...
@@ -83,22 +83,22 @@ ProgressiveMesh<PFP>::ProgressiveMesh(
switch
(
s
)
{
case
Algo
::
Surface
::
Decimation
::
S_MapOrder
:
{
m_selector
=
new
Algo
::
Surface
::
Decimation
::
EdgeSelector_MapOrder
<
PFP
>
(
m_map
,
positionsTable
,
m_approximators
,
dartSelect
)
;
m_selector
=
new
Algo
::
Surface
::
Decimation
::
EdgeSelector_MapOrder
<
PFP
>
(
m_map
,
positionsTable
,
m_approximators
)
;
break
;
}
case
Algo
::
Surface
::
Decimation
::
S_Random
:
{
m_selector
=
new
Algo
::
Surface
::
Decimation
::
EdgeSelector_Random
<
PFP
>
(
m_map
,
positionsTable
,
m_approximators
,
dartSelect
)
;
m_selector
=
new
Algo
::
Surface
::
Decimation
::
EdgeSelector_Random
<
PFP
>
(
m_map
,
positionsTable
,
m_approximators
)
;
break
;
}
case
Algo
::
Surface
::
Decimation
::
S_EdgeLength
:
{
m_selector
=
new
Algo
::
Surface
::
Decimation
::
EdgeSelector_Length
<
PFP
>
(
m_map
,
positionsTable
,
m_approximators
,
dartSelect
)
;
m_selector
=
new
Algo
::
Surface
::
Decimation
::
EdgeSelector_Length
<
PFP
>
(
m_map
,
positionsTable
,
m_approximators
)
;
break
;
}
case
Algo
::
Surface
::
Decimation
::
S_QEM
:
{
m_selector
=
new
Algo
::
Surface
::
Decimation
::
EdgeSelector_QEM
<
PFP
>
(
m_map
,
positionsTable
,
m_approximators
,
dartSelect
)
;
m_selector
=
new
Algo
::
Surface
::
Decimation
::
EdgeSelector_QEM
<
PFP
>
(
m_map
,
positionsTable
,
m_approximators
)
;
break
;
}
case
Algo
::
Surface
::
Decimation
::
S_MinDetail
:
{
m_selector
=
new
Algo
::
Surface
::
Decimation
::
EdgeSelector_MinDetail
<
PFP
>
(
m_map
,
positionsTable
,
m_approximators
,
dartSelect
)
;
m_selector
=
new
Algo
::
Surface
::
Decimation
::
EdgeSelector_MinDetail
<
PFP
>
(
m_map
,
positionsTable
,
m_approximators
)
;
break
;
}
case
Algo
::
Surface
::
Decimation
::
S_Curvature
:
{
m_selector
=
new
Algo
::
Surface
::
Decimation
::
EdgeSelector_Curvature
<
PFP
>
(
m_map
,
positionsTable
,
m_approximators
,
dartSelect
)
;
m_selector
=
new
Algo
::
Surface
::
Decimation
::
EdgeSelector_Curvature
<
PFP
>
(
m_map
,
positionsTable
,
m_approximators
)
;
break
;
}
}
CGoGNout
<<
"..done"
<<
CGoGNendl
;
...
...
@@ -131,6 +131,40 @@ ProgressiveMesh<PFP>::ProgressiveMesh(
quantizationApplied
=
false
;
}
template
<
typename
PFP
>
ProgressiveMesh
<
PFP
>::
ProgressiveMesh
(
MAP
&
map
,
DartMarker
&
inactive
,
Algo
::
Surface
::
Decimation
::
Selector
<
PFP
>*
selector
,
std
::
vector
<
Algo
::
Surface
::
Decimation
::
ApproximatorGen
<
PFP
>*>&
approximators
,
VertexAttribute
<
typename
PFP
::
VEC3
>&
position
)
:
m_map
(
map
),
m_selector
(
selector
),
m_approximators
(
approximators
),
positionsTable
(
position
),
inactiveMarker
(
inactive
)
{
CGoGNout
<<
" initializing approximators.."
<<
CGoGNflush
;
for
(
typename
std
::
vector
<
Algo
::
Surface
::
Decimation
::
ApproximatorGen
<
PFP
>*>::
iterator
it
=
m_approximators
.
begin
();
it
!=
m_approximators
.
end
();
++
it
)
{
if
(
!
(
*
it
)
->
init
())
m_initOk
=
false
;
if
((
*
it
)
->
getApproximatedAttributeName
()
==
"position"
)
m_positionApproximator
=
reinterpret_cast
<
Algo
::
Surface
::
Decimation
::
Approximator
<
PFP
,
VEC3
,
EDGE
>*>
(
*
it
)
;
}
CGoGNout
<<
"..done"
<<
CGoGNendl
;
CGoGNout
<<
" initializing predictors.."
<<
CGoGNflush
;
for
(
typename
std
::
vector
<
Algo
::
Surface
::
Decimation
::
PredictorGen
<
PFP
>*>::
iterator
it
=
m_predictors
.
begin
();
it
!=
m_predictors
.
end
();
++
it
)
if
(
!
(
*
it
)
->
init
())
m_initOk
=
false
;
CGoGNout
<<
"..done"
<<
CGoGNendl
;
CGoGNout
<<
" initializing selector.."
<<
CGoGNflush
;
m_initOk
=
m_selector
->
init
()
;
CGoGNout
<<
"..done"
<<
CGoGNendl
;
m_detailAmount
=
REAL
(
1
)
;
m_localFrameDetailVectors
=
false
;
quantizationInitialized
=
false
;
quantizationApplied
=
false
;
}
template
<
typename
PFP
>
ProgressiveMesh
<
PFP
>::~
ProgressiveMesh
()
{
...
...
include/Algo/Render/GL2/colorPerFaceRender.hpp
View file @
351c36b2
...
...
@@ -131,9 +131,9 @@ void ColorPerFaceRender::updateVBO(Utils::VBO& vboPosition, Utils::VBO& vboNorma
bufferNormals
.
push_back
(
PFP
::
toVec3f
(
normals
[
d
]));
bufferColors
.
push_back
(
PFP
::
toVec3f
(
colorPerXXX
[
d
]));
buffer
.
push_back
(
PFP
::
toVec3f
(
positions
[
b
]));
bufferNormals
.
push_back
(
PFP
::
toVec3f
(
normals
[
b
]);
bufferNormals
.
push_back
(
PFP
::
toVec3f
(
normals
[
b
])
)
;
bufferColors
.
push_back
(
PFP
::
toVec3f
(
colorPerXXX
[
b
]));
buffer
.
push_back
(
PFP
::
toVec3f
(
positions
[
c
]);
buffer
.
push_back
(
PFP
::
toVec3f
(
positions
[
c
])
)
;
bufferNormals
.
push_back
(
PFP
::
toVec3f
(
normals
[
c
]));
bufferColors
.
push_back
(
PFP
::
toVec3f
(
colorPerXXX
[
c
]));
b
=
c
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment