Scene
Per-scene geometry with a scene id and a manipulation-target actor id.
Triangle mesh with actor id, optional visual-mesh path, and cached bounds.
Return the visual mesh path, falling back to the collision mesh.
>>> MeshDescription("o", "c.obj", (1.0, 1.0, 1.0)).get_visual_mesh_path()
'c.obj'
>>> MeshDescription("o", "c.obj", (1.0, 1.0, 1.0), visual_mesh_path="v.obj").get_visual_mesh_path()
'v.obj'from graspkit.scene.scene_description import MeshDescription
MeshDescription("o", "c.obj", (1.0, 1.0, 1.0)).get_visual_mesh_path()
MeshDescription("o", "c.obj", (1.0, 1.0, 1.0), visual_mesh_path="v.obj").get_visual_mesh_path()Box primitive, usually for static elements like tables.
Per-scene mesh-backed WarpScenes for grasp / motion optimizers.
The target mesh of each scene (none for a table-only scene); built lazily on first access.
Update geometry in place for a scene batch with the same layout; captured pointers stay valid.
One `WarpScene (mesh+box) for MotionPlanner.plan()`, in robot base frame (FK is base-relative).
Differentiable per-scene target-object SDF (single mesh -> diff path).
Full-scene SDF (meshes+primitives), differentiable; drives penetration gradient in motion/grasp-GD.
(target_scene, collision_scene); sdf_volume swaps the target mesh for an SDF (params in mesh units).