• Transform Provider

Circle Transform Provider

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

Circle Transform Provider

In this section you will learn how to use CircleTransformProvider in SkyRenderer.

Agenda:

  • Circle Transform Provider basics
  • Circle Transform Provider usage

Scene setup

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

from skyrenderer.cases.utils import TransformProviderSceneComposer scene_composer = TransformProviderSceneComposer(antialiasing_level=64) scene_composer.setup_scene(render_width=1400, render_height=900) scene_composer.visualize()
circle-transform-provider_1_resourcesTutorial
2025-01-31 09:47:03,405 | 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 2025-01-31 09:47:09,124 | skyrenderer.utils.time_measurement | INFO: Setup time: 439 ms 2025-01-31 09:47:18,301 | skyrenderer.utils.time_measurement | INFO: Context update time: 9.18 seconds 2025-01-31 09:47:21,320 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-01-31 09:47:21,322 | skyrenderer.utils.time_measurement | INFO: Render time: 3.02 seconds

Circle Transform Provider basics

Circle Transform Provider is a class responsible for distribution of transformations of the object in the circle
circumference. It is connected with the SkyRenderer's randomization machine, hence assigning this particular
transform provider will make instances of the object randomized over frames.

Circle Transform Provider usage

To use CircleTransformProvider, we need to set it up and modify locus definition via layout node's method
modify_locus_definition of the desired node. To visualize better how transformations are passed, we will
increase number of instances of the objects. CircleTransformProvider will take care of randomization for each
instance.

NOTE: For detailed information about Scene Layout and Transformations check INTRO_SceneLayout,
INTRO_TransformProvider and TRANSFORMATIONS_Transform tutorials.

from skyrenderer.basic_types.provider.transform_providers.circle_transform_provider import CircleTransformProvider shaderball_node = scene_composer.renderer_context.layout().get_node("shaderball_GEO") shaderball_node.n_instances = 10 transform_provider = CircleTransformProvider(scene_composer.renderer_context, radius=3) shaderball_node.modify_locus_definition(transform_provider=transform_provider) scene_composer.visualize(frame=0)
circle-transform-provider_2_resourcesTutorial
2025-01-31 09:47:21,968 | skyrenderer.utils.time_measurement | INFO: Setup time: 108 ms 2025-01-31 09:47:31,551 | skyrenderer.utils.time_measurement | INFO: Context update time: 9.58 seconds 2025-01-31 09:47:38,385 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-01-31 09:47:38,386 | skyrenderer.utils.time_measurement | INFO: Render time: 6.83 seconds

We will render second frame, to see how randomization machine causes change of transformations of the shaderballs.
It is possible to adjust strategy of randomization for the Transform Provider.

NOTE: For detailed information how randomization in SkyRenderer works, check INTRO_Randomization tutorial.

scene_composer.visualize(frame=1)
circle-transform-provider_3_resourcesTutorial
2025-01-31 09:47:39,002 | skyrenderer.utils.time_measurement | INFO: Setup time: 101 ms 2025-01-31 09:47:48,471 | skyrenderer.utils.time_measurement | INFO: Context update time: 9.46 seconds 2025-01-31 09:47:53,539 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-01-31 09:47:53,540 | skyrenderer.utils.time_measurement | INFO: Render time: 5.07 seconds

Summary

In this section you have learnt:

  • CircleTransformProvider distributes instances of the object in a circle circumference.
  • CircleTransformProvider needs to be assigned via SceneLayoutNode's modify_locus_definition method.
  • CircleTransformProvider is connected with SkyRenderer's randomization machine enabling randomization of each
    instance transformations.