code: def test_dimensions_sample_ray_points(self, device, dtype):
      cameras = create_four_cameras(device, dtype)
      uniform_sampler_four_cameras = UniformRaySampler(
          1, 2, False, device, dtype=dtype
      )
      uniform_sampler_four_cameras.calc_ray_params(cameras)
      lengths = sample_lengths(
          uniform_sampler_four_cameras.origins.shape[0],
          10,
          device=device,
          dtype=dtype,
          irregular=True,
      )
      points_3d = sample_ray_points(
          uniform_sampler_four_cameras.origins,
          uniform_sampler_four_cameras.directions,
          lengths,
      )
      assert points_3d.shape == (3 * 28 + 45, 10, 3)
  
imports: import math
  import torch
  from kornia.core import Device
  from kornia.geometry.camera import PinholeCamera
  from kornia.nerf.samplers import RandomGridRaySampler, RandomRaySampler, UniformRaySampler, calc_ray_t_vals, cameras_for_ids, sample_lengths, sample_ray_points
  from kornia.testing import assert_close
label_desc: Use image node_id 3 for calling the TestRaySampler_3DPoints obj's underlying member method code with example usage: obj.test_dimensions_sample_ray_points(device, dtype) without return types