Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Hurstel
CGoGN
Commits
6a6f5c35
Commit
6a6f5c35
authored
Feb 13, 2012
by
Pierre Kraemer
Browse files
Merge cgogn:~thery/CGoGN
parents
6fc984cb
bcbfbd82
Changes
10
Hide whitespace changes
Inline
Side-by-side
Apps/Examples/viewer.cpp
View file @
6a6f5c35
...
...
@@ -255,6 +255,7 @@ void Viewer::importMesh(std::string& filename)
normalBaseSize
=
bb
.
diagSize
()
/
100.0
f
;
// vertexBaseSize = normalBaseSize /5.0f ;
normal
=
myMap
.
getAttribute
<
PFP
::
VEC3
>
(
VERTEX
,
"normal"
)
;
if
(
!
normal
.
isValid
())
normal
=
myMap
.
addAttribute
<
PFP
::
VEC3
>
(
VERTEX
,
"normal"
)
;
...
...
include/Algo/Render/GL2/topo3Render.h
View file @
6a6f5c35
...
...
@@ -255,11 +255,15 @@ public:
Dart
picking
(
typename
PFP
::
MAP
&
map
,
int
x
,
int
y
,
const
FunctorSelect
&
good
=
allDarts
);
/**
* compute dart from color (for picking)
*/
Dart
colToDart
(
float
*
color
);
template
<
typename
PFP
>
void
dartToCol
(
typename
PFP
::
MAP
&
map
,
Dart
d
,
float
&
r
,
float
&
g
,
float
&
b
);
/**
* compute color from dart (for picking)
*/
void
dartToCol
(
Dart
d
,
float
&
r
,
float
&
g
,
float
&
b
);
...
...
include/Algo/Render/GL2/topo3Render.hpp
View file @
6a6f5c35
...
...
@@ -253,19 +253,6 @@ void Topo3Render::updateDataMap3(typename PFP::MAP& mapx, const typename PFP::TV
}
template
<
typename
PFP
>
void
Topo3Render
::
dartToCol
(
typename
PFP
::
MAP
&
map
,
Dart
d
,
float
&
r
,
float
&
g
,
float
&
b
)
{
// unsigned int lab = d.index + 1; // add one to avoid picking the black of screen
unsigned
int
lab
=
map
.
dartIndex
(
d
)
+
1
;
// add one to avoid picking the black of screen
r
=
float
(
lab
%
255
)
/
255.0
f
;
lab
=
lab
/
255
;
g
=
float
(
lab
%
255
)
/
255.0
f
;
lab
=
lab
/
255
;
b
=
float
(
lab
%
255
)
/
255.0
f
;
lab
=
lab
/
255
;
if
(
lab
!=
0
)
CGoGNerr
<<
"Error picking color, too many darts"
<<
CGoGNendl
;
}
template
<
typename
PFP
>
void
Topo3Render
::
setDartsIdColor
(
typename
PFP
::
MAP
&
map
,
const
FunctorSelect
&
good
)
...
...
@@ -281,7 +268,7 @@ void Topo3Render::setDartsIdColor(typename PFP::MAP& map, const FunctorSelect& g
if
(
nb
<
m_nbDarts
)
{
float
r
,
g
,
b
;
dartToCol
<
PFP
>
(
map
,
d
,
r
,
g
,
b
);
dartToCol
(
d
,
r
,
g
,
b
);
float
*
local
=
colorBuffer
+
3
*
m_attIndex
[
d
];
// get the right position in VBO
*
local
++
=
r
;
...
...
include/Algo/Render/GL2/topoRender.h
View file @
6a6f5c35
...
...
@@ -115,18 +115,35 @@ protected:
Utils
::
ShaderColorPerVertex
*
m_shader2
;
/**
* compute color from dart index (for color picking)
*/
Dart
colToDart
(
float
*
color
);
template
<
typename
PFP
>
void
dartToCol
(
typename
PFP
::
MAP
&
map
,
Dart
d
,
float
&
r
,
float
&
g
,
float
&
b
);
/**
* compute dart from color (for color picking)
*/
void
dartToCol
(
Dart
d
,
float
&
r
,
float
&
g
,
float
&
b
);
/**
* pick the color in the rendered image
*/
Dart
pickColor
(
unsigned
int
x
,
unsigned
int
y
);
/**
* affect a color to each dart
*/
template
<
typename
PFP
>
void
setDartsIdColor
(
typename
PFP
::
MAP
&
map
,
const
FunctorSelect
&
good
);
/**
* save colors before picking
*/
void
pushColors
();
/**
* restore colors after picking
*/
void
popColors
();
public:
...
...
include/Algo/Render/GL2/topoRender.hpp
View file @
6a6f5c35
...
...
@@ -67,10 +67,9 @@ void TopoRender::updateDataMap(typename PFP::MAP& mapx, const typename PFP::TVEC
std
::
vector
<
Dart
>
vecDarts
;
vecDarts
.
reserve
(
map
.
getNbDarts
());
// no problem dart is int: no problem of memory
if
(
m_attIndex
.
map
()
!
=
&
map
)
{
m_attIndex
=
map
.
template
getAttribute
<
unsigned
int
>(
DART
,
"dart_index"
);
if
(
!
m_attIndex
.
isValid
())
m_attIndex
=
map
.
template
addAttribute
<
unsigned
int
>(
DART
,
"dart_index"
);
}
for
(
Dart
d
=
map
.
begin
();
d
!=
map
.
end
();
map
.
next
(
d
))
{
...
...
@@ -213,10 +212,10 @@ void TopoRender::updateDataGMap(typename PFP::MAP& mapx, const typename PFP::TVE
std
::
vector
<
Dart
>
vecDarts
;
vecDarts
.
reserve
(
map
.
getNbDarts
());
// no problem dart is int: no problem of memory
if
(
m_attIndex
.
map
()
!=
&
map
)
{
m_attIndex
=
map
.
template
getAttribute
<
unsigned
int
>(
DART
,
"dart_index"
);
if
(
!
m_attIndex
.
isValid
())
m_attIndex
=
map
.
template
addAttribute
<
unsigned
int
>(
DART
,
"dart_index"
);
}
for
(
Dart
d
=
map
.
begin
();
d
!=
map
.
end
();
map
.
next
(
d
))
{
...
...
@@ -361,18 +360,6 @@ void TopoRender::updateDataGMap(typename PFP::MAP& mapx, const typename PFP::TVE
}
template
<
typename
PFP
>
void
TopoRender
::
dartToCol
(
typename
PFP
::
MAP
&
map
,
Dart
d
,
float
&
r
,
float
&
g
,
float
&
b
)
{
unsigned
int
lab
=
map
.
dartIndex
(
d
)
+
1
;
// add one to avoid picking the black of screen
r
=
float
(
lab
%
255
)
/
255.0
f
;
lab
=
lab
/
255
;
g
=
float
(
lab
%
255
)
/
255.0
f
;
lab
=
lab
/
255
;
b
=
float
(
lab
%
255
)
/
255.0
f
;
lab
=
lab
/
255
;
if
(
lab
!=
0
)
CGoGNerr
<<
"Error picking color, too many darts"
<<
CGoGNendl
;
}
template
<
typename
PFP
>
...
...
@@ -382,6 +369,13 @@ void TopoRender::setDartsIdColor(typename PFP::MAP& map, const FunctorSelect& go
float
*
colorBuffer
=
reinterpret_cast
<
float
*>
(
glMapBuffer
(
GL_ARRAY_BUFFER
,
GL_READ_WRITE
));
unsigned
int
nb
=
0
;
m_attIndex
=
map
.
template
getAttribute
<
unsigned
int
>(
DART
,
"dart_index"
);
if
(
!
m_attIndex
.
isValid
())
{
CGoGNerr
<<
"Error attribute_dartIndex does not exist during TopoRender::picking"
<<
CGoGNendl
;
return
;
}
for
(
Dart
d
=
map
.
begin
();
d
!=
map
.
end
();
map
.
next
(
d
))
{
if
(
good
(
d
))
...
...
@@ -389,7 +383,7 @@ void TopoRender::setDartsIdColor(typename PFP::MAP& map, const FunctorSelect& go
if
(
nb
<
m_nbDarts
)
{
float
r
,
g
,
b
;
dartToCol
<
PFP
>
(
map
,
d
,
r
,
g
,
b
);
dartToCol
(
d
,
r
,
g
,
b
);
float
*
local
=
colorBuffer
+
3
*
m_attIndex
[
d
];
// get the right position in VBO
*
local
++
=
r
;
*
local
++
=
g
;
...
...
include/Topology/generic/genericmap.h
View file @
6a6f5c35
...
...
@@ -26,6 +26,7 @@
#define __GENERIC_MAP__
#include
<iostream>
#include
<string>
#include
<sstream>
#include
<fstream>
#include
<iomanip>
...
...
include/Topology/map/map2MR/map2MR_Primal.h
View file @
6a6f5c35
...
...
@@ -42,6 +42,8 @@ protected:
public:
Map2MR_Primal
()
;
std
::
string
mapTypeName
()
{
return
"Map2MR_Primal"
;}
/***************************************************
* CELLS INFORMATION *
***************************************************/
...
...
src/Algo/Render/topo3Render.cpp
View file @
6a6f5c35
...
...
@@ -322,6 +322,21 @@ Dart Topo3Render::colToDart(float* color)
}
void
Topo3Render
::
dartToCol
(
Dart
d
,
float
&
r
,
float
&
g
,
float
&
b
)
{
// here use dart.index beacause it is what we want (and not map.dartIndex(d) !!)
unsigned
int
lab
=
d
.
index
+
1
;
// add one to avoid picking the black of screen
r
=
float
(
lab
%
255
)
/
255.0
f
;
lab
=
lab
/
255
;
g
=
float
(
lab
%
255
)
/
255.0
f
;
lab
=
lab
/
255
;
b
=
float
(
lab
%
255
)
/
255.0
f
;
lab
=
lab
/
255
;
if
(
lab
!=
0
)
CGoGNerr
<<
"Error picking color, too many darts"
<<
CGoGNendl
;
}
Dart
Topo3Render
::
pickColor
(
unsigned
int
x
,
unsigned
int
y
)
{
//more easy picking for
...
...
src/Algo/Render/topoRender.cpp
View file @
6a6f5c35
...
...
@@ -215,6 +215,19 @@ Dart TopoRender::colToDart(float* color)
}
void
TopoRender
::
dartToCol
(
Dart
d
,
float
&
r
,
float
&
g
,
float
&
b
)
{
// here use d.index beacause it is what we want (and not map.dartIndex(d) !!)
unsigned
int
lab
=
d
.
index
+
1
;
// add one to avoid picking the black of screen
r
=
float
(
lab
%
255
)
/
255.0
f
;
lab
=
lab
/
255
;
g
=
float
(
lab
%
255
)
/
255.0
f
;
lab
=
lab
/
255
;
b
=
float
(
lab
%
255
)
/
255.0
f
;
lab
=
lab
/
255
;
if
(
lab
!=
0
)
CGoGNerr
<<
"Error picking color, too many darts"
<<
CGoGNendl
;
}
Dart
TopoRender
::
pickColor
(
unsigned
int
x
,
unsigned
int
y
)
{
...
...
src/Topology/generic/genericmap.cpp
View file @
6a6f5c35
...
...
@@ -173,6 +173,8 @@ void GenericMap::initMR()
#endif
m_mrattribs
.
clear
(
true
)
;
m_mrattribs
.
setRegistry
(
m_attributes_registry_map
)
;
m_mrDarts
.
clear
()
;
m_mrDarts
.
reserve
(
16
)
;
m_mrNbDarts
.
clear
();
...
...
@@ -457,8 +459,16 @@ bool GenericMap::saveMapBin(const std::string& filename)
m_attribs
[
i
].
saveBin
(
fs
,
i
);
if
(
m_isMultiRes
)
{
m_mrattribs
.
saveBin
(
fs
,
00
);
fs
.
write
(
reinterpret_cast
<
const
char
*>
(
&
m_mrCurrentLevel
),
sizeof
(
unsigned
int
));
unsigned
int
nb
=
m_mrNbDarts
.
size
();
fs
.
write
(
reinterpret_cast
<
const
char
*>
(
&
nb
),
sizeof
(
unsigned
int
));
fs
.
write
(
reinterpret_cast
<
const
char
*>
(
&
(
m_mrNbDarts
[
0
])),
nb
*
sizeof
(
unsigned
int
));
}
return
true
;
}
...
...
@@ -538,16 +548,24 @@ bool GenericMap::loadMapBin(const std::string& filename)
}
if
(
m_isMultiRes
)
{
AttributeContainer
::
loadBinId
(
fs
);
// not used but need to read to skip
m_mrattribs
.
loadBin
(
fs
);
fs
.
read
(
reinterpret_cast
<
char
*>
(
&
m_mrCurrentLevel
),
sizeof
(
unsigned
int
));
unsigned
int
nb
;
fs
.
read
(
reinterpret_cast
<
char
*>
(
&
nb
),
sizeof
(
unsigned
int
));
m_mrNbDarts
.
resize
(
nb
);
fs
.
read
(
reinterpret_cast
<
char
*>
(
&
(
m_mrNbDarts
[
0
])),
nb
*
sizeof
(
unsigned
int
));
}
// retrieve m_embeddings (from m_attribs)
update_m_emb_afterLoad
();
// recursive call from real type of map (for topo relation attributes pointers) down to GenericMap (for Marker_cleaning & pointers)
update_topo_shortcuts
();
return
true
;
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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