27#include <easy3d/core/surface_mesh.h>
28#include <easy3d/viewer/viewer.h>
29#include <easy3d/renderer/camera.h>
30#include <easy3d/renderer/drawable_lines.h>
31#include <easy3d/algo/text_mesher.h>
32#include <easy3d/util/resource.h>
33#include <easy3d/util/initializer.h>
41int main(
int argc,
char **argv) {
46 Viewer viewer(EXAMPLE_TITLE);
49 const std::string font_file = resource::directory() +
"/fonts/en_Earth-Normal.ttf";
59 mesher.
set_font(resource::directory() +
"/fonts/en_Roboto-Regular.ttf");
60 mesher.
generate(mesh,
"Makes 3D Easy!", 350, 0, 25, 15,
true);
63 std::vector< std::vector<Polygon2> > contours;
65 mesher.
generate(
"Easy3D", 0, -60, 48, contours,
true);
66 mesher.
set_font(resource::directory() +
"/fonts/en_Roboto-Regular.ttf");
67 mesher.
generate(
"Makes 3D Easy!", 350, -60, 25, contours,
true);
68 std::vector<vec3> points, colors;
69 std::vector<unsigned int> indices;
71 for (
auto &cha : contours) {
72 for (
auto &con : cha) {
73 vec3 c = con.is_clockwise() ?
vec3(1, 0, 0) :
vec3(0, 1, 0);
74 for (
int i = 0; i < con.size(); ++i) {
75 points.push_back(
vec3(con[i], 0.0f));
77 indices.push_back(offset + i);
78 indices.push_back(offset + (i + 1) % con.size());
85 d->
update_color_buffer(colors);
86 d->
update_element_buffer(indices);
87 d->
set_impostor_type(LinesDrawable::CONE);
void setUpVector(const vec3 &up, bool noMove=true) const
Definition: camera.cpp:837
void setViewDirection(const vec3 &direction) const
Definition: camera.cpp:879
void update_vertex_buffer(const std::vector< vec3 > &vertices, bool dynamic=false)
Creates/Updates a single buffer.
Definition: drawable.cpp:142
The drawable for rendering a set of line segments, e.g., edges of a mesh, vector fields.
Definition: drawable_lines.h:40
void set_property_coloring(Location color_location, const std::string &color_name="")
Definition: state.cpp:97
A halfedge data structure for polygonal meshes of 2-manifold.
Definition: surface_mesh.h:52
Generate a 3D surface mesh from a text string.
Definition: text_mesher.h:42
SurfaceMesh * generate(const std::string &text, float x, float y, int font_size, float extrude, bool collision_free=false)
Generate a 3D surface mesh of a text.
Definition: text_mesher.cpp:283
void set_font(const std::string &font_file)
Change the font.
Definition: text_mesher.cpp:63
The built-in Easy3D viewer.
Definition: viewer.h:61
bool add_drawable(Drawable *drawable)
Add a drawable to the viewer to be visualized. After a drawable being added to the viewer,...
Definition: viewer.cpp:1302
virtual Model * add_model(const std::string &file_name, bool create_default_drawables=true)
Add a model from a file to the viewer to be visualized. On success, the viewer will be in charge of t...
Definition: viewer.cpp:1204
Camera * camera()
Returns the camera used by the viewer. See Camera.
Definition: viewer.h:177
int run(bool see_all=true)
Run the viewer.
Definition: viewer.cpp:1090
Definition: collider.cpp:182
void initialize(bool use_log_file, bool use_setting_file, const std::string &resource_dir)
Initialization of Easy3D.
Definition: initializer.cpp:35