-
Notifications
You must be signed in to change notification settings - Fork 4
/
meshcat_example.cpp
67 lines (54 loc) · 2.23 KB
/
meshcat_example.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/**
* @file meshcat_example.cpp
* @authors Giulio Romualdi
* @copyright This software may be modified and distributed under the terms of the BSD-3-Clause
* license.
*/
#include <MeshcatCpp/Material.h>
#include <MeshcatCpp/Meshcat.h>
#include <MeshcatCpp/Shape.h>
#include <filesystem>
MeshcatCpp::MatrixView<double> array_to_matrix_view(std::array<double, 16>& array)
{
constexpr MeshcatCpp::MatrixView<double>::index_type rows = 4;
constexpr MeshcatCpp::MatrixView<double>::index_type cols = 4;
constexpr auto order = MeshcatCpp::MatrixStorageOrdering::ColumnMajor;
return MeshcatCpp::make_matrix_view(array.data(), rows, cols, order);
}
int main()
{
MeshcatCpp::Meshcat meshcat;
MeshcatCpp::Material m = MeshcatCpp::Material::get_default_material();
std::array<double, 16> transform = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1};
auto matrix_view = array_to_matrix_view(transform);
m.set_color(66, 133, 244, 0.5);
meshcat.set_object("box", MeshcatCpp::Box(0.5, 0.5, 0.5), m);
matrix_view(1, 3) = 1.75;
meshcat.set_transform("box", matrix_view);
m.set_color(234, 67, 53);
meshcat.set_object("sphere", MeshcatCpp::Sphere(0.5), m);
matrix_view(1, 3) = 0.75;
meshcat.set_transform("sphere", matrix_view);
m.set_color(251, 188, 5, 0.5);
meshcat.set_object("ellipsoid", MeshcatCpp::Ellipsoid(0.5, 0.25, 0.75), m);
matrix_view(1, 3) = -0.75;
meshcat.set_transform("ellipsoid", matrix_view);
m.set_color(52, 168, 83);
meshcat.set_object("cylinder", MeshcatCpp::Cylinder(0.25, 0.5), m);
matrix_view(1, 3) = -1.75;
meshcat.set_transform("cylinder", matrix_view);
const auto stl_path = std::filesystem::path(__FILE__).parent_path() / "misc" / "Dragonite.stl";
auto transparent_default = MeshcatCpp::Material::get_default_material();
transparent_default.transparent = true;
transparent_default.opacity = 0.5;
meshcat.set_object("obj", MeshcatCpp::Mesh(stl_path.string(), 0.01), transparent_default);
matrix_view(0, 3) = -1;
matrix_view(1, 3) = 0;
matrix_view(0, 0) = 0;
matrix_view(1, 1) = 0;
matrix_view(0, 1) = -1;
matrix_view(1, 0) = 1;
meshcat.set_transform("obj", matrix_view);
meshcat.join();
return EXIT_SUCCESS;
}