• Transform Provider

Circle Transform Provider Parameters

By: SKY ENGINE AI
scroll down ↓to find out morecircle-transform-provider_2_resourcesTutorial

Circle Transform Provider Parameters

In this tutorial you will get familiar with CircleTransformProvider's parameters. You will see how change of
parameter values affect transformations provided by CircleTransformProvider.

Agenda:

  • CircleTransformProvider - parameters

Scene setup

Let's use custom scene composer to set up the scene.

    from skyrenderer.cases.utils import TransformProviderSceneComposer
    from skyrenderer.basic_types.provider.transform_providers.circle_transform_provider import CircleTransformProvider
    scene_composer = TransformProviderSceneComposer(antialiasing_level=64)
    scene_composer.setup_scene()
    shaderball_node = scene_composer.renderer_context.layout().get_node("shaderball_GEO")
    shaderball_node.n_instances = 10
2025-01-31 09:47:03,445 | skyrenderer.scene.renderer_context |  INFO: Root paths:
- root path: /dli/skyenvironment/skyrenderer/skyrenderer
- assets path: /dli/mount/assets
- config path: /dli/skyenvironment/skyrenderer/skyrenderer/config
- gpu sources path: /dli/skyenvironment/skyrenderer/skyrenderer/optix_sources/sources
- cache path: /dli/mount/cache
- ptx cache path: compiled_ptx/ptx
- ocio path: ocio_configs/aces_1.2/config.ocio

CircleTransformProvider - parameters

In this section we will walk you through changing and setting basic CircleTransformProvider parameters:

  • center
  • radius
  • normal vector
  • number of points
    To do that, we will set up separate parameter providers for each combination.

Center

Location of the center of the circle used to draw transformation values.

    renders = {}
    transform_provider_center_000 = CircleTransformProvider(scene_composer.renderer_context, center=[0, 0, 0])
    shaderball_node.modify_locus_definition(transform_provider=transform_provider_center_000)
    renders["center=[0, 0, 0]"] = scene_composer.get_render()
    transform_provider_center_00n1 = CircleTransformProvider(scene_composer.renderer_context, center=[0, 0, -1])
    shaderball_node.modify_locus_definition(transform_provider=transform_provider_center_00n1)
    renders["center=[0, 0, -1]"] = scene_composer.get_render()
    transform_provider_center_01n1 = CircleTransformProvider(scene_composer.renderer_context, center=[0, 1, -1])
    shaderball_node.modify_locus_definition(transform_provider=transform_provider_center_01n1)
    renders["center=[0, 1, -1]"] = scene_composer.get_render()
    scene_composer.visualize_grid_desc(renders, shape=(500, 1500), n_cols=3)
circle-transform-provider-parameters_1_resourcesTutorial
2025-01-31 09:47:09,385 | skyrenderer.utils.time_measurement |  INFO: Setup time: 681 ms

2025-01-31 09:47:18,863 | skyrenderer.utils.time_measurement |  INFO: Context update time: 9.48 seconds

2025-01-31 09:47:22,488 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-01-31 09:47:22,489 | skyrenderer.utils.time_measurement |  INFO: Render time: 3.62 seconds

2025-01-31 09:47:22,623 | skyrenderer.utils.time_measurement |  INFO: Setup time: 102 ms

2025-01-31 09:47:32,234 | skyrenderer.utils.time_measurement |  INFO: Context update time: 9.61 seconds

2025-01-31 09:47:36,883 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-01-31 09:47:36,885 | skyrenderer.utils.time_measurement |  INFO: Render time: 4.65 seconds

2025-01-31 09:47:37,002 | skyrenderer.utils.time_measurement |  INFO: Setup time: 96 ms

2025-01-31 09:47:46,735 | skyrenderer.utils.time_measurement |  INFO: Context update time: 9.73 seconds

2025-01-31 09:47:50,896 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-01-31 09:47:50,898 | skyrenderer.utils.time_measurement |  INFO: Render time: 4.16 seconds

Radius

Radius of the circle used to draw transformation values.

    renders = {}
    transform_provider_radius_1 = CircleTransformProvider(scene_composer.renderer_context, radius=1)
    shaderball_node.modify_locus_definition(transform_provider=transform_provider_radius_1)
    renders["radius=1"] = scene_composer.get_render()
    transform_provider_radius_2 = CircleTransformProvider(scene_composer.renderer_context, radius=2)
    shaderball_node.modify_locus_definition(transform_provider=transform_provider_radius_2)
    renders["radius=2"] = scene_composer.get_render()
    transform_provider_radius_3 = CircleTransformProvider(scene_composer.renderer_context, radius=3)
    shaderball_node.modify_locus_definition(transform_provider=transform_provider_radius_3)
    renders["radius=3"] = scene_composer.get_render()
    scene_composer.visualize_grid_desc(renders, shape=(500, 1500), n_cols=3)
circle-transform-provider-parameters_2_resourcesTutorial
2025-01-31 09:47:51,218 | skyrenderer.utils.time_measurement |  INFO: Setup time: 100 ms

2025-01-31 09:48:01,031 | skyrenderer.utils.time_measurement |  INFO: Context update time: 9.81 seconds

2025-01-31 09:48:03,475 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-01-31 09:48:03,476 | skyrenderer.utils.time_measurement |  INFO: Render time: 2.44 seconds

2025-01-31 09:48:04,497 | skyrenderer.utils.time_measurement |  INFO: Setup time: 1.01 seconds

2025-01-31 09:48:14,164 | skyrenderer.utils.time_measurement |  INFO: Context update time: 9.67 seconds

