IO: New C++ PLY importer/exporter

New (experimental) Stanford PLY importer and exporter written in C++.

Handles: vertices, faces, edges, vertex colors, normals, UVs. Both
binary and ASCII formats are supported.

Usually 10-20x faster than the existing Python based PLY
importer/exporter.

Additional notes compared to the previous Python addon:
- Importing point clouds with vertex colors now works
- Importing PLY files with non standard line endings
- Exporting multiple objects (previous exporter didn't take the vertex
  indices into account)
- The importer has the option to merge vertices
- The exporter supports exporting loose edges and vertices along with
  UV map data

This is squashed commit of PR #104404
Reviewed By: Hans Goudey, Aras Pranckevicius

Co-authored-by: Arjan van Diest
Co-authored-by: Lilith Houtjes
Co-authored-by: Bas Hendriks
Co-authored-by: Thomas Feijen
Co-authored-by: Yoran Huzen
This commit is contained in:
Nathan Rozendaal
2023-03-05 19:02:36 +02:00
committed by Aras Pranckevicius
parent b4d36b3efe
commit 43e9c90061
41 changed files with 3241 additions and 2 deletions

View File

@@ -44,6 +44,7 @@ static PyStructSequence_Field app_builtopts_info_fields[] = {
{"mod_remesh", NULL},
{"collada", NULL},
{"io_wavefront_obj", NULL},
{"io_ply",NULL},
{"io_stl", NULL},
{"io_gpencil", NULL},
{"opencolorio", NULL},
@@ -260,6 +261,12 @@ static PyObject *make_builtopts_info(void)
SetObjIncref(Py_False);
#endif
#ifdef WITH_IO_PLY
SetObjIncref(Py_True);
#else
SetObjIncref(Py_False);
#endif
#ifdef WITH_IO_STL
SetObjIncref(Py_True);
#else