diff options
Diffstat (limited to 'source/blender/alembic/intern/abc_archive.cc')
-rw-r--r-- | source/blender/alembic/intern/abc_archive.cc | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/source/blender/alembic/intern/abc_archive.cc b/source/blender/alembic/intern/abc_archive.cc index bb527c23b20..15e7efad1c3 100644 --- a/source/blender/alembic/intern/abc_archive.cc +++ b/source/blender/alembic/intern/abc_archive.cc @@ -28,6 +28,8 @@ extern "C" { #include "BLI_path_util.h" #include "BLI_string.h" + +#include "DNA_scene_types.h" } #ifdef WIN32 @@ -147,12 +149,15 @@ Alembic::Abc::IObject ArchiveReader::getTop() static OArchive create_archive(std::ostream *ostream, const std::string &filename, const std::string &scene_name, - Alembic::Abc::MetaData &md, + double scene_fps, bool ogawa) { - md.set(Alembic::Abc::kApplicationNameKey, "Blender"); - md.set(Alembic::Abc::kUserDescriptionKey, scene_name); - md.set("blender_version", versionstr); + Alembic::Abc::MetaData abc_metadata; + + abc_metadata.set(Alembic::Abc::kApplicationNameKey, "Blender"); + abc_metadata.set(Alembic::Abc::kUserDescriptionKey, scene_name); + abc_metadata.set("blender_version", versionstr); + abc_metadata.set("FramesPerTimeUnit", std::to_string(scene_fps)); time_t raw_time; time(&raw_time); @@ -169,13 +174,13 @@ static OArchive create_archive(std::ostream *ostream, buffer[buffer_len - 1] = '\0'; } - md.set(Alembic::Abc::kDateWrittenKey, buffer); + abc_metadata.set(Alembic::Abc::kDateWrittenKey, buffer); ErrorHandler::Policy policy = ErrorHandler::kThrowPolicy; #ifdef WITH_ALEMBIC_HDF5 if (!ogawa) { - return OArchive(Alembic::AbcCoreHDF5::WriteArchive(), filename, md, policy); + return OArchive(Alembic::AbcCoreHDF5::WriteArchive(), filename, abc_metadata, policy); } #else static_cast<void>(filename); @@ -183,13 +188,13 @@ static OArchive create_archive(std::ostream *ostream, #endif Alembic::AbcCoreOgawa::WriteArchive archive_writer; - return OArchive(archive_writer(ostream, md), kWrapExisting, policy); + return OArchive(archive_writer(ostream, abc_metadata), kWrapExisting, policy); } ArchiveWriter::ArchiveWriter(const char *filename, - const char *scene, - bool do_ogawa, - Alembic::Abc::MetaData &md) + const std::string &abc_scene_name, + const Scene *scene, + bool do_ogawa) { /* Use stream to support unicode character paths on Windows. */ if (do_ogawa) { @@ -203,7 +208,7 @@ ArchiveWriter::ArchiveWriter(const char *filename, #endif } - m_archive = create_archive(&m_outfile, filename, scene, md, do_ogawa); + m_archive = create_archive(&m_outfile, filename, abc_scene_name, FPS, do_ogawa); } OArchive &ArchiveWriter::archive() |