Mesh.hh
Go to the documentation of this file.
1 /*
2  * Copyright 2018 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 SDF_MESH_HH_
18 #define SDF_MESH_HH_
19 
20 #include <string>
21 #include <optional>
22 
23 #include <gz/math/Vector3.hh>
24 #include <gz/math/Inertial.hh>
25 #include <gz/utils/ImplPtr.hh>
27 #include <sdf/Element.hh>
28 #include <sdf/Error.hh>
29 #include <sdf/sdf_config.h>
30 
31 namespace sdf
32 {
33  // Inline bracket to help doxygen filtering.
34  inline namespace SDF_VERSION_NAMESPACE {
35  //
36 
37  // Forward declarations.
38  class ParserConfig;
39 
41  enum class MeshOptimization
42  {
44  NONE,
49  };
50 
53  {
56 
63  public: Errors Load(ElementPtr _sdf);
64 
69  public: sdf::ElementPtr Element() const;
70 
73  public: unsigned int MaxConvexHulls() const;
74 
77  public: void SetMaxConvexHulls(unsigned int _maxConvexHulls);
78 
82  public: unsigned int VoxelResolution() const;
83 
87  public: void SetVoxelResolution(unsigned int _voxelResolution);
88 
90  GZ_UTILS_IMPL_PTR(dataPtr)
91  };
92 
96  {
98  public: Mesh();
99 
106  public: Errors Load(ElementPtr _sdf);
107 
115  public: Errors Load(sdf::ElementPtr _sdf, const ParserConfig &_config);
116 
121 
125  public: std::string OptimizationStr() const;
126 
129  public: void SetOptimization(MeshOptimization _optimization);
130 
136  public: bool SetOptimization(const std::string &_optimizationStr);
137 
142 
146  const sdf::ConvexDecomposition &_convexDecomposition);
147 
150  public: std::string Uri() const;
151 
154  public: void SetUri(const std::string &_uri);
155 
158  public: const std::string &FilePath() const;
159 
162  public: void SetFilePath(const std::string &_filePath);
163 
166  public: gz::math::Vector3d Scale() const;
167 
170  public: void SetScale(const gz::math::Vector3d &_scale);
171 
176  public: std::string Submesh() const;
177 
181  public: void SetSubmesh(const std::string &_submesh);
182 
188  public: bool CenterSubmesh() const;
189 
193  public: void SetCenterSubmesh(const bool _center);
194 
203  public: std::optional<gz::math::Inertiald>
205  double _density,
206  const sdf::ElementPtr _autoInertiaParams,
207  const ParserConfig &_config);
208 
212  public: sdf::ElementPtr Element() const;
213 
219  public: sdf::ElementPtr ToElement() const;
220 
227  public: sdf::ElementPtr ToElement(sdf::Errors &_errors) const;
228 
230  GZ_UTILS_IMPL_PTR(dataPtr)
231  };
232  }
233 }
234 #endif
Convex decomposition.
Definition: Mesh.hh:53
void SetVoxelResolution(unsigned int _voxelResolution)
Set the voxel resolution to use for representing the mesh.
Errors Load(ElementPtr _sdf)
Load the contact based on a element pointer.
void SetMaxConvexHulls(unsigned int _maxConvexHulls)
Set the maximum number of convex hulls that can be generated.
sdf::ElementPtr Element() const
Get a pointer to the SDF element that was used during load.
unsigned int VoxelResolution() const
Get the voxel resolution to use for representing the mesh.
unsigned int MaxConvexHulls() const
Get the maximum number of convex hulls that can be generated.
Mesh represents a mesh shape, and is usually accessed through a Geometry.
Definition: Mesh.hh:96
void SetFilePath(const std::string &_filePath)
Set the path to the file where this element was loaded from.
Errors Load(sdf::ElementPtr _sdf, const ParserConfig &_config)
Load the mesh geometry based on a element pointer.
void SetConvexDecomposition(const sdf::ConvexDecomposition &_convexDecomposition)
Set the associated ConvexDecomposition object.
Errors Load(ElementPtr _sdf)
Load the mesh geometry based on a element pointer.
std::string Submesh() const
A submesh, contained with the mesh at the specified URI, may optionally be specified.
void SetUri(const std::string &_uri)
Set the mesh's URI.
sdf::ElementPtr ToElement() const
Create and return an SDF element filled with data from this mesh.
bool CenterSubmesh() const
Get whether the submesh should be centered at 0,0,0.
std::optional< gz::math::Inertiald > CalculateInertial(sdf::Errors &_errors, double _density, const sdf::ElementPtr _autoInertiaParams, const ParserConfig &_config)
Calculate and return the Inertial values for the Mesh.
const sdf::ConvexDecomposition * ConvexDecomposition() const
Get the associated ConvexDecomposition object.
sdf::ElementPtr Element() const
Get a pointer to the SDF element that was used during load.
const std::string & FilePath() const
The path to the file where this element was loaded from.
bool SetOptimization(const std::string &_optimizationStr)
Set the mesh optimization method.
void SetSubmesh(const std::string &_submesh)
Set the mesh's submesh.
void SetOptimization(MeshOptimization _optimization)
Set the mesh optimization method.
void SetCenterSubmesh(const bool _center)
Set whether the submesh should be centered.
void SetScale(const gz::math::Vector3d &_scale)
Set the mesh's scale factor.
std::string Uri() const
Get the mesh's URI.
MeshOptimization Optimization() const
Get the mesh's optimization method.
std::string OptimizationStr() const
Get the mesh's optimization method.
sdf::ElementPtr ToElement(sdf::Errors &_errors) const
Create and return an SDF element filled with data from this mesh.
gz::math::Vector3d Scale() const
Get the mesh's scale factor.
This class contains configuration options for the libsdformat parser.
Definition: ParserConfig.hh:100
std::vector< Error > Errors
A vector of Error.
Definition: Types.hh:95
MeshOptimization
Mesh optimization method.
Definition: Mesh.hh:42
std::shared_ptr< Element > ElementPtr
Definition: Element.hh:55
namespace for Simulation Description Format parser
Definition: Actor.hh:35
#define SDFORMAT_VISIBLE
Use to represent "symbol visible" if supported.
Definition: system_util.hh:25