2#include "../btSoftBodyHelpers.h"
36 while (std::getline(
fs,
line))
38 std::stringstream
ss(
line);
39 if (
line.size() == (
size_t)(0))
42 else if (
line.substr(0, 6) ==
"POINTS")
50 else if (
line.substr(0, 5) ==
"CELLS")
58 else if (
line.substr(0, 10) ==
"CELL_TYPES")
81 printf(
"Load deformable failed: Only Tetrahedra are supported in VTK file.\n");
88 for (
size_t i = 0; i < 4; i++)
99 for (
int i = 0; i <
n_tets; ++i)
104 rsb->appendLink(
ni[0],
ni[1], 0,
true);
105 rsb->appendLink(
ni[1],
ni[2], 0,
true);
106 rsb->appendLink(
ni[2],
ni[0], 0,
true);
107 rsb->appendLink(
ni[0],
ni[3], 0,
true);
108 rsb->appendLink(
ni[1],
ni[3], 0,
true);
109 rsb->appendLink(
ni[2],
ni[3], 0,
true);
114 rsb->initializeDmInverse();
115 rsb->m_tetraScratches.resize(
rsb->m_tetras.size());
116 rsb->m_tetraScratchesTn.resize(
rsb->m_tetras.size());
117 printf(
"Nodes: %u\r\n",
rsb->m_nodes.size());
118 printf(
"Links: %u\r\n",
rsb->m_links.size());
119 printf(
"Faces: %u\r\n",
rsb->m_faces.size());
120 printf(
"Tetras: %u\r\n",
rsb->m_tetras.size());
149 rsb->setInertiaProps();
152 rsb->internalInitialization();
157 const unsigned int n_size,
160 std::ifstream
f_in(
file, std::ios::in | std::ios::binary);
169 for (
unsigned int i = 0; i <
n_size; ++i)
171 f_in.read((
char*)&temp,
sizeof(
double));
180 const unsigned int n_full,
183 std::ifstream
f_in(
file, std::ios::in | std::ios::binary);
191 for (
int i = 0; i <
n_modes; ++i)
196 f_in.read((
char*)&temp,
sizeof(
double));
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
const T & btMax(const T &a, const T &b)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods It...
btVector3 can be used to represent 3D points and vectors.
void setZ(btScalar _z)
Set the z value.
void setY(btScalar _y)
Set the y value.
void setX(btScalar _x)
Set the x value.
static void readBinaryMat(btReducedDeformableBody::tDenseMatrix &mat, const unsigned int n_modes, const unsigned int n_full, const char *file)
static void readBinaryVec(btReducedDeformableBody::tDenseArray &vec, const unsigned int n_size, const char *file)
static btReducedDeformableBody * createFromVtkFile(btSoftBodyWorldInfo &worldInfo, const char *vtk_file)
static btReducedDeformableBody * createReducedDeformableObject(btSoftBodyWorldInfo &worldInfo, const std::string &file_path, const std::string &vtk_file, const int num_modes, bool rigid_only)
static void calculateLocalInertia(btVector3 &inertia, const btScalar mass, const btVector3 &half_extents, const btVector3 &margin)
static void readReducedDeformableInfoFromFiles(btReducedDeformableBody *rsb, const char *file_path)
static void generateBoundaryFaces(btSoftBody *psb)