[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