[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33842] trunk/blender/release/scripts/op/ io_scene_x3d/export_x3d.py: bugfix [#25332] X3D export fails to export complete file

Campbell Barton ideasman42 at gmail.com
Wed Dec 22 01:30:22 CET 2010


Revision: 33842
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33842
Author:   campbellbarton
Date:     2010-12-22 01:30:22 +0100 (Wed, 22 Dec 2010)

Log Message:
-----------
bugfix [#25332] X3D export fails to export complete file

Modified Paths:
--------------
    trunk/blender/release/scripts/op/io_scene_x3d/export_x3d.py

Modified: trunk/blender/release/scripts/op/io_scene_x3d/export_x3d.py
===================================================================
--- trunk/blender/release/scripts/op/io_scene_x3d/export_x3d.py	2010-12-21 20:25:37 UTC (rev 33841)
+++ trunk/blender/release/scripts/op/io_scene_x3d/export_x3d.py	2010-12-22 00:30:22 UTC (rev 33842)
@@ -388,22 +388,25 @@
         #   (meshName, loc[0], loc[1], loc[2], sca[0], sca[1], sca[2], rot[0], rot[1], rot[2], quat.angle*DEG2RAD) )
 
         self.writeIndented("<Shape>\n",1)
-        maters=mesh.materials
         hasImageTexture = False
         is_smooth = False
 
-        if len(maters) > 0 or mesh.uv_textures.active:
-        # if len(maters) > 0 or mesh.faceUV:
+        # XXX, lame, only exports first material.
+        mat_first = None
+        for mat_first in mesh.materials:
+            if mat_first:
+                break
+
+        if mat_first or mesh.uv_textures.active:
             self.writeIndented("<Appearance>\n", 1)
             # right now this script can only handle a single material per mesh.
-            if len(maters) >= 1 and maters[0].use_face_texture == False:
-                mat = maters[0]
-                self.writeMaterial(mat, self.cleanStr(mat.name,''), world)
-                if len(maters) > 1:
+            if mat_first and mat_first.use_face_texture == False:
+                self.writeMaterial(mat_first, self.cleanStr(mat_first.name, ""), world)
+                if len(mesh.materials) > 1:
                     print("Warning: mesh named %s has multiple materials" % meshName)
                     print("Warning: only one material per object handled")
 
-            if not len(maters) or maters[0].use_face_texture:
+            if mat_first is None or mat_first.use_face_texture:
                 #-- textures
                 image = None
                 if mesh.uv_textures.active:
@@ -414,6 +417,7 @@
                                 self.writeImageTexture(image)
                                 break
 
+                # XXX, incorrect, uses last image
                 if image:
                     hasImageTexture = True
 





More information about the Bf-blender-cvs mailing list