[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [2069] trunk/py/scripts/addons/ io_scene_x3d/export_x3d.py: fix [#27773] X3D export with Triangulate= on sometimes doesn't share vertexes correctly

Campbell Barton ideasman42 at gmail.com
Mon Jun 27 15:28:55 CEST 2011


Revision: 2069
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=2069
Author:   campbellbarton
Date:     2011-06-27 13:28:55 +0000 (Mon, 27 Jun 2011)
Log Message:
-----------
fix [#27773] X3D export with Triangulate=on sometimes doesn't share vertexes correctly

Modified Paths:
--------------
    trunk/py/scripts/addons/io_scene_x3d/export_x3d.py

Modified: trunk/py/scripts/addons/io_scene_x3d/export_x3d.py
===================================================================
--- trunk/py/scripts/addons/io_scene_x3d/export_x3d.py	2011-06-27 08:20:29 UTC (rev 2068)
+++ trunk/py/scripts/addons/io_scene_x3d/export_x3d.py	2011-06-27 13:28:55 UTC (rev 2069)
@@ -487,6 +487,10 @@
                             is_smooth = True
                             break
 
+                    # UV's and VCols split verts off which effects smoothing
+                    # force writing normals in this case.
+                    is_force_normals = use_triangulate and is_smooth and (is_uv or is_col)
+
                     if use_h3d:
                         gpu_shader = gpu_shader_cache.get(material)  # material can be 'None', uses dummy cache
                         if gpu_shader is None:
@@ -558,10 +562,10 @@
 
                         # --- Write IndexedTriangleSet Attributes (same as IndexedFaceSet)
                         fw('solid="%s"\n' % ('true' if mesh.show_double_sided else 'false'))
-                        if is_smooth:
-                            fw(ident_step + 'creaseAngle="%.4g"\n' % mesh.auto_smooth_angle)
+                        
+                        # creaseAngle unsupported for IndexedTriangleSet's
 
-                        if use_normals:
+                        if use_normals or is_force_normals:
                             # currently not optional, could be made so:
                             fw(ident_step + 'normalPerVertex="true"\n')
 
@@ -649,7 +653,7 @@
                             fw('%.6g %.6g %.6g ' % mesh_vertices[x3d_v[1]].co[:])
                         fw('" />\n')
 
-                        if use_normals:
+                        if use_normals or is_force_normals:
                             fw('%s<Normal ' % ident)
                             fw('vector="')
                             for x3d_v in vert_tri_list:



More information about the Bf-extensions-cvs mailing list