hpp-fcl 2.3.0
HPP fork of FCL -- The Flexible Collision Library
Loading...
Searching...
No Matches
assimp.h
Go to the documentation of this file.
1/*
2 * Software License Agreement (BSD License)
3 *
4 * Copyright (c) 2011-2014, Willow Garage, Inc.
5 * Copyright (c) 2014-2015, Open Source Robotics Foundation
6 * Copyright (c) 2016-2019, CNRS - LAAS
7 * Copyright (c) 2019, INRIA
8 * All rights reserved.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 *
14 * * Redistributions of source code must retain the above copyright
15 * notice, this list of conditions and the following disclaimer.
16 * * Redistributions in binary form must reproduce the above
17 * copyright notice, this list of conditions and the following
18 * disclaimer in the documentation and/or other materials provided
19 * with the distribution.
20 * * Neither the name of Open Source Robotics Foundation nor the names of its
21 * contributors may be used to endorse or promote products derived
22 * from this software without specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 * POSSIBILITY OF SUCH DAMAGE.
36 */
37
38#ifndef HPP_FCL_MESH_LOADER_ASSIMP_H
39#define HPP_FCL_MESH_LOADER_ASSIMP_H
40
41#include <hpp/fcl/fwd.hh>
42#include <hpp/fcl/config.hh>
43#include <hpp/fcl/BV/OBBRSS.h>
45
46struct aiScene;
47namespace Assimp {
48class Importer;
49}
50
51namespace hpp {
52namespace fcl {
53
54namespace internal {
55
57 std::vector<fcl::Vec3f> vertices_;
58 std::vector<fcl::Triangle> triangles_;
59};
60
64
65 void load(const std::string& resource_path);
66
67 Assimp::Importer* importer;
68 aiScene const* scene;
69};
70
79HPP_FCL_DLLAPI void buildMesh(const fcl::Vec3f& scale, const aiScene* scene,
80 unsigned vertices_offset,
82
90template <class BoundingVolume>
92 const fcl::Vec3f& scale, const aiScene* scene,
93 const shared_ptr<BVHModel<BoundingVolume> >& mesh) {
95
96 int res = mesh->beginModel();
97
98 if (res != fcl::BVH_OK) {
99 HPP_FCL_THROW_PRETTY("fcl BVHReturnCode = " << res, std::runtime_error);
100 }
101
102 buildMesh(scale, scene, (unsigned)mesh->num_vertices, tv);
103 mesh->addSubModel(tv.vertices_, tv.triangles_);
104
105 mesh->endModel();
106}
107
108} // namespace internal
109
117template <class BoundingVolume>
119 const std::string& resource_path, const fcl::Vec3f& scale,
120 const shared_ptr<BVHModel<BoundingVolume> >& polyhedron) {
121 internal::Loader scene;
122 scene.load(resource_path);
123
124 internal::meshFromAssimpScene(scale, scene.scene, polyhedron);
125}
126
127} // namespace fcl
128} // namespace hpp
129
130#endif // HPP_FCL_MESH_LOADER_ASSIMP_H
A class describing the bounding hierarchy of a mesh model or a point cloud model (which is viewed as ...
Definition: BVH_model.h:273
#define HPP_FCL_DLLAPI
Definition: config.hh:64
#define HPP_FCL_THROW_PRETTY(message, exception)
Definition: fwd.hh:57
Definition: assimp.h:47
void meshFromAssimpScene(const fcl::Vec3f &scale, const aiScene *scene, const shared_ptr< BVHModel< BoundingVolume > > &mesh)
Convert an assimp scene to a mesh.
Definition: assimp.h:91
void buildMesh(const fcl::Vec3f &scale, const aiScene *scene, unsigned vertices_offset, TriangleAndVertices &tv)
Recursive procedure for building a mesh.
Eigen::Matrix< FCL_REAL, 3, 1 > Vec3f
Definition: data_types.h:66
void loadPolyhedronFromResource(const std::string &resource_path, const fcl::Vec3f &scale, const shared_ptr< BVHModel< BoundingVolume > > &polyhedron)
Read a mesh file and convert it to a polyhedral mesh.
Definition: assimp.h:118
@ BVH_OK
Definition: BVH_internal.h:65
Main namespace.
Definition: broadphase_bruteforce.h:44
Definition: assimp.h:61
Assimp::Importer * importer
Definition: assimp.h:67
aiScene const * scene
Definition: assimp.h:68
void load(const std::string &resource_path)
std::vector< fcl::Vec3f > vertices_
Definition: assimp.h:57
std::vector< fcl::Triangle > triangles_
Definition: assimp.h:58