[Bf-blender-cvs] [ace9871] alembic_basic_io: Add some shell code to support more object types.

Kévin Dietrich noreply at git.blender.org
Wed May 25 13:31:56 CEST 2016


Commit: ace98712b7e21e7f0cde39f48c696457614ecc4a
Author: Kévin Dietrich
Date:   Wed May 25 13:15:46 2016 +0200
Branches: alembic_basic_io
https://developer.blender.org/rBace98712b7e21e7f0cde39f48c696457614ecc4a

Add some shell code to support more object types.

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

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

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

diff --git a/source/blender/alembic/intern/alembic_capi.cc b/source/blender/alembic/intern/alembic_capi.cc
index f176c7a..ff02caf 100644
--- a/source/blender/alembic/intern/alembic_capi.cc
+++ b/source/blender/alembic/intern/alembic_capi.cc
@@ -24,6 +24,7 @@
 
 #include <Alembic/AbcCoreHDF5/All.h>
 #include <Alembic/AbcCoreOgawa/All.h>
+#include <Alembic/AbcMaterial/IMaterial.h>
 
 #include "abc_exporter.h"
 #include "abc_camera.h"
@@ -55,15 +56,21 @@ using Alembic::AbcGeom::P3fArraySamplePtr;
 using Alembic::AbcGeom::kWrapExisting;
 
 using Alembic::AbcGeom::IArchive;
-using Alembic::AbcGeom::ICameraSchema;
+using Alembic::AbcGeom::ICamera;
+using Alembic::AbcGeom::ICurves;
+using Alembic::AbcGeom::IFaceSet;
+using Alembic::AbcGeom::ILight;
 using Alembic::AbcGeom::INuPatch;
 using Alembic::AbcGeom::IObject;
+using Alembic::AbcGeom::IPoints;
 using Alembic::AbcGeom::IPolyMesh;
 using Alembic::AbcGeom::IPolyMeshSchema;
 using Alembic::AbcGeom::ISampleSelector;
 using Alembic::AbcGeom::ISubD;
 using Alembic::AbcGeom::IXform;
 
+using Alembic::AbcMaterial::IMaterial;
+
 static IArchive open_archive(const std::string &filename)
 {
 	Alembic::AbcCoreAbstract::ReadArraySampleCachePtr cache_ptr;
@@ -350,8 +357,10 @@ static void visit_object(const IObject &object,
 
 		const MetaData &md = child.getMetaData();
 
-		if (IXform::matches(md) && is_locator(child)) {
-			reader = new AbcEmptyReader(child, settings);
+		if (IXform::matches(md)) {
+			if (is_locator(child)) {
+				reader = new AbcEmptyReader(child, settings);
+			}
 		}
 		else if (IPolyMesh::matches(md)) {
 			reader = new AbcMeshReader(child, settings, false);
@@ -362,9 +371,27 @@ static void visit_object(const IObject &object,
 		else if (INuPatch::matches(md)) {
 			reader = new AbcNurbsReader(child, settings);
 		}
-		else if (ICameraSchema::matches(md)) {
+		else if (ICamera::matches(md)) {
 			reader = new AbcCameraReader(child, settings);
 		}
+		else if (IPoints::matches(md)) {
+			/* Pass for now. */
+		}
+		else if (IMaterial::matches(md)) {
+			/* Pass for now. */
+		}
+		else if (ILight::matches(md)) {
+			/* Pass for now. */
+		}
+		else if (IFaceSet::matches(md)) {
+			/* Pass, those are handled in the mesh reader. */
+		}
+		else if (ICurves::matches(md)) {
+			/* Pass for now. */
+		}
+		else {
+			assert(false);
+		}
 
 		if (reader) {
 			readers.push_back(reader);




More information about the Bf-blender-cvs mailing list