Class MeshGeometry
Defined in File pf_obstacle_geometry.hpp
Inheritance Relationships
Base Type
public pfield::ObstacleGeometry(Class ObstacleGeometry)
Class Documentation
-
class MeshGeometry : public pfield::ObstacleGeometry
Geometry for a triangle-mesh obstacle.
Mesh obstacles delegate signed-distance and normal queries to per-triangle ray / closest-point routines in mesh_collision.hpp. The Coal collision object is built from a pre-loaded BVH rather than a parametric shape.
Note
MeshGeometry holds a non-owning pointer to the MeshCollisionData loaded by PotentialFieldObstacle; it does not manage its lifetime.
Public Functions
Constructs a MeshGeometry.
- Parameters:
meshCollisionData – Shared pointer to the loaded mesh data. Must be non-null before calling computeSignedDistanceAndNormal() or buildCoalGeometry().
-
virtual ObstacleType getType() const override
Returns the ObstacleType discriminator for this geometry.
-
virtual std::vector<double> asVector() const override
Returns a vector of the geometry’s defining parameters.
The vector layout is type-specific: Sphere → {radius} Box → {length, width, height} Cylinder → {radius, height} Ellipsoid → {semi_x, semi_y, semi_z} Capsule → {radius, height} Mesh → {length, width, height} (bounding-box dims or zeros)
-
virtual Eigen::Vector3d halfDimensions(const Eigen::Vector3d &meshScale) const override
Returns the half-dimensions of the obstacle’s axis-aligned bounding box.
Used for broad-phase influence-zone checks.
- Parameters:
meshScale – Scale of the mesh resource (used only by MeshGeometry; ignored by all other types).
-
virtual void computeSignedDistanceAndNormal(const Eigen::Vector3d &localPoint, const Eigen::Quaterniond &obstacleOrientation, double &signedDistance, Eigen::Vector3d &normal) const override
Computes the signed distance and outward surface normal from a point expressed in the obstacle’s local frame.
The caller is responsible for transforming the world-frame query point into the obstacle’s local frame before calling this method.
- Parameters:
localPoint – [in] Query point in the obstacle’s local frame.
obstacleOrientation – [in] World-frame orientation of the obstacle (quaternion), used to rotate the computed normal back to world coordinates.
signedDistance – [out] Signed distance to the obstacle surface (negative if inside, positive if outside).
normal – [out] Outward unit normal in world coordinates at the closest surface point.
-
virtual std::shared_ptr<coal::CollisionGeometry> buildCoalGeometry(const Eigen::Vector3d &obstaclePosition, const Eigen::Quaterniond &obstacleOrientation, coal::Transform3s &coalTransform) const override
Builds the Coal collision geometry for this obstacle.
The returned shared_ptr is used to construct a coal::CollisionObject. The caller is responsible for supplying the correct world-frame transform.
- Parameters:
obstaclePosition – World-frame position of the obstacle origin.
obstacleOrientation – World-frame orientation of the obstacle.
coalTransform – [out] The Coal transform that should be passed to coal::CollisionObject together with the returned geometry. For most types this equals the obstacle pose, but OBB-fitted shapes (Box, Capsule) may shift and rotate it to the OBB center.
- Returns:
Shared pointer to the Coal collision geometry.
-
virtual coal::Transform3s computeUpdatedCoalTransform(const Eigen::Vector3d &obstaclePosition, const Eigen::Quaterniond &obstacleOrientation) const override
Computes the world-frame Coal transform to use when updating a cached collision object’s pose.
For most types this simply encodes (obstaclePosition, obstacleOrientation). OBB-fitted types (Box, Capsule) adjust for the centroid offset and PCA rotation baked into the Coal object at construction time.
- Parameters:
obstaclePosition – New world-frame position of the obstacle.
obstacleOrientation – New world-frame orientation of the obstacle.
- Returns:
The Coal transform to apply to the cached collision object.
-
virtual bool operator==(const ObstacleGeometry &other) const override
Equality comparison — only types with the same concrete class and parameters are equal.
-
virtual std::unique_ptr<ObstacleGeometry> clone() const override
Deep-copy factory, so PotentialFieldObstacle can clone its geometry.
Public Members
-
std::shared_ptr<struct MeshCollisionData> meshCollisionData
Loaded mesh data.