[Bf-blender-cvs] [574d10ea9f2] cycles_procedural_api: add frame offset

Kévin Dietrich noreply at git.blender.org
Sun Dec 6 06:26:30 CET 2020


Commit: 574d10ea9f2a83b963ddcdf2d6fcac0e646f0d50
Author: Kévin Dietrich
Date:   Sun Dec 6 04:05:04 2020 +0100
Branches: cycles_procedural_api
https://developer.blender.org/rB574d10ea9f2a83b963ddcdf2d6fcac0e646f0d50

add frame offset

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

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

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

diff --git a/intern/cycles/blender/blender_object.cpp b/intern/cycles/blender/blender_object.cpp
index 95deb12480b..86321512b4d 100644
--- a/intern/cycles/blender/blender_object.cpp
+++ b/intern/cycles/blender/blender_object.cpp
@@ -507,9 +507,16 @@ void BlenderSync::sync_procedural(BL::Object &b_ob,
     procedural_map.used(procedural);
   }
 
-  procedural->set_frame(static_cast<float>(frame_current));
+  if (cache_file.override_frame()) {
+	  procedural->set_frame(cache_file.frame());
+  }
+  else {
+	  procedural->set_frame(static_cast<float>(frame_current));
+  }
+
   procedural->set_frame_rate(b_scene.render().fps() / b_scene.render().fps_base());
   procedural->set_default_curves_radius(cache_file.default_curves_radius());
+  procedural->set_frame_offset(cache_file.frame_offset());
 
   string absolute_path = blender_absolute_path(b_data, b_ob, b_mesh_cache.cache_file().filepath());
   procedural->set_filepath(ustring(absolute_path));
diff --git a/intern/cycles/render/alembic.cpp b/intern/cycles/render/alembic.cpp
index 2f96da58685..6d119d7f6b8 100644
--- a/intern/cycles/render/alembic.cpp
+++ b/intern/cycles/render/alembic.cpp
@@ -1118,6 +1118,7 @@ NODE_DEFINE(AlembicProcedural)
   SOCKET_STRING(filepath, "Filename", ustring());
   SOCKET_FLOAT(frame, "Frame", 1.0f);
   SOCKET_FLOAT(frame_rate, "Frame Rate", 24.0f);
+  SOCKET_FLOAT(frame_offset, "Frame Offset", 0.0f);
   SOCKET_FLOAT(default_curves_radius, "Default Curve Radius", 0.01f);
 
   SOCKET_NODE_ARRAY(objects, "Objects", &AlembicObject::node_type);
@@ -1197,7 +1198,7 @@ void AlembicProcedural::generate(Scene *scene, Progress &progress)
     objects_loaded = true;
   }
 
-  const chrono_t frame_time = (chrono_t)(frame / frame_rate);
+  const chrono_t frame_time = (chrono_t)((frame - frame_offset) / frame_rate);
 
   foreach (Node *node, objects) {
     AlembicObject *object = static_cast<AlembicObject *>(node);
diff --git a/intern/cycles/render/alembic.h b/intern/cycles/render/alembic.h
index d7ff39c7204..5e6890a96b0 100644
--- a/intern/cycles/render/alembic.h
+++ b/intern/cycles/render/alembic.h
@@ -409,13 +409,16 @@ class AlembicProcedural : public Procedural {
  public:
   NODE_DECLARE
 
-  /* The filepath to the archive */
+  /* The file path to the Alembic archive */
   NODE_SOCKET_API(ustring, filepath)
 
   /* The current frame to render. */
   NODE_SOCKET_API(float, frame)
 
-  /* The frame rate used for rendering. */
+  /* Subtracted to the current frame. */
+  NODE_SOCKET_API(float, frame_offset)
+
+  /* The frame rate used for rendering in units of frames per second. */
   NODE_SOCKET_API(float, frame_rate)
 
   /* List of AlembicObjects to render. */



More information about the Bf-blender-cvs mailing list