code: def infer_bbox_shape3d(
      boxes: torch.Tensor,
  ) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
      r"""Auto-infer the output sizes for the given 3D bounding boxes.
  
      Args:
          boxes: a tensor containing the coordinates of the bounding boxes to be extracted. The tensor must have the shape
              of Bx8x3, where each box is defined in the following ``clockwise`` order: front-top-left, front-top-right,
              front-bottom-right, front-bottom-left, back-top-left, back-top-right, back-bottom-right, back-bottom-left.
              The coordinates must be in the x, y, z order.
  
      Returns:
          - Bounding box depths, shape of :math:`(B,)`.
          - Bounding box heights, shape of :math:`(B,)`.
          - Bounding box widths, shape of :math:`(B,)`.
  
      Example:
          >>> boxes = torch.tensor([[[ 0,  1,  2],
          ...         [10,  1,  2],
          ...         [10, 21,  2],
          ...         [ 0, 21,  2],
          ...         [ 0,  1, 32],
          ...         [10,  1, 32],
          ...         [10, 21, 32],
          ...         [ 0, 21, 32]],
          ...        [[ 3,  4,  5],
          ...         [43,  4,  5],
          ...         [43, 54,  5],
          ...         [ 3, 54,  5],
          ...         [ 3,  4, 65],
          ...         [43,  4, 65],
          ...         [43, 54, 65],
          ...         [ 3, 54, 65]]]) # 2x8x3
          >>> infer_bbox_shape3d(boxes)
          (tensor([31, 61]), tensor([21, 51]), tensor([11, 41]))
      """
      validate_bbox3d(boxes)
  
      left = torch.index_select(
          boxes,
          1,
          torch.tensor(
              [1, 2, 5, 6], device=boxes.device, dtype=torch.long
          ),
      )[:, :, 0]
      right = torch.index_select(
          boxes,
          1,
          torch.tensor(
              [0, 3, 4, 7], device=boxes.device, dtype=torch.long
          ),
      )[:, :, 0]
      widths = (left - right + 1)[:, 0]
  
      bot = torch.index_select(
          boxes,
          1,
          torch.tensor(
              [2, 3, 6, 7], device=boxes.device, dtype=torch.long
          ),
      )[:, :, 1]
      upper = torch.index_select(
          boxes,
          1,
          torch.tensor(
              [0, 1, 4, 5], device=boxes.device, dtype=torch.long
          ),
      )[:, :, 1]
      heights = (bot - upper + 1)[:, 0]
  
      depths = (boxes[:, 4:, 2] - boxes[:, :4, 2] + 1)[:, 0]
      return depths, heights, widths
  
file_path: kornia/kornia/geometry/bbox.py
imports: from __future__ import annotations
  import warnings
  from typing import Optional
  import torch
  from kornia.core import arange, ones_like, stack, where, zeros
  from .linalg import transform_points
label_desc: Use image node_id 4 for calling a global function with example usage: infer_bbox_shape3d(boxes) and returns: depths,  heights,  widths