[Bf-blender-cvs] [2a712f6] alembic_basic_io: Cleaup: de-duplicate exception safety code.
Kévin Dietrich
noreply at git.blender.org
Tue Jun 14 16:58:51 CEST 2016
Commit: 2a712f61636877e1d161228b7467537a5f9662d9
Author: Kévin Dietrich
Date: Tue Jun 14 12:36:25 2016 +0200
Branches: alembic_basic_io
https://developer.blender.org/rB2a712f61636877e1d161228b7467537a5f9662d9
Cleaup: de-duplicate exception safety code.
===================================================================
M source/blender/alembic/intern/abc_mesh.cc
M source/blender/alembic/intern/abc_mesh.h
===================================================================
diff --git a/source/blender/alembic/intern/abc_mesh.cc b/source/blender/alembic/intern/abc_mesh.cc
index fb337bd..8beeaa1 100644
--- a/source/blender/alembic/intern/abc_mesh.cc
+++ b/source/blender/alembic/intern/abc_mesh.cc
@@ -445,146 +445,138 @@ void AbcMeshWriter::do_write()
if (!m_first_frame && !m_is_animated)
return;
- if (m_settings.use_subdiv_schema && m_subdiv_schema.valid()) {
- writeSubD();
- }
- else {
- writeMesh();
- }
-}
-
-void AbcMeshWriter::writeMesh()
-{
DerivedMesh *dm = getFinalMesh();
try {
- std::vector<float> points, normals;
- std::vector<int32_t> facePoints, faceCounts;
-
- get_vertices(dm, points);
- get_topology(dm, facePoints, faceCounts);
-
- if (m_first_frame) {
- writeCommonData(dm, m_mesh_schema);
+ if (m_settings.use_subdiv_schema && m_subdiv_schema.valid()) {
+ writeSubD(dm);
+ }
+ else {
+ writeMesh(dm);
}
- m_mesh_sample = OPolyMeshSchema::Sample(
- V3fArraySample(
- (const Imath::V3f *) &points.front(),
- points.size() / 3),
- Int32ArraySample(facePoints),
- Int32ArraySample(faceCounts));
+ freeMesh(dm);
+ }
+ catch (...) {
+ freeMesh(dm);
+ throw;
+ }
+}
- UVSample sample;
- if (m_settings.export_uvs) {
- get_uv_sample(sample, dm, m_settings.pack_uv);
+void AbcMeshWriter::writeMesh(DerivedMesh *dm)
+{
+ std::vector<float> points, normals;
+ std::vector<int32_t> facePoints, faceCounts;
- if (!sample.indices.empty() && !sample.uvs.empty()) {
- OV2fGeomParam::Sample uv_sample;
- uv_sample.setVals(V2fArraySample(&sample.uvs[0], sample.uvs.size()));
- uv_sample.setIndices(UInt32ArraySample(&sample.indices[0], sample.indices.size()));
- uv_sample.setScope(kFacevaryingScope);
+ get_vertices(dm, points);
+ get_topology(dm, facePoints, faceCounts);
- m_mesh_sample.setUVs(uv_sample);
- }
+ if (m_first_frame) {
+ writeCommonData(dm, m_mesh_schema);
+ }
- write_extra_uvs(m_mesh_schema, dm, m_settings.pack_uv);
- }
+ m_mesh_sample = OPolyMeshSchema::Sample(
+ V3fArraySample(
+ (const Imath::V3f *) &points.front(),
+ points.size() / 3),
+ Int32ArraySample(facePoints),
+ Int32ArraySample(faceCounts));
- if (m_settings.export_normals) {
- get_normals(dm, normals);
+ UVSample sample;
+ if (m_settings.export_uvs) {
+ get_uv_sample(sample, dm, m_settings.pack_uv);
- ON3fGeomParam::Sample normals_sample;
- if (!normals.empty()) {
- normals_sample.setScope(kFacevaryingScope);
- normals_sample.setVals(
- V3fArraySample(
- (const Imath::V3f *)&normals.front(),
- normals.size() / 3));
- }
+ if (!sample.indices.empty() && !sample.uvs.empty()) {
+ OV2fGeomParam::Sample uv_sample;
+ uv_sample.setVals(V2fArraySample(&sample.uvs[0], sample.uvs.size()));
+ uv_sample.setIndices(UInt32ArraySample(&sample.indices[0], sample.indices.size()));
+ uv_sample.setScope(kFacevaryingScope);
- m_mesh_sample.setNormals(normals_sample);
+ m_mesh_sample.setUVs(uv_sample);
}
- if (m_is_liquid) {
- std::vector<float> velocities;
- getVelocities(dm, velocities);
+ write_extra_uvs(m_mesh_schema, dm, m_settings.pack_uv);
+ }
+
+ if (m_settings.export_normals) {
+ get_normals(dm, normals);
- m_mesh_sample.setVelocities(V3fArraySample(
- (const Imath::V3f *)&velocities.front(),
- velocities.size() / 3));
+ ON3fGeomParam::Sample normals_sample;
+ if (!normals.empty()) {
+ normals_sample.setScope(kFacevaryingScope);
+ normals_sample.setVals(
+ V3fArraySample(
+ (const Imath::V3f *)&normals.front(),
+ normals.size() / 3));
}
- m_mesh_sample.setSelfBounds(bounds());
+ m_mesh_sample.setNormals(normals_sample);
+ }
- m_mesh_schema.set(m_mesh_sample);
+ if (m_is_liquid) {
+ std::vector<float> velocities;
+ getVelocities(dm, velocities);
- writeArbGeoParams(dm);
- freeMesh(dm);
- }
- catch (...) {
- freeMesh(dm);
- throw;
+ m_mesh_sample.setVelocities(V3fArraySample(
+ (const Imath::V3f *)&velocities.front(),
+ velocities.size() / 3));
}
-}
-void AbcMeshWriter::writeSubD()
-{
- DerivedMesh *dm = getFinalMesh();
+ m_mesh_sample.setSelfBounds(bounds());
- try {
- std::vector<float> points, creaseSharpness;
- std::vector<int32_t> facePoints, faceCounts;
- std::vector<int32_t> creaseIndices, creaseLengths;
+ m_mesh_schema.set(m_mesh_sample);
- get_vertices(dm, points);
- get_topology(dm, facePoints, faceCounts);
- get_creases(dm, creaseIndices, creaseLengths, creaseSharpness);
+ writeArbGeoParams(dm);
+}
- if (m_first_frame) {
- /* create materials' facesets */
- writeCommonData(dm, m_subdiv_schema);
- }
+void AbcMeshWriter::writeSubD(DerivedMesh *dm)
+{
+ std::vector<float> points, creaseSharpness;
+ std::vector<int32_t> facePoints, faceCounts;
+ std::vector<int32_t> creaseIndices, creaseLengths;
- m_subdiv_sample = OSubDSchema::Sample(
- V3fArraySample(
- (const Imath::V3f *) &points.front(),
- points.size() / 3),
- Int32ArraySample(facePoints),
- Int32ArraySample(faceCounts));
+ get_vertices(dm, points);
+ get_topology(dm, facePoints, faceCounts);
+ get_creases(dm, creaseIndices, creaseLengths, creaseSharpness);
- UVSample sample;
- if (m_settings.export_uvs) {
- get_uv_sample(sample, dm, m_settings.pack_uv);
+ if (m_first_frame) {
+ /* create materials' facesets */
+ writeCommonData(dm, m_subdiv_schema);
+ }
- if (!sample.indices.empty() && !sample.uvs.empty()) {
- OV2fGeomParam::Sample uv_sample;
- uv_sample.setVals(V2fArraySample(&sample.uvs[0], sample.uvs.size()));
- uv_sample.setIndices(UInt32ArraySample(&sample.indices[0], sample.indices.size()));
- uv_sample.setScope(kFacevaryingScope);
+ m_subdiv_sample = OSubDSchema::Sample(
+ V3fArraySample(
+ (const Imath::V3f *) &points.front(),
+ points.size() / 3),
+ Int32ArraySample(facePoints),
+ Int32ArraySample(faceCounts));
- m_subdiv_sample.setUVs(uv_sample);
- }
+ UVSample sample;
+ if (m_settings.export_uvs) {
+ get_uv_sample(sample, dm, m_settings.pack_uv);
- write_extra_uvs(m_subdiv_schema, dm, m_settings.pack_uv);
- }
+ if (!sample.indices.empty() && !sample.uvs.empty()) {
+ OV2fGeomParam::Sample uv_sample;
+ uv_sample.setVals(V2fArraySample(&sample.uvs[0], sample.uvs.size()));
+ uv_sample.setIndices(UInt32ArraySample(&sample.indices[0], sample.indices.size()));
+ uv_sample.setScope(kFacevaryingScope);
- if (!creaseIndices.empty()) {
- m_subdiv_sample.setCreaseIndices(Int32ArraySample(creaseIndices));
- m_subdiv_sample.setCreaseLengths(Int32ArraySample(creaseLengths));
- m_subdiv_sample.setCreaseSharpnesses(FloatArraySample(creaseSharpness));
+ m_subdiv_sample.setUVs(uv_sample);
}
- m_subdiv_sample.setSelfBounds(bounds());
- m_subdiv_schema.set(m_subdiv_sample);
-
- writeArbGeoParams(dm);
- freeMesh(dm);
+ write_extra_uvs(m_subdiv_schema, dm, m_settings.pack_uv);
}
- catch (...) {
- freeMesh(dm);
- throw;
+
+ if (!creaseIndices.empty()) {
+ m_subdiv_sample.setCreaseIndices(Int32ArraySample(creaseIndices));
+ m_subdiv_sample.setCreaseLengths(Int32ArraySample(creaseLengths));
+ m_subdiv_sample.setCreaseSharpnesses(FloatArraySample(creaseSharpness));
}
+
+ m_subdiv_sample.setSelfBounds(bounds());
+ m_subdiv_schema.set(m_subdiv_sample);
+
+ writeArbGeoParams(dm);
}
template <typename Schema>
diff --git a/source/blender/alembic/intern/abc_mesh.h b/source/blender/alembic/intern/abc_mesh.h
index 610b2cc..d853551 100644
--- a/source/blender/alembic/intern/abc_mesh.h
+++ b/source/blender/alembic/intern/abc_mesh.h
@@ -68,8 +68,8 @@ private:
bool isAnimated() const;
- void writeMesh();
- void writeSubD();
+ void writeMesh(DerivedMesh *dm);
+ void writeSubD(DerivedMesh *dm);
void getMeshInfo(DerivedMesh *dm, std::vector<float> &points,
std::vector<int32_t> &facePoints,
More information about the Bf-blender-cvs
mailing list