@@ -55,8 +55,8 @@ class MeshPairEntry(NamedTuple):
5555 anchor_pos : torch .Tensor | None # (3,) world position, or None for non-anchors
5656 anchor_yaw : float
5757 centers_local : torch .Tensor # (S, 3) sphere centers in subject-local frame
58- radii : torch .Tensor # (S,) sphere radii
59- subject_bbox_min : torch .Tensor # (B, 3) subject bbox min corners, B = batch_size
58+ radii : torch .Tensor # (S,)
59+ subject_bbox_min : torch .Tensor # (B, 3) subject bbox min corners
6060 subject_bbox_max : torch .Tensor # (B, 3)
6161 obstacle_bbox_min : torch .Tensor # (B, 3) obstacle bbox min corners
6262 obstacle_bbox_max : torch .Tensor # (B, 3)
@@ -480,14 +480,13 @@ def _compute_no_overlap_loss_mesh(
480480 state : RelationSolverState ,
481481 debug : bool ,
482482 ) -> torch .Tensor :
483- """Per-env sphere-to-SDF penetration loss; iterates envs, calls the multi-mesh kernel per batch ."""
483+ """Per-env sphere-to-SDF penetration loss."""
484484 device = state .device
485485 total_loss = torch .zeros (state .batch_size , device = device , dtype = torch .float32 )
486486 clearance_m = self .params .clearance_m
487487 slope = self ._no_collision_strategy .slope
488488
489- # Per-env loop (not batched like AABB): per-env yaw and active-pair masking each produce a
490- # different sphere subset before the kernel launch, so envs cannot be collapsed into one call.
489+ # Per-env loop (not batched like AABB): per-env yaw and active-pair masking produce a different sphere subset per env.
491490 for b in range (state .batch_size ):
492491 for cache in (self ._mesh_cache_forward , self ._mesh_cache_reverse ):
493492 if cache is None :
0 commit comments