2025-01-31 09:48:20,608 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-01-31 09:48:20,609 | skyrenderer.utils.time_measurement |  INFO: Render time: 6.44 seconds

2025-01-31 09:48:20,744 | skyrenderer.utils.time_measurement |  INFO: Setup time: 118 ms

2025-01-31 09:48:30,702 | skyrenderer.utils.time_measurement |  INFO: Context update time: 9.96 seconds

2025-01-31 09:48:35,120 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-01-31 09:48:35,122 | skyrenderer.utils.time_measurement |  INFO: Render time: 4.42 seconds

Normal vector

Normal vector direction of the circle used to draw transformation values.

    renders = {}
    transform_provider_normal_010 = CircleTransformProvider(scene_composer.renderer_context, normal_vector=[0, 1, 0])
    shaderball_node.modify_locus_definition(transform_provider=transform_provider_normal_010)
    renders["normal_vector=[0, 1, 0]"] = scene_composer.get_render()
    transform_provider_normal_001 = CircleTransformProvider(scene_composer.renderer_context, normal_vector=[0, 0, 1])
    shaderball_node.modify_locus_definition(transform_provider=transform_provider_normal_001)
    renders["normal_vector=[0, 0, 1]"] = scene_composer.get_render()
    transform_provider_normal_100 = CircleTransformProvider(scene_composer.renderer_context, normal_vector=[1, 0, 0])
    shaderball_node.modify_locus_definition(transform_provider=transform_provider_normal_100)
    renders["normal_vector=[1, 0, 0]"] = scene_composer.get_render()
    scene_composer.visualize_grid_desc(renders, shape=(500, 1500), n_cols=3)
circle-transform-provider-parameters_3_resourcesTutorial
2025-01-31 09:48:35,456 | skyrenderer.utils.time_measurement |  INFO: Setup time: 97 ms

2025-01-31 09:48:44,830 | skyrenderer.utils.time_measurement |  INFO: Context update time: 9.37 seconds

2025-01-31 09:48:47,248 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-01-31 09:48:47,249 | skyrenderer.utils.time_measurement |  INFO: Render time: 2.42 seconds

2025-01-31 09:48:47,361 | skyrenderer.utils.time_measurement |  INFO: Setup time: 96 ms

2025-01-31 09:48:56,976 | skyrenderer.utils.time_measurement |  INFO: Context update time: 9.61 seconds

2025-01-31 09:49:00,182 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-01-31 09:49:00,184 | skyrenderer.utils.time_measurement |  INFO: Render time: 3.21 seconds

2025-01-31 09:49:00,294 | skyrenderer.utils.time_measurement |  INFO: Setup time: 95 ms

2025-01-31 09:49:09,832 | skyrenderer.utils.time_measurement |  INFO: Context update time: 9.54 seconds

2025-01-31 09:49:13,173 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-01-31 09:49:13,175 | skyrenderer.utils.time_measurement |  INFO: Render time: 3.34 seconds

Number of points

Number of possible spawn points on the circle that can be used to draw transformation values.

    renders = {}
    transform_provider_number_of_points_10 = CircleTransformProvider(
        scene_composer.renderer_context, number_of_points=10
    )
    shaderball_node.modify_locus_definition(transform_provider=transform_provider_number_of_points_10)
    renders["number_of_points=10"] = scene_composer.get_render()
    transform_provider_number_of_points_100 = CircleTransformProvider(
        scene_composer.renderer_context, number_of_points=100
    )
    shaderball_node.modify_locus_definition(transform_provider=transform_provider_number_of_points_100)
    renders["number_of_points=100"] = scene_composer.get_render()
    transform_provider_number_of_points_1000 = CircleTransformProvider(
        scene_composer.renderer_context, number_of_points=1000
    )
    shaderball_node.modify_locus_definition(transform_provider=transform_provider_number_of_points_1000)
    renders["number_of_points=1000"] = scene_composer.get_render()
    scene_composer.visualize_grid_desc(renders, shape=(500, 1500), n_cols=3)
circle-transform-provider-parameters_4_resourcesTutorial
2025-01-31 09:49:13,471 | skyrenderer.utils.time_measurement |  INFO: Setup time: 97 ms

2025-01-31 09:49:22,970 | skyrenderer.utils.time_measurement |  INFO: Context update time: 9.50 seconds

2025-01-31 09:49:25,452 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-01-31 09:49:25,453 | skyrenderer.utils.time_measurement |  INFO: Render time: 2.48 seconds

2025-01-31 09:49:25,585 | skyrenderer.utils.time_measurement |  INFO: Setup time: 107 ms

2025-01-31 09:49:35,064 | skyrenderer.utils.time_measurement |  INFO: Context update time: 9.48 seconds

2025-01-31 09:49:38,293 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-01-31 09:49:38,294 | skyrenderer.utils.time_measurement |  INFO: Render time: 3.23 seconds

2025-01-31 09:49:38,314 | skyrenderer.basic_types.provider.iprovider |  WARNING: Provider for this config has been already initialized! There should be just one Provider created per unit source, consider fixing the scene.
Config:
{'center': (0, 0, 0), 'radius': 1, 'normal_vector': (0, 1, 0), 'number_of_points': 1000000}

2025-01-31 09:49:38,418 | skyrenderer.utils.time_measurement |  INFO: Setup time: 102 ms

2025-01-31 09:49:47,961 | skyrenderer.utils.time_measurement |  INFO: Context update time: 9.54 seconds

2025-01-31 09:49:51,014 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-01-31 09:49:51,015 | skyrenderer.utils.time_measurement |  INFO: Render time: 3.05 seconds

Summary

In this section you have learnt:

  • CircleTransformProviders has many parameters that affect drawing of transformation values in circle
    circumference.