• Light

Mesh light parameters

By: SKY ENGINE AI
scroll down ↓to find out moretutorial_testResourceTutorial_mesh-light-parameters_1

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 09:11:09,004 | 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 09:11:09,547 | 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 09:11:09,646 | skyrenderer.utils.time_measurement | INFO: Setup time: 81 ms 2025-02-04 09:11:10,195 | 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 09:11:10,196 | 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 09:11:23,125 | skyrenderer.utils.time_measurement | INFO: Context update time: 13.48 seconds 2025-02-04 09:11:46,096 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-02-04 09:11:46,097 | skyrenderer.utils.time_measurement | INFO: Render time: 22.97 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 09:11:46,145 | skyrenderer.basic_types.light.mesh_light | WARNING: Creating light parameter provider in context which is set up - hanging link possible 2025-02-04 09:11:46,212 | skyrenderer.utils.time_measurement | INFO: Setup time: 71 ms 2025-02-04 09:11:46,750 | 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 09:11:46,751 | 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 09:11:59,667 | skyrenderer.utils.time_measurement | INFO: Context update time: 13.45 seconds 2025-02-04 09:12:11,009 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-02-04 09:12:11,010 | skyrenderer.utils.time_measurement | INFO: Render time: 11.34 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))
Asset is missing or invalid
2025-02-04 09:12:11,049 | 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 09:12:11,053 | skyrenderer.basic_types.light.mesh_light | WARNING: Creating light parameter provider in context which is set up - hanging link possible 2025-02-04 09:12:12,017 | skyrenderer.utils.time_measurement | INFO: Setup time: 968 ms 2025-02-04 09:12:12,556 | 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 09:12:12,557 | 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 09:12:25,568 | skyrenderer.utils.time_measurement | INFO: Context update time: 13.55 seconds 2025-02-04 09:12:39,204 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-02-04 09:12:39,205 | skyrenderer.utils.time_measurement | INFO: Render time: 13.64 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.