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)
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)
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)
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)
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.