[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1871] trunk/py/scripts/addons/ io_export_directx_x.py: Changed the way materials are exported to better work with DirectX' s Phong-esque default specular shading.

Chris Foster cdbfoster at gmail.com
Tue Apr 26 11:04:14 CEST 2011


Revision: 1871
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=1871
Author:   kiravakaan
Date:     2011-04-26 09:04:13 +0000 (Tue, 26 Apr 2011)
Log Message:
-----------
Changed the way materials are exported to better work with DirectX's Phong-esque default specular shading.

Modified Paths:
--------------
    trunk/py/scripts/addons/io_export_directx_x.py

Modified: trunk/py/scripts/addons/io_export_directx_x.py
===================================================================
--- trunk/py/scripts/addons/io_export_directx_x.py	2011-04-25 18:24:42 UTC (rev 1870)
+++ trunk/py/scripts/addons/io_export_directx_x.py	2011-04-26 09:04:13 UTC (rev 1871)
@@ -20,7 +20,7 @@
     "author": "Chris Foster (Kira Vakaan)",
     "version": (2, 1),
     "blender": (2, 5, 7),
-    "api": 36079,
+    "api": 36302,
     "location": "File > Export > DirectX (.x)",
     "description": "Export DirectX Model Format (.x)",
     "warning": "",
@@ -490,20 +490,20 @@
         Config.File.write("{}Material {} {{\n".format("  " * Config.Whitespace, LegalName(Material.name)))
         Config.Whitespace += 1
 
-        Diffuse = list(Material.diffuse_color)
+        Diffuse = list(Vector(Material.diffuse_color) * Material.diffuse_intensity)
         Diffuse.append(Material.alpha)
-        Specularity = Material.specular_intensity
-        Specular = list(Material.specular_color)
+        Specularity = 1000 * (Material.specular_hardness - 1.0) / (511.0 - 1.0) # Map Blender's range of 1 - 511 to 1 - 1000
+        Specular = list(Vector(Material.specular_color) * Material.specular_intensity)
 
         Config.File.write("{}{:9f};{:9f};{:9f};{:9f};;\n".format("  " * Config.Whitespace, Diffuse[0], Diffuse[1], Diffuse[2], Diffuse[3]))
-        Config.File.write("{}{:9f};\n".format("  " * Config.Whitespace, 2 * (1.0 - Specularity)))
+        Config.File.write("{} {:9f};\n".format("  " * Config.Whitespace, Specularity))
         Config.File.write("{}{:9f};{:9f};{:9f};;\n".format("  " * Config.Whitespace, Specular[0], Specular[1], Specular[2]))
     else:
         Config.File.write("{}Material Default_Material {{\n".format("  " * Config.Whitespace))
         Config.Whitespace += 1
-        Config.File.write("{} 1.000000; 1.000000; 1.000000; 1.000000;;\n".format("  " * Config.Whitespace))
-        Config.File.write("{} 1.500000;\n".format("  " * Config.Whitespace))
-        Config.File.write("{} 1.000000; 1.000000; 1.000000;;\n".format("  " * Config.Whitespace))
+        Config.File.write("{} 0.800000; 0.800000; 0.800000; 0.800000;;\n".format("  " * Config.Whitespace))
+        Config.File.write("{} 96.078431;\n".format("  " * Config.Whitespace)) # 1000 * (50 - 1) / (511 - 1)
+        Config.File.write("{} 0.500000; 0.500000; 0.500000;;\n".format("  " * Config.Whitespace))
     Config.File.write("{} 0.000000; 0.000000; 0.000000;;\n".format("  " * Config.Whitespace))
     if Config.ExportTextures:
         Texture = GetMaterialTexture(Material)
@@ -1238,4 +1238,4 @@
 
 
 if __name__ == "__main__":
-    register()
+    register()
\ No newline at end of file



More information about the Bf-extensions-cvs mailing list