Class
List
Hierarchy
Modules
Common
Events
Math
Messages
Physics
Rendering
Sensors
Transport
Links
Gazebo Website
Wiki
Tutorials
Download
Report Documentation Issues
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
gazebo
common
MeshManager.hh
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2012-2014 Open Source Robotics Foundation
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*
16
*/
17
#ifndef _MESHMANAGER_HH_
18
#define _MESHMANAGER_HH_
19
20
#include <map>
21
#include <string>
22
#include <vector>
23
#include <boost/thread/mutex.hpp>
24
25
#include "
gazebo/math/Vector3.hh
"
26
#include "
gazebo/math/Vector2d.hh
"
27
#include "
gazebo/math/Pose.hh
"
28
#include "
gazebo/math/Plane.hh
"
29
#include "
gazebo/common/SingletonT.hh
"
30
#include "
gazebo/util/system.hh
"
31
32
namespace
gazebo
33
{
34
namespace
common
35
{
36
class
ColladaLoader;
37
class
STLLoader;
38
class
Mesh;
39
class
Plane;
40
class
SubMesh;
41
44
47
class
GAZEBO_VISIBLE
MeshManager
:
public
SingletonT
<MeshManager>
48
{
50
private
:
MeshManager
();
51
55
private
:
virtual
~
MeshManager
();
56
60
public
:
const
Mesh
*Load(
const
std::string &_filename);
61
64
public
:
bool
IsValidFilename(
const
std::string &_filename);
65
71
public
:
void
GetMeshAABB(
const
Mesh
*_mesh,
72
math::Vector3
&_center,
73
math::Vector3
&_min_xyz,
74
math::Vector3
&_max_xyz);
75
77
public
:
void
GenSphericalTexCoord(
const
Mesh
*_mesh,
78
math::Vector3
_center);
79
80
86
public
:
void
AddMesh(
Mesh
*_mesh);
87
91
public
:
const
Mesh
*GetMesh(
const
std::string &_name)
const
;
92
95
public
:
bool
HasMesh(
const
std::string &_name)
const
;
96
102
public
:
void
CreateSphere(
const
std::string &_name,
float
_radius,
103
int
_rings,
int
_segments);
104
109
public
:
void
CreateBox(
const
std::string &_name,
110
const
math::Vector3
&_sides,
111
const
math::Vector2d
&_uvCoords);
112
119
public
:
void
CreateCylinder(
const
std::string &_name,
120
float
_radius,
121
float
_height,
122
int
_rings,
123
int
_segments);
124
131
public
:
void
CreateCone(
const
std::string &_name,
132
float
_radius,
133
float
_height,
134
int
_rings,
135
int
_segments);
136
147
public
:
void
CreateTube(
const
std::string &_name,
148
float
_innerRadius,
149
float
_outterRadius,
150
float
_height,
151
int
_rings,
152
int
_segments);
153
159
public
:
void
CreatePlane(
const
std::string &_name,
160
const
math::Plane
&_plane,
161
const
math::Vector2d
&_segments,
162
const
math::Vector2d
&_uvTile);
163
171
public
:
void
CreatePlane(
const
std::string &_name,
172
const
math::Vector3
&_normal,
173
double
_d,
174
const
math::Vector2d
&_size,
175
const
math::Vector2d
&_segments,
176
const
math::Vector2d
&_uvTile);
177
185
private
:
void
Tesselate2DMesh(
SubMesh
*_sm,
186
int
_meshWidth,
187
int
_meshHeight,
188
bool
_doubleSided);
189
193
public
:
void
CreateCamera(
const
std::string &_name,
float
_scale);
194
195
#ifdef HAVE_GTS
196
public
:
void
CreateBoolean(
const
std::string &_name,
const
Mesh
*_m1,
203
const
Mesh
*_m2,
const
int
_operation,
204
const
math::Pose
&_offset =
math::Pose::Zero
);
205
#endif
206
208
private
:
ColladaLoader
*colladaLoader;
209
211
private
:
STLLoader
*stlLoader;
212
214
private
: std::map<std::string, Mesh*> meshes;
215
217
private
: std::vector<std::string> fileExtensions;
218
219
private
: boost::mutex mutex;
220
222
private
:
friend
class
SingletonT
<
MeshManager
>;
223
};
225
}
226
}
227
#endif