Skip to content

Commit 181ac0e

Browse files
authored
Merge pull request #97 from jdent02/master
Multiple items
2 parents 4c5046e + 5b64239 commit 181ac0e

File tree

3 files changed

+483
-135
lines changed

3 files changed

+483
-135
lines changed

project_file_writer.py

Lines changed: 87 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -890,6 +890,20 @@ def __emit_front_material_bsdf_tree(self, material, material_name, scene, layers
890890
else:
891891
bsdfs.append([metal_bsdf_name, layer.metal_weight])
892892

893+
# Plastic BRDF
894+
elif layer.bsdf_type == "plastic_brdf":
895+
plastic_bsdf_name = "{0}|{1}".format(material_name, layer.name)
896+
self.__emit_plastic_brdf(material, plastic_bsdf_name, scene, layer)
897+
# Layer mask textures.
898+
if layer.plastic_use_tex and layer.plastic_mix_tex != '':
899+
bsdfs.append([plastic_bsdf_name, layer.plastic_mix_tex + "_inst"])
900+
mix_tex_name = layer.plastic_mix_tex + "_inst"
901+
if mix_tex_name not in self._textures_set:
902+
self.__emit_texture(bpy.data.textures[layer.plastic_mix_tex], False, scene)
903+
self._textures_set.add(mix_tex_name)
904+
else:
905+
bsdfs.append([plastic_bsdf_name, layer.plastic_weight])
906+
893907
# Diffuse BTDF
894908
elif layer.bsdf_type == "diffuse_btdf":
895909
dt_bsdf_name = "{0}|{1}".format(material_name, layer.name)
@@ -1428,11 +1442,6 @@ def __emit_blinn_brdf(self, material, bsdf_name, scene, layer=None, node=None):
14281442
if exponent_name not in self._textures_set:
14291443
self._textures_set.add(exponent_name)
14301444
self.__emit_texture(bpy.data.textures[layer.blinn_exponent_tex], False, scene)
1431-
if exponent_name == "":
1432-
exponent_name = "{0}_exponent".format(bsdf_name)
1433-
self.__emit_solid_linear_rgb_color_element(exponent_name,
1434-
layer.blinn_exponent,
1435-
1)
14361445

14371446
self.__open_element('bsdf name="{0}" model="blinn_brdf"'.format(bsdf_name))
14381447
self.__emit_parameter("exponent", exponent_name)
@@ -1673,6 +1682,79 @@ def __emit_metal_brdf(self, material, bsdf_name, scene, layer=None, node=None):
16731682
self.__emit_parameter("anisotropy", anisotropy)
16741683
self.__close_element("bsdf")
16751684

1685+
# ----------------------
1686+
# Write Plastic BRDF
1687+
# ----------------------
1688+
def __emit_plastic_brdf(self, material, bsdf_name, scene, layer=None, node=None):
1689+
specular_reflectance = ""
1690+
specular_reflectance_multiplier = layer.plastic_specular_reflectance_multiplier
1691+
roughness = layer.plastic_roughness
1692+
diffuse_reflectance = ""
1693+
diffuse_reflectance_multiplier = layer.plastic_diffuse_reflectance_multiplier
1694+
1695+
# check for texture in specular_reflectance slot
1696+
if layer.plastic_specular_reflectance_tex and layer.plastic_specular_reflectance_tex != "":
1697+
if util.is_uv_img(bpy.data.textures[layer.plastic_specular_reflectance_tex]):
1698+
1699+
specular_reflectance = layer.plastic_specular_reflectance_tex + "_inst"
1700+
if specular_reflectance not in self._textures_set:
1701+
self._textures_set.add(specular_reflectance)
1702+
self.__emit_texture(bpy.data.textures[layer.plastic_specular_reflectance_tex], False, scene)
1703+
if specular_reflectance == "":
1704+
specular_reflectance = "{0}_specular_reflectance".format(bsdf_name)
1705+
self.__emit_solid_linear_rgb_color_element(specular_reflectance,
1706+
layer.plastic_specular_reflectance,
1707+
1)
1708+
1709+
# check for texture in specular_reflectance_multiplier slot
1710+
if layer.plastic_specular_reflectance_multiplier_use_tex and layer.plastic_specular_reflectance_multiplier_tex != "":
1711+
if util.is_uv_img(bpy.data.textures[layer.plastic_specular_reflectance_multiplier_tex]):
1712+
specular_reflectance_multiplier = layer.plastic_specular_reflectance_multiplier_tex + "_inst"
1713+
if specular_reflectance_multiplier not in self._textures_set:
1714+
self._textures_set.add(specular_reflectance_multiplier)
1715+
self.__emit_texture(bpy.data.textures[layer.plastic_specular_reflectance_multiplier_tex], False, scene)
1716+
1717+
# check for texture in roughness slot
1718+
if layer.plastic_roughness_use_tex and layer.plastic_roughness_tex != "":
1719+
if util.is_uv_img(bpy.data.textures[layer.plastic_roughness_tex]):
1720+
roughness = layer.plastic_roughness_tex + "_inst"
1721+
if roughness not in self._textures_set:
1722+
self._textures_set.add(roughness)
1723+
self.__emit_texture(bpy.data.textures[layer.plastic_roughness_tex], False, scene)
1724+
1725+
# check for texture in diffuse_reflectance slot
1726+
if layer.plastic_diffuse_reflectance_tex and layer.plastic_diffuse_reflectance_tex != "":
1727+
if util.is_uv_img(bpy.data.textures[layer.plastic_diffuse_reflectance_tex]):
1728+
1729+
diffuse_reflectance = layer.plastic_diffuse_reflectance_tex + "_inst"
1730+
if diffuse_reflectance not in self._textures_set:
1731+
self._textures_set.add(diffuse_reflectance)
1732+
self.__emit_texture(bpy.data.textures[layer.plastic_diffuse_reflectance_tex], False, scene)
1733+
if diffuse_reflectance == "":
1734+
diffuse_reflectance = "{0}_diffuse_reflectance".format(bsdf_name)
1735+
self.__emit_solid_linear_rgb_color_element(diffuse_reflectance,
1736+
layer.plastic_diffuse_reflectance,
1737+
1)
1738+
1739+
# check for texture in diffuse_reflectance_multiplier slot
1740+
if layer.plastic_diffuse_reflectance_multiplier_use_tex and layer.plastic_diffuse_reflectance_multiplier_tex != "":
1741+
if util.is_uv_img(bpy.data.textures[layer.plastic_diffuse_reflectance_multiplier_tex]):
1742+
diffuse_reflectance_multiplier = layer.plastic_diffuse_reflectance_multiplier_tex + "_inst"
1743+
if diffuse_reflectance_multiplier not in self._textures_set:
1744+
self._textures_set.add(diffuse_reflectance_multiplier)
1745+
self.__emit_texture(bpy.data.textures[layer.plastic_diffuse_reflectance_multiplier_tex], False, scene)
1746+
1747+
self.__open_element('bsdf name="{0}" model="plastic_brdf"'.format(bsdf_name))
1748+
self.__emit_parameter("mdf", layer.plastic_mdf)
1749+
self.__emit_parameter("specular_reflectance", specular_reflectance)
1750+
self.__emit_parameter("specular_reflectance_multiplier", specular_reflectance_multiplier)
1751+
self.__emit_parameter("roughness", roughness)
1752+
self.__emit_parameter("highlight_falloff", layer.plastic_highlight_falloff)
1753+
self.__emit_parameter("ior", layer.plastic_ior)
1754+
self.__emit_parameter("diffuse_reflectance", diffuse_reflectance)
1755+
self.__emit_parameter("diffuse_reflectance_multiplier", diffuse_reflectance_multiplier)
1756+
self.__close_element("bsdf")
1757+
16761758
# ----------------------
16771759
# Write Specular BRDF.
16781760
# ----------------------

0 commit comments

Comments
 (0)