mirror of https://github.com/CGAL/cgal
Merge pull request #3358 from maxGimeno/Demo-Several_fixes-GF
Polyhedron demo: Several fixes
This commit is contained in:
commit
1a0ee8614a
|
|
@ -275,8 +275,8 @@ void Polyhedron_demo_point_set_normal_estimation_plugin::on_actionNormalEstimati
|
||||||
<< (memory>>20) << " Mb allocated"
|
<< (memory>>20) << " Mb allocated"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
}
|
}
|
||||||
|
item->resetMenu();
|
||||||
item->setRenderingMode(PointsPlusNormals);
|
item->setRenderingMode(ShadedPoints);
|
||||||
|
|
||||||
//***************************************
|
//***************************************
|
||||||
// normal orientation
|
// normal orientation
|
||||||
|
|
|
||||||
|
|
@ -652,12 +652,12 @@ protected:
|
||||||
|
|
||||||
shift_pressing = modifiers.testFlag(Qt::ShiftModifier);
|
shift_pressing = modifiers.testFlag(Qt::ShiftModifier);
|
||||||
ctrl_pressing = modifiers.testFlag(Qt::ControlModifier);
|
ctrl_pressing = modifiers.testFlag(Qt::ControlModifier);
|
||||||
background = static_cast<CGAL::Three::Viewer_interface*>(*CGAL::QGLViewer::QGLViewerPool().begin())->grabFramebuffer();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// mouse events
|
// mouse events
|
||||||
if(shift_pressing && event->type() == QEvent::MouseButtonPress)
|
if(shift_pressing && event->type() == QEvent::MouseButtonPress)
|
||||||
{
|
{
|
||||||
|
background = static_cast<CGAL::Three::Viewer_interface*>(*CGAL::QGLViewer::QGLViewerPool().begin())->grabFramebuffer();
|
||||||
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
|
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
|
||||||
// Start selection
|
// Start selection
|
||||||
if (mouseEvent->button() == Qt::LeftButton)
|
if (mouseEvent->button() == Qt::LeftButton)
|
||||||
|
|
|
||||||
|
|
@ -358,6 +358,7 @@ private:
|
||||||
++ nb_colored_pts;
|
++ nb_colored_pts;
|
||||||
colored_item->point_set()->set_color(*it, r, g, b);
|
colored_item->point_set()->set_color(*it, r, g, b);
|
||||||
}
|
}
|
||||||
|
colored_item->invalidateOpenGLBuffers();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Providing a useful name consisting of the order of detection, name of type and number of inliers
|
// Providing a useful name consisting of the order of detection, name of type and number of inliers
|
||||||
|
|
@ -418,7 +419,7 @@ private:
|
||||||
poly_item->setName(QString("%1%2_alpha_shape").arg(QString::fromStdString(ss.str()))
|
poly_item->setName(QString("%1%2_alpha_shape").arg(QString::fromStdString(ss.str()))
|
||||||
.arg (QString::number (shape->indices_of_assigned_points().size())));
|
.arg (QString::number (shape->indices_of_assigned_points().size())));
|
||||||
poly_item->setRenderingMode (Flat);
|
poly_item->setRenderingMode (Flat);
|
||||||
|
poly_item->invalidateOpenGLBuffers();
|
||||||
scene->addItem(poly_item);
|
scene->addItem(poly_item);
|
||||||
if(scene->item_id(groups[0]) == -1)
|
if(scene->item_id(groups[0]) == -1)
|
||||||
scene->addItem(groups[0]);
|
scene->addItem(groups[0]);
|
||||||
|
|
@ -452,6 +453,7 @@ private:
|
||||||
point_item->setRenderingMode(item->renderingMode());
|
point_item->setRenderingMode(item->renderingMode());
|
||||||
|
|
||||||
if (dialog.generate_subset()){
|
if (dialog.generate_subset()){
|
||||||
|
point_item->invalidateOpenGLBuffers();
|
||||||
scene->addItem(point_item);
|
scene->addItem(point_item);
|
||||||
if (dynamic_cast<CGAL::Shape_detection_3::Cylinder<Traits> *>(shape.get()))
|
if (dynamic_cast<CGAL::Shape_detection_3::Cylinder<Traits> *>(shape.get()))
|
||||||
{
|
{
|
||||||
|
|
@ -469,6 +471,7 @@ private:
|
||||||
|
|
||||||
if(scene->item_id(groups[0]) == -1)
|
if(scene->item_id(groups[0]) == -1)
|
||||||
scene->addItem(groups[0]);
|
scene->addItem(groups[0]);
|
||||||
|
point_item->invalidateOpenGLBuffers();
|
||||||
scene->changeGroup(point_item, groups[0]);
|
scene->changeGroup(point_item, groups[0]);
|
||||||
}
|
}
|
||||||
else if (dynamic_cast<CGAL::Shape_detection_3::Cone<Traits> *>(shape.get()))
|
else if (dynamic_cast<CGAL::Shape_detection_3::Cone<Traits> *>(shape.get()))
|
||||||
|
|
@ -523,6 +526,7 @@ private:
|
||||||
pts_full->setName(tr("%1 (structured)").arg(item->name()));
|
pts_full->setName(tr("%1 (structured)").arg(item->name()));
|
||||||
pts_full->setRenderingMode(PointsPlusNormals);
|
pts_full->setRenderingMode(PointsPlusNormals);
|
||||||
pts_full->setColor(Qt::blue);
|
pts_full->setColor(Qt::blue);
|
||||||
|
pts_full->invalidateOpenGLBuffers();
|
||||||
scene->addItem (pts_full);
|
scene->addItem (pts_full);
|
||||||
}
|
}
|
||||||
std::cerr << "done" << std::endl;
|
std::cerr << "done" << std::endl;
|
||||||
|
|
|
||||||
|
|
@ -893,6 +893,7 @@ private:
|
||||||
reco_item->setName(tr("%1 (RANSAC-based reconstruction)").arg(scene->item(index)->name()));
|
reco_item->setName(tr("%1 (RANSAC-based reconstruction)").arg(scene->item(index)->name()));
|
||||||
reco_item->setColor(Qt::magenta);
|
reco_item->setColor(Qt::magenta);
|
||||||
reco_item->setRenderingMode(FlatPlusEdges);
|
reco_item->setRenderingMode(FlatPlusEdges);
|
||||||
|
reco_item->invalidateOpenGLBuffers();
|
||||||
scene->addItem(reco_item);
|
scene->addItem(reco_item);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -1090,6 +1091,7 @@ void Polyhedron_demo_surface_reconstruction_plugin::automatic_reconstruction
|
||||||
reco_item->setName(tr("%1 (advancing front)").arg(scene->item(index)->name()));
|
reco_item->setName(tr("%1 (advancing front)").arg(scene->item(index)->name()));
|
||||||
reco_item->setColor(Qt::lightGray);
|
reco_item->setColor(Qt::lightGray);
|
||||||
reco_item->setRenderingMode(FlatPlusEdges);
|
reco_item->setRenderingMode(FlatPlusEdges);
|
||||||
|
reco_item->invalidateOpenGLBuffers();
|
||||||
scene->addItem(reco_item);
|
scene->addItem(reco_item);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -1122,6 +1124,7 @@ void Polyhedron_demo_surface_reconstruction_plugin::automatic_reconstruction
|
||||||
reco_item->setColor(Qt::lightGray);
|
reco_item->setColor(Qt::lightGray);
|
||||||
reco_item->setRenderingMode(FlatPlusEdges);
|
reco_item->setRenderingMode(FlatPlusEdges);
|
||||||
scene->addItem(reco_item);
|
scene->addItem(reco_item);
|
||||||
|
reco_item->invalidateOpenGLBuffers();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -1173,6 +1176,7 @@ void Polyhedron_demo_surface_reconstruction_plugin::automatic_reconstruction
|
||||||
Scene_polyhedron_item* reco_item = new Scene_polyhedron_item(pRemesh);
|
Scene_polyhedron_item* reco_item = new Scene_polyhedron_item(pRemesh);
|
||||||
reco_item->setName(tr("%1 (poisson)").arg(pts_item->name()));
|
reco_item->setName(tr("%1 (poisson)").arg(pts_item->name()));
|
||||||
reco_item->setColor(Qt::lightGray);
|
reco_item->setColor(Qt::lightGray);
|
||||||
|
reco_item->invalidateOpenGLBuffers();
|
||||||
scene->addItem(reco_item);
|
scene->addItem(reco_item);
|
||||||
}
|
}
|
||||||
else if(smRemesh)
|
else if(smRemesh)
|
||||||
|
|
@ -1232,6 +1236,7 @@ void Polyhedron_demo_surface_reconstruction_plugin::advancing_front_reconstructi
|
||||||
reco_item->setName(tr("%1 (advancing front)").arg(scene->item(index)->name()));
|
reco_item->setName(tr("%1 (advancing front)").arg(scene->item(index)->name()));
|
||||||
reco_item->setColor(Qt::lightGray);
|
reco_item->setColor(Qt::lightGray);
|
||||||
reco_item->setRenderingMode(FlatPlusEdges);
|
reco_item->setRenderingMode(FlatPlusEdges);
|
||||||
|
reco_item->invalidateOpenGLBuffers();
|
||||||
scene->addItem(reco_item);
|
scene->addItem(reco_item);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,21 @@ bool Scene_group_item::isEmpty() const {
|
||||||
|
|
||||||
Scene_group_item::Bbox Scene_group_item::bbox() const
|
Scene_group_item::Bbox Scene_group_item::bbox() const
|
||||||
{
|
{
|
||||||
return Bbox(0, 0, 0, 0, 0,0);
|
Scene_item* first_non_empty = nullptr;
|
||||||
|
Q_FOREACH(Scene_interface::Item_id id, children)
|
||||||
|
if(!getChild(id)->isEmpty())
|
||||||
|
{
|
||||||
|
first_non_empty = getChild(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(first_non_empty)
|
||||||
|
{
|
||||||
|
Bbox b =first_non_empty->bbox();
|
||||||
|
Q_FOREACH(Scene_interface::Item_id id, children)
|
||||||
|
b+=getChild(id)->bbox();
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
return Bbox(0,0,0,0,0,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -135,6 +135,11 @@ QMenu* CGAL::Three::Scene_item::contextMenu()
|
||||||
return defaultContextMenu;
|
return defaultContextMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CGAL::Three::Scene_item::resetMenu()
|
||||||
|
{
|
||||||
|
delete defaultContextMenu;
|
||||||
|
defaultContextMenu = nullptr;
|
||||||
|
}
|
||||||
CGAL::Three::Scene_group_item* CGAL::Three::Scene_item::parentGroup() const {
|
CGAL::Three::Scene_group_item* CGAL::Three::Scene_item::parentGroup() const {
|
||||||
return parent_group;
|
return parent_group;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -231,7 +231,7 @@ Scene_points_with_normal_item::Scene_points_with_normal_item(const Scene_points_
|
||||||
d = new Scene_points_with_normal_item_priv(toCopy, this);
|
d = new Scene_points_with_normal_item_priv(toCopy, this);
|
||||||
if (has_normals())
|
if (has_normals())
|
||||||
{
|
{
|
||||||
setRenderingMode(PointsPlusNormals);
|
setRenderingMode(ShadedPoints);
|
||||||
is_selected = true;
|
is_selected = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -254,7 +254,7 @@ Scene_points_with_normal_item::Scene_points_with_normal_item(const SMesh& input_
|
||||||
// Converts Polyhedron vertices to point set.
|
// Converts Polyhedron vertices to point set.
|
||||||
// Computes vertices normal from connectivity.
|
// Computes vertices normal from connectivity.
|
||||||
d = new Scene_points_with_normal_item_priv(input_mesh, this);
|
d = new Scene_points_with_normal_item_priv(input_mesh, this);
|
||||||
setRenderingMode(PointsPlusNormals);
|
setRenderingMode(ShadedPoints);
|
||||||
is_selected = true;
|
is_selected = true;
|
||||||
if(d->m_points->number_of_points() < 30 )
|
if(d->m_points->number_of_points() < 30 )
|
||||||
d->point_Slider->setValue(5);
|
d->point_Slider->setValue(5);
|
||||||
|
|
@ -269,7 +269,7 @@ Scene_points_with_normal_item::Scene_points_with_normal_item(const Polyhedron& i
|
||||||
// Converts Polyhedron vertices to point set.
|
// Converts Polyhedron vertices to point set.
|
||||||
// Computes vertices normal from connectivity.
|
// Computes vertices normal from connectivity.
|
||||||
d = new Scene_points_with_normal_item_priv(input_mesh, this);
|
d = new Scene_points_with_normal_item_priv(input_mesh, this);
|
||||||
setRenderingMode(PointsPlusNormals);
|
setRenderingMode(ShadedPoints);
|
||||||
is_selected = true;
|
is_selected = true;
|
||||||
if(d->m_points->number_of_points() < 30 )
|
if(d->m_points->number_of_points() < 30 )
|
||||||
d->point_Slider->setValue(5);
|
d->point_Slider->setValue(5);
|
||||||
|
|
@ -616,7 +616,7 @@ bool Scene_points_with_normal_item::read_las_point_set(std::istream& stream)
|
||||||
std::cerr << d->m_points->info();
|
std::cerr << d->m_points->info();
|
||||||
|
|
||||||
if (d->m_points->has_normal_map())
|
if (d->m_points->has_normal_map())
|
||||||
setRenderingMode(PointsPlusNormals);
|
setRenderingMode(ShadedPoints);
|
||||||
if (d->m_points->check_colors())
|
if (d->m_points->check_colors())
|
||||||
std::cerr << "-> Point set has colors" << std::endl;
|
std::cerr << "-> Point set has colors" << std::endl;
|
||||||
|
|
||||||
|
|
@ -654,7 +654,7 @@ bool Scene_points_with_normal_item::read_ply_point_set(std::istream& stream)
|
||||||
std::cerr << d->m_points->info();
|
std::cerr << d->m_points->info();
|
||||||
|
|
||||||
if (d->m_points->has_normal_map())
|
if (d->m_points->has_normal_map())
|
||||||
setRenderingMode(PointsPlusNormals);
|
setRenderingMode(ShadedPoints);
|
||||||
if (d->m_points->check_colors())
|
if (d->m_points->check_colors())
|
||||||
std::cerr << "-> Point set has colors" << std::endl;
|
std::cerr << "-> Point set has colors" << std::endl;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -831,9 +831,6 @@ void Scene_surface_mesh_item_priv::triangulate_convex_facet(face_descriptor fd,
|
||||||
Scene_item_rendering_helper::Gl_data_names name,
|
Scene_item_rendering_helper::Gl_data_names name,
|
||||||
bool index) const
|
bool index) const
|
||||||
{
|
{
|
||||||
const CGAL::qglviewer::Vec v_offset = static_cast<CGAL::Three::Viewer_interface*>(CGAL::QGLViewer::QGLViewerPool().first())->offset();
|
|
||||||
EPICK::Vector_3 offset = EPICK::Vector_3(v_offset.x, v_offset.y, v_offset.z);
|
|
||||||
|
|
||||||
Point p0,p1,p2;
|
Point p0,p1,p2;
|
||||||
SMesh::Halfedge_around_face_circulator he(halfedge(fd, *smesh_), *smesh_);
|
SMesh::Halfedge_around_face_circulator he(halfedge(fd, *smesh_), *smesh_);
|
||||||
SMesh::Halfedge_around_face_circulator he_end = he;
|
SMesh::Halfedge_around_face_circulator he_end = he;
|
||||||
|
|
@ -844,9 +841,9 @@ void Scene_surface_mesh_item_priv::triangulate_convex_facet(face_descriptor fd,
|
||||||
vertex_descriptor v0(target(*he_end, *smesh_)),
|
vertex_descriptor v0(target(*he_end, *smesh_)),
|
||||||
v1(target(*he, *smesh_)),
|
v1(target(*he, *smesh_)),
|
||||||
v2(target(next(*he, *smesh_), *smesh_));
|
v2(target(next(*he, *smesh_), *smesh_));
|
||||||
p0 = smesh_->point(v0) + offset;
|
p0 = smesh_->point(v0);
|
||||||
p1 = smesh_->point(v1) + offset;
|
p1 = smesh_->point(v1);
|
||||||
p2 = smesh_->point(v2) + offset;
|
p2 = smesh_->point(v2);
|
||||||
if(!index)
|
if(!index)
|
||||||
{
|
{
|
||||||
CGAL::Color* color;
|
CGAL::Color* color;
|
||||||
|
|
|
||||||
|
|
@ -246,6 +246,9 @@ public:
|
||||||
//!
|
//!
|
||||||
int getId()const;
|
int getId()const;
|
||||||
|
|
||||||
|
//! invalidates the context menu. Call it when supportsRenderingMode() changes,
|
||||||
|
//! for example.
|
||||||
|
void resetMenu();
|
||||||
//!Handles key press events.
|
//!Handles key press events.
|
||||||
virtual bool keyPressEvent(QKeyEvent*){return false;}
|
virtual bool keyPressEvent(QKeyEvent*){return false;}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue