Scene_polylines_item::Scene_polylines_item() :CGAL::Three::Scene_group_item("unnamed",NbOfVbos,NbOfVaos) ,d(new Scene_polylines_item_private()) { setRenderingMode(FlatPlusEdges); nb_lines = 0; spheres = NULL; invalidateOpenGLBuffers(); }
Scene_polyhedron_transform_item::Scene_polyhedron_transform_item(const qglviewer::Vec& pos,const Scene_polyhedron_item* poly_item_,const CGAL::Three::Scene_interface*): Scene_item(NbOfVbos,NbOfVaos), poly_item(poly_item_), manipulable(false), frame(new ManipulatedFrame()), poly(poly_item->polyhedron()), center_(pos) { frame->setPosition(pos); nb_lines = 0; invalidateOpenGLBuffers(); }
void Scene_polylines_item::merge(Scene_polylines_item* other_item) { if(other_item == 0) return; std::copy(other_item->polylines.begin(), other_item->polylines.end(), std::back_inserter(polylines)); QVariant other_metadata_variant = other_item->property("polylines metadata"); if(other_metadata_variant.type() == QVariant::StringList) { QStringList metadata = property("polylines metadata").toStringList(); metadata.append(other_metadata_variant.toStringList()); setProperty("polylines metadata", metadata); } invalidateOpenGLBuffers(); }
bool Scene_nef_polyhedron_item::load_from_off(std::istream& in) { // const std::size_t discarded = CGAL::OFF_to_nef_3(in, *nef_poly); // return discarded != 0; Exact_polyhedron exact_poly; in >> exact_poly; *nef_poly = Nef_polyhedron(exact_poly); // Polyhedron poly; // in >> poly; // *nef_poly = Nef_polyhedron(poly); invalidateOpenGLBuffers(); return (bool) in; }
Scene_edit_polyhedron_item::Scene_edit_polyhedron_item (Scene_polyhedron_item* poly_item, Ui::DeformMesh* ui_widget, QMainWindow* mw) : Scene_item(NumberOfBuffers,NumberOfVaos), ui_widget(ui_widget), poly_item(poly_item), is_rot_free(true), own_poly_item(true), k_ring_selector(poly_item, mw, Scene_polyhedron_item_k_ring_selection::Active_handle::VERTEX, true) { nb_ROI = 0; nb_sphere = 0; nb_control = 0; nb_axis = 0; nb_bbox = 0; mw->installEventFilter(this); // bind vertex picking connect(&k_ring_selector, SIGNAL(selected(const std::set<Polyhedron::Vertex_handle>&)), this, SLOT(selected(const std::set<Polyhedron::Vertex_handle>&))); poly_item->set_color_vector_read_only(true); // to prevent recomputation of color vector in invalidateOpenGLBuffers() poly_item->update_vertex_indices(); deform_mesh = new Deform_mesh(*(poly_item->polyhedron()), Deform_mesh::Vertex_index_map(), Deform_mesh::Hedge_index_map(), Array_based_vertex_point_map(&positions)); length_of_axis = bbox().diagonal_length() / 15.0; // interleave events of viewer (there is only one viewer) QGLViewer* viewer = *QGLViewer::QGLViewerPool().begin(); viewer->installEventFilter(this); // create an empty group of control vertices for starting create_ctrl_vertices_group(); // start QObject's timer for continuous effects // (deforming mesh while mouse not moving) startTimer(0); // Required for drawing functionality reset_drawing_data(); //Generates an integer which will be used as ID for each buffer const char vertex_shader_source_bbox[] = { "#version 120 \n" "attribute highp vec3 vertex; \n" "attribute highp vec3 colors; \n" "uniform highp mat4 mvp_matrix; \n" "uniform highp mat4 rotations; \n" "uniform highp vec3 translation; \n" "uniform highp vec3 translation_2; \n" "varying highp vec3 fColors; \n" " \n" "void main(void) \n" "{ \n" " fColors = colors; \n" " gl_Position = mvp_matrix * (rotations *(vec4(translation_2,0.0)+vec4(vertex,1.0) )+ vec4(translation,0.0)) ; \n" "} \n" }; const char fragment_shader_source[]= { "#version 120 \n" "varying vec3 fColors; \n" " \n" "void main(void) \n" "{ \n" " gl_FragColor = vec4(fColors, 1.0); \n" "} \n" }; bbox_program.addShaderFromSourceCode(QOpenGLShader::Vertex,vertex_shader_source_bbox); bbox_program.addShaderFromSourceCode(QOpenGLShader::Fragment,fragment_shader_source); bbox_program.link(); ui_widget->remeshing_iterations_spinbox->setValue(1); ui_widget->remeshing_edge_length_spinbox->setValue(length_of_axis); ui_widget->remeshing_edge_length_spinbox->setDisabled(true); ui_widget->remeshingEdgeLengthInput_checkBox->setChecked(false); connect(ui_widget->remeshingEdgeLengthInput_checkBox, SIGNAL(toggled(bool)), ui_widget->remeshing_edge_length_spinbox, SLOT(setEnabled(bool))); //the spheres : create_Sphere(length_of_axis/15.0); invalidateOpenGLBuffers(); }
void Scene_polylines_item::smooth(){ for (Polylines_container::iterator pit=polylines.begin(),pit_end=polylines.end();pit!=pit_end;++pit) smooth(*pit); invalidateOpenGLBuffers(); Q_EMIT itemChanged(); }