[Bf-blender-cvs] [d7e0c52ef0c] cycles_procedural_api: avoid reopening the archive at every frame

Kévin Dietrich noreply at git.blender.org
Tue Sep 22 17:29:46 CEST 2020


Commit: d7e0c52ef0c47b3abae1de514776122a649d2dbf
Author: Kévin Dietrich
Date:   Tue Sep 22 15:27:11 2020 +0200
Branches: cycles_procedural_api
https://developer.blender.org/rBd7e0c52ef0c47b3abae1de514776122a649d2dbf

avoid reopening the archive at every frame

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

M	intern/cycles/render/alembic.cpp
M	intern/cycles/render/alembic.h

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

diff --git a/intern/cycles/render/alembic.cpp b/intern/cycles/render/alembic.cpp
index fa4798350ba..4d57ca35e57 100644
--- a/intern/cycles/render/alembic.cpp
+++ b/intern/cycles/render/alembic.cpp
@@ -250,15 +250,17 @@ void AlembicProcedural::generate(Scene *scene)
     return;
   }
 
-  Alembic::AbcCoreFactory::IFactory factory;
-  factory.setPolicy(Alembic::Abc::ErrorHandler::kQuietNoopPolicy);
-  IArchive archive = factory.getArchive(filepath.c_str());
-
   if (!archive.valid()) {
-    // avoid potential infinite update loops in viewport synchronization
-    clear_modified();
-    // TODO : error reporting
-    return;
+    Alembic::AbcCoreFactory::IFactory factory;
+    factory.setPolicy(Alembic::Abc::ErrorHandler::kQuietNoopPolicy);
+    archive = factory.getArchive(filepath.c_str());
+
+    if (!archive.valid()) {
+      // avoid potential infinite update loops in viewport synchronization
+      clear_modified();
+      // TODO : error reporting
+      return;
+    }
   }
 
   auto frame_time = (Abc::chrono_t)(frame / frame_rate);
diff --git a/intern/cycles/render/alembic.h b/intern/cycles/render/alembic.h
index b3197cb2e1d..55679a04edf 100644
--- a/intern/cycles/render/alembic.h
+++ b/intern/cycles/render/alembic.h
@@ -86,6 +86,8 @@ class AlembicProcedural : public Procedural {
   array<AlembicObject *> objects;  // todo : Node::set
 
  private:
+  IArchive archive;
+
   void read_mesh(Scene *scene,
                  AlembicObject *abc_object,
                  Transform xform,



More information about the Bf-blender-cvs mailing list