Skip to content
Snippets Groups Projects
Commit 05baedac authored by Bastien Montagne's avatar Bastien Montagne
Browse files

OBJ IO: Use Principled BSDF's Alpha new setting.

Much better than using Principled's Transmission setting as we did
before...

Part of T64609.
parent 44dd3564
No related branches found
No related tags found
No related merge requests found
......@@ -21,7 +21,7 @@
bl_info = {
"name": "Wavefront OBJ format",
"author": "Campbell Barton, Bastien Montagne",
"version": (3, 5, 6),
"version": (3, 5, 7),
"blender": (2, 80, 0),
"location": "File > Import-Export",
"description": "Import-Export OBJ, Import OBJ mesh, UV's, materials and textures",
......
......@@ -74,7 +74,7 @@ def write_mtl(scene, filepath, path_mode, copy_set, mtl_dict):
if mat_wrap:
use_mirror = mat_wrap.metallic != 0.0
use_transparency = mat_wrap.transmission != 0.0
use_transparency = mat_wrap.alpha != 1.0
# XXX Totally empirical conversion, trying to adapt it
# (from 1.0 - 0.0 Principled BSDF range to 0.0 - 900.0 OBJ specular exponent range)...
......@@ -94,7 +94,7 @@ def write_mtl(scene, filepath, path_mode, copy_set, mtl_dict):
# XXX Not supported by current Principled-based shader.
fw('Ke 0.0 0.0 0.0\n')
fw('Ni %.6f\n' % mat_wrap.ior) # Refraction index
fw('d %.6f\n' % (1.0 - mat_wrap.transmission)) # Alpha (obj uses 'd' for dissolve)
fw('d %.6f\n' % mat_wrap.alpha) # Alpha (obj uses 'd' for dissolve)
# See http://en.wikipedia.org/wiki/Wavefront_.obj_file for whole list of values...
# Note that mapping is rather fuzzy sometimes, trying to do our best here.
......@@ -116,7 +116,7 @@ def write_mtl(scene, filepath, path_mode, copy_set, mtl_dict):
"map_Ka": None, # ambient...
"map_Ks": "specular_texture",
"map_Ns": "roughness_texture",
"map_d": "transmission_texture",
"map_d": "alpha_texture",
"map_Tr": None, # transmission roughness?
"map_Bump": "normalmap_texture",
"disp": None, # displacement...
......
......@@ -176,7 +176,7 @@ def create_materials(filepath, relpath,
_generic_tex_set(mat_wrap.normalmap_texture, image, 'UV', map_offset, map_scale)
elif type == 'D':
_generic_tex_set(mat_wrap.transmission_texture, image, 'UV', map_offset, map_scale)
_generic_tex_set(mat_wrap.alpha_texture, image, 'UV', map_offset, map_scale)
elif type == 'disp':
# XXX Not supported?
......@@ -245,8 +245,8 @@ def create_materials(filepath, relpath,
if do_transparency:
if "ior" not in context_material_vars:
context_mat_wrap.ior = 1.0
if "transmission" not in context_material_vars:
context_mat_wrap.transmission = 1.0
if "alpha" not in context_material_vars:
context_mat_wrap.alpha = 1.0
# EEVEE only
context_material.blend_method = 'BLEND'
......@@ -341,8 +341,8 @@ def create_materials(filepath, relpath,
context_mat_wrap.ior = float_func(line_split[1])
context_material_vars.add("ior")
elif line_id == b'd': # dissolve (transparency)
context_mat_wrap.transmission = 1.0 - float_func(line_split[1])
context_material_vars.add("transmission")
context_mat_wrap.alpha = float_func(line_split[1])
context_material_vars.add("alpha")
elif line_id == b'tr': # translucency
print("WARNING, currently unsupported 'tr' translucency option, skipped.")
elif line_id == b'tf':
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment