Commit 4ab1c999 authored by Thomas Pitiot 's avatar Thomas Pitiot

jolies surfaces mais plus que la moitié du cube

parent e8e94ed9
......@@ -51,12 +51,12 @@ public:
REAL volumeMaxdistance(Vol volume);
VEC3 normaleFromVolume(Dart volume,Dart face);
void open_file(std::string filename);
VEC3 mapMinX;
VEC3 mapMaxX;
VEC3 mapMinY;
VEC3 mapMaxY;
VEC3 mapMinZ;
VEC3 mapMaxZ;
float mapMinX;
float mapMaxX;
float mapMinY;
float mapMaxY;
float mapMinZ;
float mapMaxZ;
float maxCellRay;
bool subdivideVolume(Dart d );
Dart getBelongingCell(const PFP::VEC3& pos);
......
......@@ -97,8 +97,8 @@ class Volusion: public Utils::QT::SimpleQGLV
unsigned int dartSlider;
//MovingObject
Utils::VBO* m_closestVBO;
Utils::PointSprite* m_spriteClosest;
// Utils::VBO* m_closestVBO; // afichages des points proches dans les sufaces
// Utils::PointSprite* m_spriteClosest;
Utils::VBO* m_MovingObjectVBO;
Utils::PointSprite* m_sprite;
Utils::Drawer* m_ds;
......
......@@ -24,6 +24,13 @@ EnvMap::EnvMap()
void EnvMap::init(int argc, char **argv)
{
maxCellRay = 1.0f;
mapMinX=0;
mapMaxX=0;
mapMinY=0;
mapMaxY=0;
mapMinZ=0;
mapMaxZ=0;
std::cout << "Init EnvMap" << std::endl ;
if (argc>2)
{
......@@ -59,6 +66,12 @@ void EnvMap::init(int argc, char **argv)
for(Dart d = tv.begin() ; d != tv.end() ; d = tv.next())
{
position[d] *= 10;
if(position[d][0]<mapMinX) mapMinX=position[d][0];
if(position[d][0]>mapMaxX) mapMaxX=position[d][0];
if(position[d][1]<mapMinY) mapMinY=position[d][1];
if(position[d][1]>mapMaxY) mapMaxY=position[d][1];
if(position[d][2]<mapMinZ) mapMinZ=position[d][2];
if(position[d][2]>mapMaxZ) mapMaxZ=position[d][2];
}
TraversorF<MAP> tf(map);
for(Dart d = tf.begin() ; d != tf.end() ; d = tf.next())
......@@ -632,13 +645,15 @@ bool EnvMap::subdivideVolume(Dart dglobal)
map.setCurrentLevel(map.getMaxLevel()) ;
// map.check();
for (Vol d : volumesAdjacentByVertex3(map,(dglobal))) // parcours des sous cellules crées par la subdivision pour mettr a jour l'attribut facecenter a remplacer par un traverseur de sous cellules IHM
for (Dart d : volumesAdjacentByVertex3(map,(dglobal))) // parcours des sous cellules créees par la subdivision pour mettre a jour l'attribut facecenter a remplacer par un traverseur de sous cellules IHM
{
for ( Face f : facesIncidentToVolume3(map,d))
{
facecenter[f]=Algo::Surface::Geometry::faceCentroid<PFP, VertexAttribute<VEC3, MAP>>(map,f,position);
}
VEC3 center=Algo::Surface::Geometry::volumeCentroid<PFP,VertexAttribute<VEC3,MAP>>(map,d,position);
color[d] = VEC3((center[0]-mapMinX)/(mapMaxX-mapMinX),(center[1]-mapMinY)/(mapMaxY-mapMinY),(center[2]-mapMinZ)/(mapMaxZ-mapMinZ));
}
......
......@@ -29,7 +29,7 @@ Needle::Needle(Simulator* sim,std::pair<VEC3, Dart> startingPoint)
createEdge(0);
#ifdef IHMap
// refine();
refine();
#endif
}
......
......@@ -109,10 +109,11 @@ void Surface::draw()
{
m_positionVBO->updateData(positionSurface) ;
glLineWidth(1.0f);
m_render_map->draw(m_simpleColorShader,Algo::Render::GL2::LINES);
// m_colorVBO->updateData(faceColor);
// colorRender->updateVBO<PFPSurface,FACE>(m_positionVBO,m_colorVBO,surfaceMap,positionSurface,colorRender);
glLineWidth(1.0f);
m_render->updateVBO<PFPSurface,FACE>(*m_positionVBO,*m_colorVBO,surfaceMap,positionSurface,faceColor);
......@@ -159,7 +160,7 @@ void Surface::initPlane()
while (!test)
{
test = subdiveMap();
CGoGNout<<"subdiv effectuée ? " <<!test<<CGoGNendl;
// CGoGNout<<"subdiv effectuée ? " <<!test<<CGoGNendl;
}
}
......@@ -181,7 +182,7 @@ bool Surface::subdiveMap()
REAL dist = faceMaxdistance(d);
if(dist > sim_->envMap_.maxCellRay)
{
CGoGNout<<"ok pour subdiv face :"<<d<<CGoGNendl;
// CGoGNout<<"ok pour subdiv face :"<<d<<CGoGNendl;
mapOperator.subdivideFace(d,true,true) ;
res=false;
......
......@@ -236,33 +236,33 @@ void Volusion::cb_initGL()
// m_sh2->setClipPlaneParamsAll(clip_id2, Geom::Vec3f(0,0,1), m_PosObj);
m_explode_render->setClippingPlane(Geom::Vec4f(0,0,1,m_PosObj*Geom::Vec3f(0,0,-1)));
m_closestVBO = new Utils::VBO();
m_closestVBO->setDataSize(3);
m_closestVBO->allocate(10000);
PFP::VEC3* data = static_cast<PFP::VEC3*>(m_closestVBO->lockPtr());
// m_closestVBO = new Utils::VBO();
// m_closestVBO->setDataSize(3);
// m_closestVBO->allocate(10000);
// PFP::VEC3* data = static_cast<PFP::VEC3*>(m_closestVBO->lockPtr());
int j =0;
// int j =0;
for(Surface * surf : simul.surfaces)
{
surf->initGL();
registerShader(surf->m_shader);
registerShader(surf->m_simpleColorShader);
for(Triangle * t : surf->triangles_)
{
data[j]=t->closest_point;
data[j+1]=t->p1;
j=j+2;
}
// for(Triangle * t : surf->triangles_)
// {
// data[j]=t->closest_point;
// data[j+1]=t->p1;
// j=j+2;
// }
}
m_closestVBO->releasePtr();
// m_closestVBO->releasePtr();
m_spriteClosest = new Utils::PointSprite();
m_spriteClosest->setAttributePosition(m_closestVBO);
m_spriteClosest->setSize(simul.aiguille->width);
m_spriteClosest->setColor(Geom::Vec4f(0.0f,1.0f,0.5f,1.0f));
registerShader(m_spriteClosest);
// m_spriteClosest = new Utils::PointSprite();
// m_spriteClosest->setAttributePosition(m_closestVBO);
// m_spriteClosest->setSize(simul.aiguille->width);
// m_spriteClosest->setColor(Geom::Vec4f(0.0f,1.0f,0.5f,1.0f));
// registerShader(m_spriteClosest);
m_MovingObjectVBO = new Utils::VBO();
......@@ -271,7 +271,7 @@ void Volusion::cb_initGL()
//initialisation aiguille
data = static_cast<PFP::VEC3*>(m_MovingObjectVBO->lockPtr());
PFP::VEC3* data = static_cast<PFP::VEC3*>(m_MovingObjectVBO->lockPtr());
for (unsigned int i=0; i< simul.aiguille->nbVertices; ++i)
{
......@@ -366,26 +366,26 @@ void Volusion::cb_redraw()
if(true) // affichage objets fixes
{
PFP::VEC3* data2 = static_cast<PFP::VEC3*>(m_closestVBO->lockPtr());
// PFP::VEC3* data2 = static_cast<PFP::VEC3*>(m_closestVBO->lockPtr());
int j =0;
// int j =0;
for(Surface * surf : simul.surfaces)
{
surf->draw();
for(Triangle * t : surf->triangles_)
{
data2[j]=t->closest_point;
// data2[j+1]=t->p1;
j++;
// for(Triangle * t : surf->triangles_)
// {
// data2[j]=t->closest_point;
//// data2[j+1]=t->p1;
// j++;
}
// }
}
m_closestVBO->releasePtr();
m_spriteClosest->enableVertexAttribs();
glDrawArrays(GL_POINTS, 0, j+1);
m_spriteClosest->disableVertexAttribs();
// m_closestVBO->releasePtr();
// m_spriteClosest->enableVertexAttribs();
// glDrawArrays(GL_POINTS, 0, j+1);
// m_spriteClosest->disableVertexAttribs();
for (ArticulatedObject * art : simul.objects)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment