diff --git a/docs/source/_static/visual_materials/AsphaltDark.webp b/docs/source/_static/visual_materials/AsphaltDark.webp index 57560f5b4..2ea546f90 100644 Binary files a/docs/source/_static/visual_materials/AsphaltDark.webp and b/docs/source/_static/visual_materials/AsphaltDark.webp differ diff --git a/docs/source/_static/visual_materials/BrickRed.webp b/docs/source/_static/visual_materials/BrickRed.webp index 7fad37d7c..a76b1bfd8 100644 Binary files a/docs/source/_static/visual_materials/BrickRed.webp and b/docs/source/_static/visual_materials/BrickRed.webp differ diff --git a/docs/source/_static/visual_materials/CeramicTileWhite.webp b/docs/source/_static/visual_materials/CeramicTileWhite.webp index e97392bf0..39e9116e2 100644 Binary files a/docs/source/_static/visual_materials/CeramicTileWhite.webp and b/docs/source/_static/visual_materials/CeramicTileWhite.webp differ diff --git a/docs/source/_static/visual_materials/ChromePolished.webp b/docs/source/_static/visual_materials/ChromePolished.webp index 84760dde9..1de74a40f 100644 Binary files a/docs/source/_static/visual_materials/ChromePolished.webp and b/docs/source/_static/visual_materials/ChromePolished.webp differ diff --git a/docs/source/_static/visual_materials/CopperPolished.webp b/docs/source/_static/visual_materials/CopperPolished.webp index 83e35acff..13fd57467 100644 Binary files a/docs/source/_static/visual_materials/CopperPolished.webp and b/docs/source/_static/visual_materials/CopperPolished.webp differ diff --git a/docs/source/_static/visual_materials/FabricGray.webp b/docs/source/_static/visual_materials/FabricGray.webp index b96a17a86..538c404cc 100644 Binary files a/docs/source/_static/visual_materials/FabricGray.webp and b/docs/source/_static/visual_materials/FabricGray.webp differ diff --git a/docs/source/_static/visual_materials/GlassClear.webp b/docs/source/_static/visual_materials/GlassClear.webp index 2e0102c83..b8a9b7680 100644 Binary files a/docs/source/_static/visual_materials/GlassClear.webp and b/docs/source/_static/visual_materials/GlassClear.webp differ diff --git a/docs/source/_static/visual_materials/GlassClearSurface.webp b/docs/source/_static/visual_materials/GlassClearSurface.webp index f556e09a4..8b3dfecb1 100644 Binary files a/docs/source/_static/visual_materials/GlassClearSurface.webp and b/docs/source/_static/visual_materials/GlassClearSurface.webp differ diff --git a/docs/source/_static/visual_materials/GlassFrosted.webp b/docs/source/_static/visual_materials/GlassFrosted.webp index 26837a941..92711e649 100644 Binary files a/docs/source/_static/visual_materials/GlassFrosted.webp and b/docs/source/_static/visual_materials/GlassFrosted.webp differ diff --git a/docs/source/_static/visual_materials/GlassFrostedSurface.webp b/docs/source/_static/visual_materials/GlassFrostedSurface.webp index 4f3ffab33..e994765f4 100644 Binary files a/docs/source/_static/visual_materials/GlassFrostedSurface.webp and b/docs/source/_static/visual_materials/GlassFrostedSurface.webp differ diff --git a/docs/source/_static/visual_materials/GlassSmoke.webp b/docs/source/_static/visual_materials/GlassSmoke.webp index ad06be71a..6aa1a77ca 100644 Binary files a/docs/source/_static/visual_materials/GlassSmoke.webp and b/docs/source/_static/visual_materials/GlassSmoke.webp differ diff --git a/docs/source/_static/visual_materials/GoldMetal.webp b/docs/source/_static/visual_materials/GoldMetal.webp index 88e4ff184..b8d6583c4 100644 Binary files a/docs/source/_static/visual_materials/GoldMetal.webp and b/docs/source/_static/visual_materials/GoldMetal.webp differ diff --git a/docs/source/_static/visual_materials/GoldPolished.webp b/docs/source/_static/visual_materials/GoldPolished.webp index 27e78194d..d054806e4 100644 Binary files a/docs/source/_static/visual_materials/GoldPolished.webp and b/docs/source/_static/visual_materials/GoldPolished.webp differ diff --git a/docs/source/_static/visual_materials/LeatherBrown.webp b/docs/source/_static/visual_materials/LeatherBrown.webp index d9c1465e0..dd99aa7b9 100644 Binary files a/docs/source/_static/visual_materials/LeatherBrown.webp and b/docs/source/_static/visual_materials/LeatherBrown.webp differ diff --git a/docs/source/_static/visual_materials/MarbleWhite.webp b/docs/source/_static/visual_materials/MarbleWhite.webp index 1b89e7a4f..8bf772caa 100644 Binary files a/docs/source/_static/visual_materials/MarbleWhite.webp and b/docs/source/_static/visual_materials/MarbleWhite.webp differ diff --git a/docs/source/_static/visual_materials/MirrorMetal.webp b/docs/source/_static/visual_materials/MirrorMetal.webp index efa5465fc..a8a2bb43f 100644 Binary files a/docs/source/_static/visual_materials/MirrorMetal.webp and b/docs/source/_static/visual_materials/MirrorMetal.webp differ diff --git a/docs/source/_static/visual_materials/PlasticABSBlack.webp b/docs/source/_static/visual_materials/PlasticABSBlack.webp index 38b2270f8..6371ada89 100644 Binary files a/docs/source/_static/visual_materials/PlasticABSBlack.webp and b/docs/source/_static/visual_materials/PlasticABSBlack.webp differ diff --git a/docs/source/_static/visual_materials/PlasticGlossyRed.webp b/docs/source/_static/visual_materials/PlasticGlossyRed.webp index 9ac0e6d4d..c423f5426 100644 Binary files a/docs/source/_static/visual_materials/PlasticGlossyRed.webp and b/docs/source/_static/visual_materials/PlasticGlossyRed.webp differ diff --git a/docs/source/_static/visual_materials/PlasticMatteBlue.webp b/docs/source/_static/visual_materials/PlasticMatteBlue.webp index 799a087dc..62876fbfc 100644 Binary files a/docs/source/_static/visual_materials/PlasticMatteBlue.webp and b/docs/source/_static/visual_materials/PlasticMatteBlue.webp differ diff --git a/docs/source/_static/visual_materials/RubberBlack.webp b/docs/source/_static/visual_materials/RubberBlack.webp index 5a509c891..3ff07c241 100644 Binary files a/docs/source/_static/visual_materials/RubberBlack.webp and b/docs/source/_static/visual_materials/RubberBlack.webp differ diff --git a/docs/source/_static/visual_materials/SkinHumanLight.webp b/docs/source/_static/visual_materials/SkinHumanLight.webp index da68c5986..888a04f99 100644 Binary files a/docs/source/_static/visual_materials/SkinHumanLight.webp and b/docs/source/_static/visual_materials/SkinHumanLight.webp differ diff --git a/docs/source/_static/visual_materials/SoapBubble.webp b/docs/source/_static/visual_materials/SoapBubble.webp index 4043c7c40..707b14d8e 100644 Binary files a/docs/source/_static/visual_materials/SoapBubble.webp and b/docs/source/_static/visual_materials/SoapBubble.webp differ diff --git a/docs/source/_static/visual_materials/SteelBrushed.webp b/docs/source/_static/visual_materials/SteelBrushed.webp index 2fbdf3bff..26544149c 100644 Binary files a/docs/source/_static/visual_materials/SteelBrushed.webp and b/docs/source/_static/visual_materials/SteelBrushed.webp differ diff --git a/docs/source/_static/visual_materials/WoodOak.webp b/docs/source/_static/visual_materials/WoodOak.webp index 60f109022..7e506eee4 100644 Binary files a/docs/source/_static/visual_materials/WoodOak.webp and b/docs/source/_static/visual_materials/WoodOak.webp differ diff --git a/docs/source/_static/visual_materials/advanced-materials.webp b/docs/source/_static/visual_materials/advanced-materials.webp index 067adfddb..104c6ad02 100644 Binary files a/docs/source/_static/visual_materials/advanced-materials.webp and b/docs/source/_static/visual_materials/advanced-materials.webp differ diff --git a/docs/source/_static/visual_materials/builtin-materials.webp b/docs/source/_static/visual_materials/builtin-materials.webp index 11eb70074..46c14ad6a 100644 Binary files a/docs/source/_static/visual_materials/builtin-materials.webp and b/docs/source/_static/visual_materials/builtin-materials.webp differ diff --git a/docs/source/_static/visual_materials/default-materials.webp b/docs/source/_static/visual_materials/default-materials.webp index 4890b7a10..a18452b2a 100644 Binary files a/docs/source/_static/visual_materials/default-materials.webp and b/docs/source/_static/visual_materials/default-materials.webp differ diff --git a/docs/source/_static/visual_materials/surface-materials.webp b/docs/source/_static/visual_materials/surface-materials.webp index d3e83e73a..381de5c05 100644 Binary files a/docs/source/_static/visual_materials/surface-materials.webp and b/docs/source/_static/visual_materials/surface-materials.webp differ diff --git a/docs/source/guides/preview_material.md b/docs/source/guides/preview_material.md index abee9c059..918bdd24a 100644 --- a/docs/source/guides/preview_material.md +++ b/docs/source/guides/preview_material.md @@ -83,13 +83,32 @@ Each renderer must run in a separate process. `--gallery` requires Pillow and matplotlib; install those packages if they are absent. Gallery composition runs after native renderer cleanup and uses the saved captures. +## Studio lighting + +The default `material-studio-v2` recipe uses the same lighting for every preset +so material appearances can be compared: + +| Setting | Value | +| --- | ---: | +| Linear exposure multiplier | 1.6 | +| Environment emission intensity | 48 | +| Key rectangle light intensity | 150 | +| Fill rectangle light intensity | 120 | + +Light colors, geometry and camera poses are fixed by the preview scene. +These settings are recorded in `results.json` under `lighting`, alongside the +`scene` recipe identifier. The catalog images use this recipe at 640×640, +six accumulation frames and 12 render iterations per frame. Material parameters +remain the authored preset values. + ## Outputs and direct-native verification Every render writes `_preset.png` and `results.json` under `--output` (default `outputs/default-materials`). Use a separate directory per variant or renderer to retain previous results. The report records the scene -recipe, renderer and DexSim version, capture settings, material source/revision, -serialized configuration, geometry choice, parameter readback and exclusions. +recipe and lighting, renderer and DexSim version, capture settings, material +source/revision, serialized configuration, geometry choice, parameter readback +and exclusions. Unspecified configuration fields stay `null`; authored resource defaults are not expanded into explicit overrides. diff --git a/docs/source/overview/sim/sim_manager/rendering/materials.md b/docs/source/overview/sim/sim_manager/rendering/materials.md index cfd34ae66..3240500d3 100644 --- a/docs/source/overview/sim/sim_manager/rendering/materials.md +++ b/docs/source/overview/sim/sim_manager/rendering/materials.md @@ -6,9 +6,11 @@ EmbodiChain provides **24 public material presets** through one material supplies the inward-facing interface for the bubble preview. The images below are actual DexSim **0.5.1rc1 OfflineRT** renders. All presets -use the same studio lighting and exposure; a checkerboard and colored cards -make reflection, transmission and roughness visible. Click a material name in -a table to open its individual image. +use the same `material-studio-v2` lighting recipe: linear exposure 1.6, +environment intensity 48, key light intensity 150 and fill light intensity 120. +A checkerboard and colored cards make reflection, transmission and roughness +visible. Click a material name in a table to open its individual image. See the +{doc}`preview guide ` for reproduction settings. ## Create and override a material diff --git a/embodichain/lab/scripts/preview_material.py b/embodichain/lab/scripts/preview_material.py index cce6a101f..f83957b49 100644 --- a/embodichain/lab/scripts/preview_material.py +++ b/embodichain/lab/scripts/preview_material.py @@ -38,6 +38,13 @@ __all__ = ["main", "cli"] +_STUDIO_LIGHTING = { + "exposure": 1.6, + "environment_intensity": 48.0, + "key_intensity": 150.0, + "fill_intensity": 120.0, +} + def _positive_integer(value: str) -> int: number = int(value) @@ -344,7 +351,7 @@ def _render_materials( min_bounces=3, max_bounces=14, tone_mapping_enabled=True, - tone_mapping_exposure=0.9, + tone_mapping_exposure=_STUDIO_LIGHTING["exposure"], denoising=DenoisingCfg(window="optix", offscreen="optix"), ), ) @@ -355,7 +362,9 @@ def _render_materials( rows: list[dict[str, Any]] = [] try: sim.enable_physics(False) - sim.set_emission_light([0.85, 0.9, 1.0], 24.0) + sim.set_emission_light( + [0.85, 0.9, 1.0], _STUDIO_LIGHTING["environment_intensity"] + ) # Independent, fixed scene: colored cards reveal transmission, broad # rectangular lights reveal roughness and normal-map direction. for index, (x, color) in enumerate( @@ -381,8 +390,20 @@ def _render_materials( texture = env.create_color_texture(pixels, has_alpha=False) card_material.inst.set_base_color_texture(texture_obj=texture) for name, location, direction, color, power in ( - ("key", (-2, -2, 3), (2, 2, -2), (1, 0.85, 0.7), 90), - ("fill", (2, 0, 3), (-2, 0, -2), (0.6, 0.8, 1), 60), + ( + "key", + (-2, -2, 3), + (2, 2, -2), + (1, 0.85, 0.7), + _STUDIO_LIGHTING["key_intensity"], + ), + ( + "fill", + (2, 0, 3), + (-2, 0, -2), + (0.6, 0.8, 1), + _STUDIO_LIGHTING["fill_intensity"], + ), ): light = env.create_light(name, render.LightType.RECT) light.set_location(*location) @@ -612,7 +633,8 @@ def capture(label: str) -> Any: print(json.dumps(row), flush=True) report = { "schema_version": 1, - "scene": "material-studio-v1", + "scene": "material-studio-v2", + "lighting": dict(_STUDIO_LIGHTING), "renderer": args.renderer, "dexsim": version("dexsim-engine"), "size": args.size,