dart
dart
dynamics
SoftMeshShape.hpp
1
/*
2
* Copyright (c) 2011-2021, The DART development contributors
3
* All rights reserved.
4
*
5
* The list of contributors can be found at:
6
* https://github.com/dartsim/dart/blob/master/LICENSE
7
*
8
* This file is provided under the following "BSD-style" License:
9
* Redistribution and use in source and binary forms, with or
10
* without modification, are permitted provided that the following
11
* conditions are met:
12
* * Redistributions of source code must retain the above copyright
13
* notice, this list of conditions and the following disclaimer.
14
* * Redistributions in binary form must reproduce the above
15
* copyright notice, this list of conditions and the following
16
* disclaimer in the documentation and/or other materials provided
17
* with the distribution.
18
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
19
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
20
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
23
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
26
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
* POSSIBILITY OF SUCH DAMAGE.
31
*/
32
33
#ifndef DART_DYNAMICS_SOFTMESHSHAPE_HPP_
34
#define DART_DYNAMICS_SOFTMESHSHAPE_HPP_
35
36
#include <Eigen/Dense>
37
#include <assimp/scene.h>
38
#include "dart/dynamics/Shape.hpp"
39
40
namespace
dart
{
41
namespace
dynamics
{
42
43
class
SoftBodyNode;
44
45
// TODO(JS): Implement
46
class
SoftMeshShape
:
public
Shape
47
{
48
public
:
49
friend
class
SoftBodyNode
;
50
52
explicit
SoftMeshShape
(
SoftBodyNode
* _softBodyNode);
53
55
virtual
~SoftMeshShape
();
56
57
// Documentation inherited.
58
const
std::string&
getType
()
const override
;
59
61
static
const
std::string&
getStaticType
();
62
64
const
aiMesh* getAssimpMesh()
const
;
65
67
const
SoftBodyNode
*
getSoftBodyNode
()
const
;
68
70
void
update
();
71
72
// Documentation inherited.
73
Eigen::Matrix3d
computeInertia
(
double
mass)
const override
;
74
75
protected
:
76
// Documentation inherited.
77
void
updateBoundingBox
()
const override
;
78
79
// Documentation inherited.
80
void
updateVolume
()
const override
;
81
82
private
:
84
void
_buildMesh();
85
87
SoftBodyNode
* mSoftBodyNode;
88
90
std::unique_ptr<aiMesh> mAssimpMesh;
91
};
92
93
}
// namespace dynamics
94
}
// namespace dart
95
96
#endif // DART_DYNAMICS_SOFTMESHSHAPE_HPP_
dart::dynamics::SoftMeshShape
Definition:
SoftMeshShape.hpp:46
dart::dynamics::SoftMeshShape::getSoftBodyNode
const SoftBodyNode * getSoftBodyNode() const
Get the SoftBodyNode that is associated with this SoftMeshShape.
Definition:
SoftMeshShape.cpp:76
dart::dynamics::SoftMeshShape::updateVolume
void updateVolume() const override
Updates volume.
Definition:
SoftMeshShape.cpp:97
dart::dynamics::SoftBodyNode
SoftBodyNode represent a soft body that has one deformable skin.
Definition:
SoftBodyNode.hpp:45
dart::dynamics::SoftMeshShape::~SoftMeshShape
virtual ~SoftMeshShape()
Destructor.
Definition:
SoftMeshShape.cpp:53
dynamics
dart::dynamics::SoftMeshShape::computeInertia
Eigen::Matrix3d computeInertia(double mass) const override
Computes the inertia.
Definition:
SoftMeshShape.cpp:81
dart::dynamics::SoftMeshShape::getStaticType
static const std::string & getStaticType()
Returns shape type for this class.
Definition:
SoftMeshShape.cpp:65
dart::dynamics::SoftMeshShape::getType
const std::string & getType() const override
Returns a string representing the shape type.
Definition:
SoftMeshShape.cpp:59
dart
Definition:
Aspect.cpp:40
dart::dynamics::Shape
Definition:
Shape.hpp:52
dart::dynamics::SoftMeshShape::updateBoundingBox
void updateBoundingBox() const override
Updates bounding box.
Definition:
SoftMeshShape.cpp:90
dart::dynamics::SoftMeshShape::update
void update()
Update positions of the vertices using the parent soft body node.
Definition:
SoftMeshShape.cpp:141
dart::dynamics::SoftMeshShape::SoftMeshShape
SoftMeshShape(SoftBodyNode *_softBodyNode)
Constructor.
Definition:
SoftMeshShape.cpp:43
Generated by
1.8.13