[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