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"
|
||||
<< std::endl;
|
||||
}
|
||||
|
||||
item->setRenderingMode(PointsPlusNormals);
|
||||
item->resetMenu();
|
||||
item->setRenderingMode(ShadedPoints);
|
||||
|
||||
//***************************************
|
||||
// normal orientation
|
||||
|
|
|
|||
|
|
@ -652,12 +652,12 @@ protected:
|
|||
|
||||
shift_pressing = modifiers.testFlag(Qt::ShiftModifier);
|
||||
ctrl_pressing = modifiers.testFlag(Qt::ControlModifier);
|
||||
background = static_cast<CGAL::Three::Viewer_interface*>(*CGAL::QGLViewer::QGLViewerPool().begin())->grabFramebuffer();
|
||||
}
|
||||
|
||||
// mouse events
|
||||
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);
|
||||
// Start selection
|
||||
if (mouseEvent->button() == Qt::LeftButton)
|
||||
|
|
|
|||
|
|
@ -358,6 +358,7 @@ private:
|
|||
++ nb_colored_pts;
|
||||
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
|
||||
|
|
@ -418,7 +419,7 @@ private:
|
|||
poly_item->setName(QString("%1%2_alpha_shape").arg(QString::fromStdString(ss.str()))
|
||||
.arg (QString::number (shape->indices_of_assigned_points().size())));
|
||||
poly_item->setRenderingMode (Flat);
|
||||
|
||||
poly_item->invalidateOpenGLBuffers();
|
||||
scene->addItem(poly_item);
|
||||
if(scene->item_id(groups[0]) == -1)
|
||||
scene->addItem(groups[0]);
|
||||
|
|
@ -452,6 +453,7 @@ private:
|
|||
point_item->setRenderingMode(item->renderingMode());
|
||||
|
||||
if (dialog.generate_subset()){
|
||||
point_item->invalidateOpenGLBuffers();
|
||||
scene->addItem(point_item);
|
||||
if (dynamic_cast<CGAL::Shape_detection_3::Cylinder<Traits> *>(shape.get()))
|
||||
{
|
||||
|
|
@ -469,6 +471,7 @@ private:
|
|||
|
||||
if(scene->item_id(groups[0]) == -1)
|
||||
scene->addItem(groups[0]);
|
||||
point_item->invalidateOpenGLBuffers();
|
||||
scene->changeGroup(point_item, groups[0]);
|
||||
}
|
||||
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->setRenderingMode(PointsPlusNormals);
|
||||
pts_full->setColor(Qt::blue);
|
||||
pts_full->invalidateOpenGLBuffers();
|
||||
scene->addItem (pts_full);
|
||||
}
|
||||
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->setColor(Qt::magenta);
|
||||
reco_item->setRenderingMode(FlatPlusEdges);
|
||||
reco_item->invalidateOpenGLBuffers();
|
||||
scene->addItem(reco_item);
|
||||
}
|
||||
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->setColor(Qt::lightGray);
|
||||
reco_item->setRenderingMode(FlatPlusEdges);
|
||||
reco_item->invalidateOpenGLBuffers();
|
||||
scene->addItem(reco_item);
|
||||
}
|
||||
else
|
||||
|
|
@ -1122,6 +1124,7 @@ void Polyhedron_demo_surface_reconstruction_plugin::automatic_reconstruction
|
|||
reco_item->setColor(Qt::lightGray);
|
||||
reco_item->setRenderingMode(FlatPlusEdges);
|
||||
scene->addItem(reco_item);
|
||||
reco_item->invalidateOpenGLBuffers();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1173,6 +1176,7 @@ void Polyhedron_demo_surface_reconstruction_plugin::automatic_reconstruction
|
|||
Scene_polyhedron_item* reco_item = new Scene_polyhedron_item(pRemesh);
|
||||
reco_item->setName(tr("%1 (poisson)").arg(pts_item->name()));
|
||||
reco_item->setColor(Qt::lightGray);
|
||||
reco_item->invalidateOpenGLBuffers();
|
||||
scene->addItem(reco_item);
|
||||
}
|
||||
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->setColor(Qt::lightGray);
|
||||
reco_item->setRenderingMode(FlatPlusEdges);
|
||||
reco_item->invalidateOpenGLBuffers();
|
||||
scene->addItem(reco_item);
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -31,7 +31,21 @@ bool Scene_group_item::isEmpty() 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;
|
||||
}
|
||||
|
||||
void CGAL::Three::Scene_item::resetMenu()
|
||||
{
|
||||
delete defaultContextMenu;
|
||||
defaultContextMenu = nullptr;
|
||||
}
|
||||
CGAL::Three::Scene_group_item* CGAL::Three::Scene_item::parentGroup() const {
|
||||
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);
|
||||
if (has_normals())
|
||||
{
|
||||
setRenderingMode(PointsPlusNormals);
|
||||
setRenderingMode(ShadedPoints);
|
||||
is_selected = true;
|
||||
}
|
||||
else
|
||||
|
|
@ -254,7 +254,7 @@ Scene_points_with_normal_item::Scene_points_with_normal_item(const SMesh& input_
|
|||
// Converts Polyhedron vertices to point set.
|
||||
// Computes vertices normal from connectivity.
|
||||
d = new Scene_points_with_normal_item_priv(input_mesh, this);
|
||||
setRenderingMode(PointsPlusNormals);
|
||||
setRenderingMode(ShadedPoints);
|
||||
is_selected = true;
|
||||
if(d->m_points->number_of_points() < 30 )
|
||||
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.
|
||||
// Computes vertices normal from connectivity.
|
||||
d = new Scene_points_with_normal_item_priv(input_mesh, this);
|
||||
setRenderingMode(PointsPlusNormals);
|
||||
setRenderingMode(ShadedPoints);
|
||||
is_selected = true;
|
||||
if(d->m_points->number_of_points() < 30 )
|
||||
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();
|
||||
|
||||
if (d->m_points->has_normal_map())
|
||||
setRenderingMode(PointsPlusNormals);
|
||||
setRenderingMode(ShadedPoints);
|
||||
if (d->m_points->check_colors())
|
||||
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();
|
||||
|
||||
if (d->m_points->has_normal_map())
|
||||
setRenderingMode(PointsPlusNormals);
|
||||
setRenderingMode(ShadedPoints);
|
||||
if (d->m_points->check_colors())
|
||||
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,
|
||||
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;
|
||||
SMesh::Halfedge_around_face_circulator he(halfedge(fd, *smesh_), *smesh_);
|
||||
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_)),
|
||||
v1(target(*he, *smesh_)),
|
||||
v2(target(next(*he, *smesh_), *smesh_));
|
||||
p0 = smesh_->point(v0) + offset;
|
||||
p1 = smesh_->point(v1) + offset;
|
||||
p2 = smesh_->point(v2) + offset;
|
||||
p0 = smesh_->point(v0);
|
||||
p1 = smesh_->point(v1);
|
||||
p2 = smesh_->point(v2);
|
||||
if(!index)
|
||||
{
|
||||
CGAL::Color* color;
|
||||
|
|
|
|||
|
|
@ -246,6 +246,9 @@ public:
|
|||
//!
|
||||
int getId()const;
|
||||
|
||||
//! invalidates the context menu. Call it when supportsRenderingMode() changes,
|
||||
//! for example.
|
||||
void resetMenu();
|
||||
//!Handles key press events.
|
||||
virtual bool keyPressEvent(QKeyEvent*){return false;}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue