Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/io/wavefront_obj/exporter/obj_export_mesh.hh')
-rw-r--r--source/blender/io/wavefront_obj/exporter/obj_export_mesh.hh32
1 files changed, 26 insertions, 6 deletions
diff --git a/source/blender/io/wavefront_obj/exporter/obj_export_mesh.hh b/source/blender/io/wavefront_obj/exporter/obj_export_mesh.hh
index f3ace140006..4cfbffdcebc 100644
--- a/source/blender/io/wavefront_obj/exporter/obj_export_mesh.hh
+++ b/source/blender/io/wavefront_obj/exporter/obj_export_mesh.hh
@@ -82,11 +82,19 @@ class OBJMesh : NonCopyable {
* Per-polygon-per-vertex UV vertex indices.
*/
Vector<Vector<int>> uv_indices_;
+ /*
+ * UV vertices.
+ */
+ Vector<float2> uv_coords_;
/**
* Per-loop normal index.
*/
Vector<int> loop_to_normal_index_;
/*
+ * Normal coords.
+ */
+ Vector<float3> normal_coords_;
+ /*
* Total number of normal indices (maximum entry, plus 1, in
* the loop_to_norm_index_ vector).
*/
@@ -108,6 +116,9 @@ class OBJMesh : NonCopyable {
OBJMesh(Depsgraph *depsgraph, const OBJExportParams &export_params, Object *mesh_object);
~OBJMesh();
+ /* Clear various arrays to release potentially large memory allocations. */
+ void clear();
+
int tot_vertices() const;
int tot_polygons() const;
int tot_uv_vertices() const;
@@ -165,10 +176,14 @@ class OBJMesh : NonCopyable {
Vector<int> calc_poly_vertex_indices(int poly_index) const;
/**
* Calculate UV vertex coordinates of an Object.
- *
- * \note Also store the UV vertex indices in the member variable.
+ * Stores the coordinates and UV vertex indices in the member variables.
*/
- void store_uv_coords_and_indices(Vector<std::array<float, 2>> &r_uv_coords);
+ void store_uv_coords_and_indices();
+ /* Get UV coordinates computed by store_uv_coords_and_indices. */
+ const Vector<float2> &get_uv_coords() const
+ {
+ return uv_coords_;
+ }
Span<int> calc_poly_uv_indices(int poly_index) const;
/**
* Calculate polygon normal of a polygon at given index.
@@ -177,10 +192,15 @@ class OBJMesh : NonCopyable {
*/
float3 calc_poly_normal(int poly_index) const;
/**
- * Find the unique normals of the mesh and return them in \a r_normal_coords.
- * Store the indices into that vector with for each loop in this #OBJMesh.
+ * Find the unique normals of the mesh and stores them in a member variable.
+ * Also stores the indices into that vector with for each loop.
*/
- void store_normal_coords_and_indices(Vector<float3> &r_normal_coords);
+ void store_normal_coords_and_indices();
+ /* Get normals calculate by store_normal_coords_and_indices. */
+ const Vector<float3> &get_normal_coords() const
+ {
+ return normal_coords_;
+ }
/**
* Calculate a polygon's polygon/loop normal indices.
* \param poly_index Index of the polygon to calculate indices for.