[Bf-blender-cvs] [6543fe5] alembic_basic_io: Add support to read edge crease data.

Kévin Dietrich noreply at git.blender.org
Thu Jun 30 01:20:03 CEST 2016


Commit: 6543fe592f46d328ee12ce38871a8102aa2a4f3e
Author: Kévin Dietrich
Date:   Wed Jun 29 23:37:36 2016 +0200
Branches: alembic_basic_io
https://developer.blender.org/rB6543fe592f46d328ee12ce38871a8102aa2a4f3e

Add support to read edge crease data.

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

M	source/blender/alembic/intern/abc_mesh.cc

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

diff --git a/source/blender/alembic/intern/abc_mesh.cc b/source/blender/alembic/intern/abc_mesh.cc
index 9ebb23a..abb289c 100644
--- a/source/blender/alembic/intern/abc_mesh.cc
+++ b/source/blender/alembic/intern/abc_mesh.cc
@@ -836,6 +836,19 @@ bool AbcMeshReader::valid() const
 	return m_schema.valid() || m_subd_schema.valid();
 }
 
+static MEdge *find_edge(MEdge *edges, int totedge, int v1, int v2)
+{
+	for (int i = 0, e = totedge; i < e; ++i) {
+		MEdge &edge = edges[i];
+
+		if (edge.v1 == v1 && edge.v2 == v2) {
+			return &edge;
+		}
+	}
+
+	return NULL;
+}
+
 void AbcMeshReader::readObjectData(Main *bmain, Scene *scene, float time)
 {
 	Mesh *mesh = BKE_mesh_add(bmain, m_data_name.c_str());
@@ -890,6 +903,26 @@ void AbcMeshReader::readObjectData(Main *bmain, Scene *scene, float time)
 		readFaceSetsSample(bmain, mesh, poly_start, sample_sel);
 	}
 
+	if (m_subd_schema.valid()) {
+		const ISubDSchema::Sample sample = m_subd_schema.getValue(sample_sel);
+
+		Int32ArraySamplePtr indices = sample.getCreaseIndices();
+		Alembic::Abc::FloatArraySamplePtr sharpnesses = sample.getCreaseSharpnesses();
+
+		MEdge *edges = mesh->medge;
+
+		if (indices && sharpnesses) {
+			for (int i = 0, s = 0, e = indices->size(); i < e; i += 2, ++s) {
+				MEdge *edge = find_edge(edges, mesh->totedge, (*indices)[i], (*indices)[i + 1]);
+
+				if (edge) {
+					edge->crease = FTOCHAR((*sharpnesses)[s]);				}
+			}
+
+			mesh->cd_flag |= ME_CDFLAG_EDGE_CREASE;
+		}
+	}
+
 	if (!is_constant) {
 		addDefaultModifier(bmain);
 	}




More information about the Bf-blender-cvs mailing list