20 bool valid = m_data->m_sdf.load(sdfData, sizeInBytes);
44 btVector3 localAabbMin = m_data->m_sdf.m_domain.m_min;
45 btVector3 localAabbMax = m_data->m_sdf.m_domain.m_max;
47 btTransformAabb(localAabbMin, localAabbMax, margin, t, aabbMin, aabbMax);
52 m_data->m_localScaling = scaling;
56 return m_data->m_localScaling;
60 inertia.setValue(0, 0, 0);
64 return "btSdfCollisionShape";
68 m_data->m_margin = margin;
72 return m_data->m_margin;
85 bool hasResult = m_data->m_sdf.interpolate(field, dist, ptInSDF, &
grad);
SIMD_FORCE_INLINE void btTransformAabb(const btVector3 &halfExtents, btScalar margin, const btTransform &t, btVector3 &aabbMinOut, btVector3 &aabbMaxOut)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
btVector3
btVector3 can be used to represent 3D points and vectors. It has an un-used w component to suit 16-by...
bool initializeSDF(const char *sdfData, int sizeInBytes)
bool queryPoint(const btVector3 &ptInSDF, btScalar &distOut, btVector3 &normal)
virtual ~btSdfCollisionShape()
virtual const char * getName() const
virtual void processAllTriangles(btTriangleCallback *callback, const btVector3 &aabbMin, const btVector3 &aabbMax) const
virtual btScalar getMargin() const
virtual void getAabb(const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const
virtual void setMargin(btScalar margin)
virtual void setLocalScaling(const btVector3 &scaling)
virtual void calculateLocalInertia(btScalar mass, btVector3 &inertia) const
virtual const btVector3 & getLocalScaling() const
BLI_INLINE float grad(int hash_val, float x, float y, float z)
btSdfCollisionShapeInternalData()