code: def sample_point_in_half_sphere_shell(
      inner_radius: float,
      outer_radius: float,
      rng: np.random.RandomState,
  ):
      """Uniformly sample points that are in a given distance
      range from the origin and with z >= 0."""
  
      while True:
          v = rng.uniform(
              (-outer_radius, -outer_radius, obj_height / 1.2),
              (outer_radius, outer_radius, obj_height),
          )
          len_v = np.linalg.norm(v)
          correct_angle = True
          if add_distractors:
              cam_dir = v[:2] / np.linalg.norm(v[:2])
              correct_angle = np.all(
                  np.dot(distractor_dir, cam_dir) < np.cos(np.pi / 9.0)
              )
          if inner_radius <= len_v <= outer_radius and correct_angle:
              return tuple(v)
  
file_path: kubric/challenges/multiview_matting/worker.py
imports: import math
  from pathlib import Path
  import logging
  import numpy
  import tensorflow
  import kubric
  from kubric.renderer import Blender
  from kubric import file_io
label_desc: Use image node_id 2 for calling a global function with example usage: sample_point_in_half_sphere_shell(inner_radius, outer_radius, rng) and returns: tuple