• Light

Mesh light parameters

By: SKY ENGINE AI
scroll down ↓to find out moremesh-light-parameters_1_resourcesTutorial

Mesh Light Parameters

In this case you will get familiar with Mesh Light parameters

Agenda:

  • MeshLight parameters
  • Render scenes using modified base color and illuminance

Scene setup

Let's use custom scene composer to set up the scene.
Scene consists of:

  • neon - location: (0, 0.07, 0)
  • plane - location: (0, 0, 0)
  • camera - location: (-1, -0.5, 1)
from skyrenderer.cases.utils import MeshLightSceneComposer scene_composer = MeshLightSceneComposer(antialiasing_level=2048) scene_composer.setup_scene() renderer_context = scene_composer.renderer_context
2025-02-04 10:22:05,129 | 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-02-04 10:22:05,488 | skyalembic.archive_manager | WARNING: Loading not adapted alembic file

MeshLight parameters

We can modify behaviour of lights with different parameters.
Parameters can be divided into two main groups:

  1. Emissive shader specific properties
    Changes are done on the material definition level.
    Parameters:
  • base_color - 3 channel (Red, Green, Blue) color tuple - (R, G, B).
  1. Mesh light specific parameters
    You can control the following parameters of the Mesh Light:
  • illuminance - light strength, illuminance in candelas,
  • sample density - sample angular density (number of rays per 1 degree).

Render scenes using different parameters

In next lines we will create:

  • basic render
  • emissive shader with green color as a base color
  • light with higher illuminance
from skyrenderer.scene.scene_layout.layout_elements_definitions import MaterialDefinition from skyrenderer.basic_types.light.mesh_light_definition import MeshLightDefinition from skyrenderer.basic_types.procedure import EmissiveShader

Basic render

source_parameters = EmissiveShader.create_parameter_provider(renderer_context) neon_material = MaterialDefinition(shader=EmissiveShader(renderer_context), parameter_set=source_parameters) geometry_name = "Neon_GEOshape_NeonSE_emission" renderer_context.set_material_definition(node_name=geometry_name, material_definition=neon_material) renderer_context.set_light( MeshLightDefinition(renderer_context, geometry_name, illuminance=0.5, sample_density=0.0001) ) basic_render = scene_composer.get_render()
2025-02-04 10:22:05,581 | skyrenderer.utils.time_measurement | INFO: Setup time: 76 ms 2025-02-04 10:22:06,137 | skyrenderer.basic_types.provider.unit_providers.alembic_buffer_provider | INFO: Calculating 'position_map' and 'pdf_map' for Neon_GEOshape_NeonSE_emission, this may take a while... 2025-02-04 10:22:06,138 | skyrenderer.basic_types.provider.unit_providers.alembic_buffer_provider | INFO: Consider adding mesh cacher if you want to avoid waiting in the future. 2025-02-04 10:22:19,228 | skyrenderer.utils.time_measurement | INFO: Context update time: 13.65 seconds 2025-02-04 10:22:39,699 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-02-04 10:22:39,701 | skyrenderer.utils.time_measurement | INFO: Render time: 20.47 seconds

Emissive shader with green color as a base color

green_source_parameters = EmissiveShader.create_parameter_provider(renderer_context, base_color=(0.1, 0.8, 0.1)) neon_material = MaterialDefinition(shader=EmissiveShader(renderer_context), parameter_set=green_source_parameters) renderer_context.set_material_definition(node_name=geometry_name, material_definition=neon_material) green_color_render = scene_composer.get_render()
2025-02-04 10:22:39,743 | skyrenderer.basic_types.light.mesh_light | WARNING: Creating light parameter provider in context which is set up - hanging link possible 2025-02-04 10:22:39,808 | skyrenderer.utils.time_measurement | INFO: Setup time: 68 ms 2025-02-04 10:22:40,347 | skyrenderer.basic_types.provider.unit_providers.alembic_buffer_provider | INFO: Calculating 'position_map' and 'pdf_map' for Neon_GEOshape_NeonSE_emission, this may take a while... 2025-02-04 10:22:40,348 | skyrenderer.basic_types.provider.unit_providers.alembic_buffer_provider | INFO: Consider adding mesh cacher if you want to avoid waiting in the future. 2025-02-04 10:22:53,625 | skyrenderer.utils.time_measurement | INFO: Context update time: 13.81 seconds 2025-02-04 10:23:03,226 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-02-04 10:23:03,227 | skyrenderer.utils.time_measurement | INFO: Render time: 9.60 seconds

Light with higher illuminance

renderer_context.set_light( MeshLightDefinition(renderer_context, geometry_name, illuminance=1, sample_density=0.0001), ) height_illuminance = scene_composer.get_render() scene_composer.visualize_grid([basic_render, green_color_render, height_illuminance], shape=(500, 1500))
mesh-light-parameters_1_resourcesTutorial
2025-02-04 10:23:03,260 | skyrenderer.scene.renderer_context | WARNING: Setting light after setup. Origin refers to last scene tree set up. Lights are stored in dict - change is visible immediately; Wrong parameter provider possible 2025-02-04 10:23:03,264 | skyrenderer.basic_types.light.mesh_light | WARNING: Creating light parameter provider in context which is set up - hanging link possible 2025-02-04 10:23:04,284 | skyrenderer.utils.time_measurement | INFO: Setup time: 1.02 seconds 2025-02-04 10:23:04,836 | skyrenderer.basic_types.provider.unit_providers.alembic_buffer_provider | INFO: Calculating 'position_map' and 'pdf_map' for Neon_GEOshape_NeonSE_emission, this may take a while... 2025-02-04 10:23:04,837 | skyrenderer.basic_types.provider.unit_providers.alembic_buffer_provider | INFO: Consider adding mesh cacher if you want to avoid waiting in the future. 2025-02-04 10:23:18,017 | skyrenderer.utils.time_measurement | INFO: Context update time: 13.73 seconds 2025-02-04 10:23:30,279 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-02-04 10:23:30,280 | skyrenderer.utils.time_measurement | INFO: Render time: 12.26 seconds

For more information check MeshLight and EmissiveShader class documentation.

Summary

In this section you have learnt:

  • Base color of mesh light can be set on the material definition level.
  • Illuminance and sample density are properties of MeshLight.