27#include <easy3d/viewer/viewer.h>
28#include <easy3d/core/model.h>
29#include <easy3d/renderer/drawable_points.h>
30#include <easy3d/renderer/renderer.h>
31#include <easy3d/renderer/camera.h>
32#include <easy3d/algo/point_cloud_normals.h>
33#include <easy3d/util/resource.h>
34#include <easy3d/util/initializer.h>
48 if (!viewer || !model)
51 auto cloud =
dynamic_cast<PointCloud *
>(model);
52 if (PointCloudNormals::estimate(cloud)) {
54 auto drawable = cloud->renderer()->get_points_drawable(
"vertices");
56 drawable->update_normal_buffer(normals.vector());
65 if (!viewer || !model)
68 auto cloud =
dynamic_cast<PointCloud *
>(model);
71 LOG(WARNING) <<
"normal information does not exist";
75 if (PointCloudNormals::reorient(cloud)) {
76 auto drawable = cloud->renderer()->get_points_drawable(
"vertices");
78 drawable->update_normal_buffer(normals.vector());
86int main(
int argc,
char **argv) {
90 const std::string file = resource::directory() +
"/data/bunny.bin";
93 Viewer viewer(EXAMPLE_TITLE);
95 auto model = viewer.add_model(file,
true);
97 LOG(ERROR) <<
"failed to load model. Please make sure the file exists and format is correct.";
101 viewer.camera()->setUpVector(
vec3(0, 1, 0));
102 viewer.camera()->setViewDirection(
vec3(1, 0, 0));
105 auto drawable = model->renderer()->get_points_drawable(
"vertices");
106 drawable->set_uniform_coloring(
vec4(0.6f, 0.6f, 1.0f, 1.0f));
107 drawable->set_point_size(3.0f);
108 drawable->set_distinct_back_color(
true);
111 viewer.bind(estimate, model, Viewer::KEY_E, Viewer::MODIF_CTRL);
112 viewer.bind(reorient, model, Viewer::KEY_R, Viewer::MODIF_CTRL);
115 "Ctrl + e: estimate normals\n"
116 "Ctrl + r: reorient normals");
The base class of renderable 3D models.
Definition model.h:50
A data structure for point clouds.
Definition point_cloud.h:45
VertexProperty< T > get_vertex_property(const std::string &name) const
Get the vertex property named name of type T.
Definition point_cloud.h:513
The built-in Easy3D viewer.
Definition viewer.h:63
Definition collider.cpp:182
void initialize(bool info_to_stdout, bool use_log_file, bool use_setting_file, const std::string &resource_dir)
Initialization of Easy3D.
Definition initializer.cpp:39