[Bf-extensions-cvs] [5533f703] master: PLY: Fix export faces with more than 255 sides

Mikhail Rachinskiy noreply at git.blender.org
Fri Dec 31 09:35:36 CET 2021


Commit: 5533f703fb6e2f5c1eb42734b763185e89a8f324
Author: Mikhail Rachinskiy
Date:   Fri Dec 31 12:26:59 2021 +0400
Branches: master
https://developer.blender.org/rBA5533f703fb6e2f5c1eb42734b763185e89a8f324

PLY: Fix export faces with more than 255 sides

Ideally we want to use uint16 or uint32 data type for this purpose,
but certain DCCs have hardcoded uint8 limits in their PLY importers.

Silently tringulating faces with many sides is bad, but it's even worse
when correctly exported model won't load because of poor importer
implementation in other DCCs.

===================================================================

M	io_mesh_ply/export_ply.py

===================================================================

diff --git a/io_mesh_ply/export_ply.py b/io_mesh_ply/export_ply.py
index 060b3d02..e86f43f3 100644
--- a/io_mesh_ply/export_ply.py
+++ b/io_mesh_ply/export_ply.py
@@ -244,6 +244,10 @@ def save(
         bm.from_mesh(me)
         ob_eval.to_mesh_clear()
 
+    # Workaround for hardcoded unsigned char limit in other DCCs PLY importers
+    if (ngons := [f for f in bm.faces if len(f.verts) > 255]):
+        bmesh.ops.triangulate(bm, faces=ngons)
+
     mesh = bpy.data.meshes.new("TMP PLY EXPORT")
     bm.to_mesh(mesh)
     bm.free()



More information about the Bf-extensions-cvs mailing list