From 8f303221ca7b9f47176b94a787d5127b8b95538c Mon Sep 17 00:00:00 2001 From: Jason Davies Date: Wed, 4 Oct 2023 16:00:46 +0000 Subject: [PATCH 1/3] Add support for KHR_materials_emissive_strength. This also fixes support for emissive factor without emissive texture. Fixes #14, #15. --- Gltf_Parser/gltfparser.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/Gltf_Parser/gltfparser.py b/Gltf_Parser/gltfparser.py index 09fe8b8..96ab726 100644 --- a/Gltf_Parser/gltfparser.py +++ b/Gltf_Parser/gltfparser.py @@ -766,6 +766,7 @@ def _create_material(self, renderer, prim, channel_names): material = renderer.classes.MtlSingleBRDF() #material.double_sided=True brdf = renderer.classes.BRDFVRayMtl() + emissive_strength = 1.0 # fresnel should be true at all times brdf.fresnel = True @@ -798,6 +799,8 @@ def _create_material(self, renderer, prim, channel_names): self._create_KHR_materials_clearcoat(renderer, prim, gltf_mat.extensions.get('KHR_materials_clearcoat'), brdf) if gltf_ext=='KHR_materials_sheen': self._create_KHR_materials_sheen(renderer, prim, gltf_mat.extensions.get('KHR_materials_sheen'), brdf) + if gltf_ext=='KHR_materials_emissive_strength': + emissive_strength = gltf_mat.extensions.get('KHR_materials_emissive_strength').get('emissiveStrength') # Apply vertex color to the diffuse texture applyVertexColor(renderer, brdf, channel_names) @@ -816,14 +819,22 @@ def _create_material(self, renderer, prim, channel_names): brdf.bump_type=1 #emissive tex - emissive_tex = self._make_texture(renderer,prim,gltf_mat.emissiveTexture, transfer_func = 2) + emissive_tex = self._make_texture(renderer, prim, gltf_mat.emissiveTexture, transfer_func = 2) + emissive_factor = gltf_mat.emissiveFactor if emissive_tex != None: - emissive_factor = gltf_mat.emissiveFactor if emissive_factor != None: - emissive_tex.color_mult = vray.AColor(emissive_factor[0], emissive_factor[1], emissive_factor[2], 1) + emissive_tex.color_mult = vray.AColor( + emissive_factor[0] * emissive_strength, + emissive_factor[1] * emissive_strength, + emissive_factor[2] * emissive_strength, 1) brdf.self_illumination = emissive_tex - # brdf.self_illumination_gi=True + else: + if emissive_factor != None: + brdf.self_illumination = vray.AColor( + emissive_factor[0] * emissive_strength, + emissive_factor[1] * emissive_strength, + emissive_factor[2] * emissive_strength, 1) #occlusion tex useOcclusion = False From 66403a826edb9859f5d2e32f42c26b846c3108ca Mon Sep 17 00:00:00 2001 From: Jason Davies Date: Thu, 5 Oct 2023 10:19:18 +0000 Subject: [PATCH 2/3] Add support for KHR_materials_ior. Fixes #19. --- Gltf_Parser/gltfparser.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Gltf_Parser/gltfparser.py b/Gltf_Parser/gltfparser.py index 96ab726..e654eb8 100644 --- a/Gltf_Parser/gltfparser.py +++ b/Gltf_Parser/gltfparser.py @@ -801,6 +801,8 @@ def _create_material(self, renderer, prim, channel_names): self._create_KHR_materials_sheen(renderer, prim, gltf_mat.extensions.get('KHR_materials_sheen'), brdf) if gltf_ext=='KHR_materials_emissive_strength': emissive_strength = gltf_mat.extensions.get('KHR_materials_emissive_strength').get('emissiveStrength') + if gltf_ext=='KHR_materials_ior': + brdf.refract_ior = gltf_mat.extensions.get('KHR_materials_ior').get('ior') # Apply vertex color to the diffuse texture applyVertexColor(renderer, brdf, channel_names) From f3fe4115a6c2186dfc8a571e912e4494fe396897 Mon Sep 17 00:00:00 2001 From: Jason Davies Date: Thu, 5 Oct 2023 12:17:14 +0000 Subject: [PATCH 3/3] Update README. --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b372520..09e49dd 100644 --- a/README.md +++ b/README.md @@ -65,10 +65,12 @@ python main.py d:\temp\vray_gltf\samples\basic\basic.glb --thick_glass --default The glTF parser supports glTF 2.0 with the following extensions: * KHR_texture_transform -* KHR_materials_pbrSpecularGlossiness -* KHR_materials_transmission * KHR_materials_clearcoat +* KHR_materials_emissive_strength +* KHR_materials_ior +* KHR_materials_pbrSpecularGlossiness * KHR_materials_sheen +* KHR_materials_transmission * KHR_lights_punctual is mostly working, but light range is not supported Simple transform animations are supported to some extent. Vertex deformations, either through morphing or skinning are currently not supported.