rt_args = rtx.RayTracingArguments() rt_args.num_rays_per_pixel = 2048 rt_args.max_bounce = 3 rt_args.next_event_estimation_enabled = False rt_args.supersampling_enabled = True cuda_args = rtx.CUDAKernelLaunchArguments() cuda_args.num_threads = 64 cuda_args.num_rays_per_thread = 128 renderer = rtx.Renderer() camera = rtx.PerspectiveCamera(eye=(0, 0, 6), center=(0, 0, 0), up=(0, 1, 0), fov_rad=math.pi / 3, aspect_ratio=screen_width / screen_height, z_near=0.01, z_far=100) view_radius = 2 rotation = 0.0 render_buffer = np.zeros((screen_height, screen_width, 3), dtype="float32") total_iterations = 300 for n in range(total_iterations): eye = (view_radius * math.cos(rotation), 0.0, view_radius * math.sin(rotation)) center = (0, 0, 0) camera.look_at(eye, center, up=(0, 1, 0)) renderer.render(scene, camera, rt_args, cuda_args, render_buffer)
def main(): try: os.makedirs(args.output_directory) except: pass last_file_number = args.initial_file_number + args.total_scenes // args.num_scenes_per_file - 1 initial_file_number = args.initial_file_number if os.path.isdir(args.output_directory): files = os.listdir(args.output_directory) for name in files: number = int(name.replace(".h5", "")) if number > last_file_number: continue if number < args.initial_file_number: continue if number < initial_file_number: continue initial_file_number = number + 1 total_scenes_to_render = args.total_scenes - args.num_scenes_per_file * ( initial_file_number - args.initial_file_number) assert args.num_scenes_per_file <= total_scenes_to_render # Set GPU device rtx.set_device(args.gpu_device) # Initialize colors colors = [] for n in range(args.num_colors): hue = n / args.num_colors saturation = 1 lightness = 1 red, green, blue = colorsys.hsv_to_rgb(hue, saturation, lightness) colors.append((red, green, blue, 1)) screen_width = args.image_size screen_height = args.image_size # Setting up a raytracer rt_args = rtx.RayTracingArguments() rt_args.num_rays_per_pixel = 1024 rt_args.max_bounce = 3 rt_args.supersampling_enabled = args.anti_aliasing rt_args.next_event_estimation_enabled = True rt_args.ambient_light_intensity = 0.1 cuda_args = rtx.CUDAKernelLaunchArguments() cuda_args.num_threads = 64 cuda_args.num_rays_per_thread = 32 renderer = rtx.Renderer() render_buffer = np.zeros((screen_height, screen_width, 3), dtype=np.float32) archiver = Archiver( directory=args.output_directory, num_scenes_per_file=args.num_scenes_per_file, image_size=(args.image_size, args.image_size), num_observations_per_scene=args.num_observations_per_scene, initial_file_number=initial_file_number) camera = rtx.PerspectiveCamera(fov_rad=math.pi / 3, aspect_ratio=screen_width / screen_height) camera_distance = 2 for _ in tqdm(range(total_scenes_to_render)): scene = build_scene(floor_textures, wall_textures, fix_light_position=args.fix_light_position) place_objects(scene, colors, max_num_objects=args.max_num_objects, discrete_position=args.discrete_position, rotate_object=args.rotate_object) scene_data = SceneData((args.image_size, args.image_size), args.num_observations_per_scene) for _ in range(args.num_observations_per_scene): # Sample camera position rand_position_xz = np.random.normal(size=2) rand_position_xz = camera_distance * rand_position_xz / np.linalg.norm( rand_position_xz) camera_position = np.array( (rand_position_xz[0], wall_height / 2, rand_position_xz[1])) center = np.array((0, wall_height / 2, 0)) # Compute yaw and pitch camera_direction = camera_position - center yaw, pitch = compute_yaw_and_pitch(camera_direction) camera.look_at(tuple(camera_position), tuple(center), up=(0, 1, 0)) renderer.render(scene, camera, rt_args, cuda_args, render_buffer) # Convert to sRGB image = np.power(np.clip(render_buffer, 0, 1), 1.0 / 2.2) image = np.uint8(image * 255) image = cv2.bilateralFilter(image, 3, 25, 25) scene_data.add(image, camera_position, math.cos(yaw), math.sin(yaw), math.cos(pitch), math.sin(pitch)) if args.visualize: plt.clf() plt.imshow(image) plt.pause(1e-10) archiver.add(scene_data)
def main(): # Set GPU device rtx.set_device(args.gpu_device) # Texture wall_texture_filename_array = [ "textures/wall_texture_5.jpg", ] floor_texture_filename_array = [ "textures/floor_texture_1.png", ] # Load MNIST images mnist_image_array = load_mnist_images() screen_width = args.image_size screen_height = args.image_size # Setting up a raytracer rt_args = rtx.RayTracingArguments() rt_args.num_rays_per_pixel = 1024 rt_args.max_bounce = 3 rt_args.supersampling_enabled = True rt_args.next_event_estimation_enabled = True cuda_args = rtx.CUDAKernelLaunchArguments() cuda_args.num_threads = 64 cuda_args.num_rays_per_thread = 16 renderer = rtx.Renderer() render_buffer = np.zeros( (screen_height, screen_width, 3), dtype=np.float32) perspective_camera = rtx.PerspectiveCamera( fov_rad=math.pi / 3, aspect_ratio=screen_width / screen_height) orthogonal_camera = rtx.OrthographicCamera() plt.tight_layout() scene = build_scene( random.sample(mnist_image_array, 6), wall_texture_filename_array, floor_texture_filename_array) view_radius = 3 rotation = 0 fig = plt.figure(figsize=(6, 3)) axis_perspective = fig.add_subplot(1, 2, 1) axis_orthogonal = fig.add_subplot(1, 2, 2) ims = [] for _ in range(args.num_views_per_scene): eye = (view_radius * math.cos(rotation), -0.125, view_radius * math.sin(rotation)) center = (0, 0, 0) perspective_camera.look_at(eye, center, up=(0, 1, 0)) renderer.render(scene, perspective_camera, rt_args, cuda_args, render_buffer) image = np.power(np.clip(render_buffer, 0, 1), 1.0 / 2.2) image = np.uint8(image * 255) image = cv2.bilateralFilter(image, 3, 25, 25) im1 = axis_perspective.imshow( image, interpolation="none", animated=True) eye = (view_radius * math.cos(rotation), view_radius * math.sin(math.pi / 6), view_radius * math.sin(rotation)) center = (0, 0, 0) orthogonal_camera.look_at(eye, center, up=(0, 1, 0)) renderer.render(scene, orthogonal_camera, rt_args, cuda_args, render_buffer) image = np.power(np.clip(render_buffer, 0, 1), 1.0 / 2.2) image = np.uint8(image * 255) image = cv2.bilateralFilter(image, 3, 25, 25) im2 = axis_orthogonal.imshow( image, interpolation="none", animated=True) ims.append([im1, im2]) plt.pause(1e-8) rotation += math.pi / 36 ani = animation.ArtistAnimation( fig, ims, interval=1 / 24, blit=True, repeat_delay=0) ani.save('mnist_dice.gif', writer="imagemagick")
def main(): # Set GPU device rtx.set_device(args.gpu_device) # Texture wall_texture_filename_array = [ "textures/wall_texture_1.png", "textures/wall_texture_2.jpg", "textures/wall_texture_3.jpg", "textures/wall_texture_4.jpg", "textures/wall_texture_5.jpg", "textures/wall_texture_6.jpg", "textures/wall_texture_7.jpg", ] floor_texture_filename_array = [ "textures/floor_texture_1.png", ] # Initialize colors color_array = [] for n in range(args.num_colors): hue = n / (args.num_colors - 1) saturation = 1 lightness = 1 red, green, blue = colorsys.hsv_to_rgb(hue, saturation, lightness) color_array.append((red, green, blue, 1)) screen_width = args.image_size screen_height = args.image_size grid_size = 8 wall_height = 3 # Setting up a raytracer rt_args = rtx.RayTracingArguments() rt_args.num_rays_per_pixel = 1024 rt_args.max_bounce = 3 rt_args.supersampling_enabled = True rt_args.next_event_estimation_enabled = True cuda_args = rtx.CUDAKernelLaunchArguments() cuda_args.num_threads = 64 cuda_args.num_rays_per_thread = 16 renderer = rtx.Renderer() render_buffer = np.zeros((screen_height, screen_width, 3), dtype=np.float32) dataset = gqn.archiver.Archiver( directory=args.output_directory, total_observations=args.total_observations, num_observations_per_file=min(args.num_observations_per_file, args.total_observations), image_size=(args.image_size, args.image_size), num_views_per_scene=args.num_views_per_scene, initial_file_number=args.initial_file_number) camera = rtx.PerspectiveCamera(fov_rad=math.pi / 3, aspect_ratio=screen_width / screen_height) for _ in tqdm(range(args.total_observations)): scene = build_scene(color_array, wall_texture_filename_array, floor_texture_filename_array, grid_size, wall_height) scene_data = gqn.archiver.SceneData((args.image_size, args.image_size), args.num_views_per_scene) for _ in range(args.num_views_per_scene): rotation = random.uniform(0, math.pi * 2) radius = grid_size - 5 eye = (radius * math.cos(rotation), -0.125, radius * math.sin(rotation)) center = (0, -0.125, 0) camera.look_at(eye, center, up=(0, 1, 0)) renderer.render(scene, camera, rt_args, cuda_args, render_buffer) # Convert to sRGB image = np.power(np.clip(render_buffer, 0, 1), 1.0 / 2.2) image = np.uint8(image * 255) image = cv2.bilateralFilter(image, 3, 25, 25) yaw = gqn.math.yaw(eye, center) pitch = gqn.math.pitch(eye, center) scene_data.add(image, eye, math.cos(yaw), math.sin(yaw), math.cos(pitch), math.sin(pitch)) # plt.imshow(image, interpolation="none") # plt.pause(1e-8) dataset.add(scene_data)
def main(): # Set GPU device rtx.set_device(args.gpu_device) # Initialize colors colors = [] for n in range(args.num_colors): hue = n / args.num_colors saturation = 1 lightness = 1 red, green, blue = colorsys.hsv_to_rgb(hue, saturation, lightness) colors.append((red, green, blue, 1)) screen_width = args.image_size screen_height = args.image_size # Setting up a raytracer rt_args = rtx.RayTracingArguments() rt_args.num_rays_per_pixel = 1024 rt_args.max_bounce = 3 rt_args.supersampling_enabled = args.anti_aliasing rt_args.next_event_estimation_enabled = True rt_args.ambient_light_intensity = 0.1 cuda_args = rtx.CUDAKernelLaunchArguments() cuda_args.num_threads = 64 cuda_args.num_rays_per_thread = 32 renderer = rtx.Renderer() render_buffer = np.zeros((screen_height, screen_width, 3), dtype=np.float32) perspective_camera = rtx.PerspectiveCamera(fov_rad=math.pi / 3, aspect_ratio=screen_width / screen_height) orthographic_camera = rtx.OrthographicCamera() camera_distance = 2 plt.tight_layout() scene = build_scene(floor_textures, wall_textures, fix_light_position=args.fix_light_position) place_objects(scene, colors, min_num_objects=args.num_objects, max_num_objects=args.num_objects, discrete_position=args.discrete_position, rotate_object=args.rotate_object) current_rad = 0 rad_step = math.pi / 36 total_frames = int(math.pi * 2 / rad_step) fig = plt.figure(figsize=(6, 3)) axis_perspective = fig.add_subplot(1, 2, 1) axis_orthogonal = fig.add_subplot(1, 2, 2) ims = [] for _ in range(total_frames): # Perspective camera camera_position = (camera_distance * math.cos(current_rad), wall_height / 2, camera_distance * math.sin(current_rad)) center = (0, wall_height / 2, 0) perspective_camera.look_at(camera_position, center, up=(0, 1, 0)) renderer.render(scene, perspective_camera, rt_args, cuda_args, render_buffer) image = np.power(np.clip(render_buffer, 0, 1), 1.0 / 2.2) image = np.uint8(image * 255) image = cv2.bilateralFilter(image, 3, 25, 25) im1 = axis_perspective.imshow(image, interpolation="none", animated=True) # Orthographic camera offset_y = 1 camera_position = (2 * math.cos(current_rad), 2 * math.sin(math.pi / 6) + offset_y, 2 * math.sin(current_rad)) center = (0, offset_y, 0) orthographic_camera.look_at(camera_position, center, up=(0, 1, 0)) renderer.render(scene, orthographic_camera, rt_args, cuda_args, render_buffer) image = np.power(np.clip(render_buffer, 0, 1), 1.0 / 2.2) image = np.uint8(image * 255) image = cv2.bilateralFilter(image, 3, 25, 25) im2 = axis_orthogonal.imshow(image, interpolation="none", animated=True) ims.append([im1, im2]) # plt.pause(1e-8) current_rad += rad_step ani = animation.ArtistAnimation(fig, ims, interval=1 / 24, blit=True, repeat_delay=0) filename = "rooms" if args.discrete_position: filename += "_discrete_position" if args.rotate_object: filename += "_rotate_object" if args.fix_light_position: filename += "_fix_light_position" filename += ".gif" ani.save(filename, writer="imagemagick")
def main(): try: os.makedirs(args.output_directory) except: pass # Load MNIST images mnist_images = load_mnist_images() # Set GPU device rtx.set_device(args.gpu_device) screen_width = args.image_size screen_height = args.image_size # Setting up a raytracer rt_args = rtx.RayTracingArguments() rt_args.num_rays_per_pixel = 1024 rt_args.max_bounce = 3 rt_args.supersampling_enabled = args.anti_aliasing rt_args.next_event_estimation_enabled = True rt_args.ambient_light_intensity = 0.1 cuda_args = rtx.CUDAKernelLaunchArguments() cuda_args.num_threads = 64 cuda_args.num_rays_per_thread = 32 renderer = rtx.Renderer() render_buffer = np.zeros((screen_height, screen_width, 3), dtype=np.float32) archiver = Archiver( directory=args.output_directory, total_scenes=args.total_scenes, num_scenes_per_file=min(args.num_scenes_per_file, args.total_scenes), image_size=(args.image_size, args.image_size), num_observations_per_scene=args.num_observations_per_scene, initial_file_number=args.initial_file_number) camera = rtx.PerspectiveCamera(fov_rad=math.pi / 3, aspect_ratio=screen_width / screen_height) camera_distance = 2 for _ in tqdm(range(args.total_scenes)): scene = build_scene(floor_textures, wall_textures, fix_light_position=args.fix_light_position) place_dice(scene, mnist_images, discrete_position=args.discrete_position, rotate_dice=args.rotate_dice) scene_data = SceneData((args.image_size, args.image_size), args.num_observations_per_scene) for _ in range(args.num_observations_per_scene): # Sample camera position rand_position_xz = np.random.normal(size=2) rand_position_xz = camera_distance * rand_position_xz / np.linalg.norm( rand_position_xz) camera_position = np.array( (rand_position_xz[0], wall_height / 2, rand_position_xz[1])) center = np.array((0, wall_height / 2, 0)) # Compute yaw and pitch camera_direction = camera_position - center yaw, pitch = compute_yaw_and_pitch(camera_direction) camera.look_at(tuple(camera_position), tuple(center), up=(0, 1, 0)) renderer.render(scene, camera, rt_args, cuda_args, render_buffer) # Convert to sRGB image = np.power(np.clip(render_buffer, 0, 1), 1.0 / 2.2) image = np.uint8(image * 255) image = cv2.bilateralFilter(image, 3, 25, 25) scene_data.add(image, camera_position, math.cos(yaw), math.sin(yaw), math.cos(pitch), math.sin(pitch)) if args.visualize: plt.clf() plt.imshow(image) plt.pause(1e-10) archiver.add(scene_data)