From 27381001d7b9332eb669f1023f14b40d1f15f962 Mon Sep 17 00:00:00 2001
From: Bastien Montagne <montagne29@wanadoo.fr>
Date: Tue, 30 Jul 2019 11:23:12 +0200
Subject: [PATCH] Fix T67889: Object Importer Error.

Clamp input values to avoid invalid ones.
---
 io_scene_obj/__init__.py   | 2 +-
 io_scene_obj/import_obj.py | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/io_scene_obj/__init__.py b/io_scene_obj/__init__.py
index 611c95c4e..b129f2837 100644
--- a/io_scene_obj/__init__.py
+++ b/io_scene_obj/__init__.py
@@ -21,7 +21,7 @@
 bl_info = {
     "name": "Wavefront OBJ format",
     "author": "Campbell Barton, Bastien Montagne",
-    "version": (3, 5, 11),
+    "version": (3, 5, 12),
     "blender": (2, 80, 0),
     "location": "File > Import-Export",
     "description": "Import-Export OBJ, Import OBJ mesh, UV's, materials and textures",
diff --git a/io_scene_obj/import_obj.py b/io_scene_obj/import_obj.py
index f03ed2f15..c8a09b2a6 100644
--- a/io_scene_obj/import_obj.py
+++ b/io_scene_obj/import_obj.py
@@ -357,7 +357,8 @@ def create_materials(filepath, relpath,
                     elif line_id == b'ns':
                         # XXX Totally empirical conversion, trying to adapt it
                         #     (from 0.0 - 900.0 OBJ specular exponent range to 1.0 - 0.0 Principled BSDF range)...
-                        context_mat_wrap.roughness = 1.0 - (sqrt(float_func(line_split[1])) / 30)
+                        val = max(0.0, min(900.0, float_func(line_split[1])))
+                        context_mat_wrap.roughness = 1.0 - (sqrt(val) / 30)
                         context_material_vars.add("roughness")
                     elif line_id == b'ni':  # Refraction index (between 0.001 and 10).
                         context_mat_wrap.ior = float_func(line_split[1])
-- 
GitLab