[Bf-blender-cvs] [53818c5] alembic_basic_io: Use a DerivedMesh to stream curve data as well.
Kévin Dietrich
noreply at git.blender.org
Wed Jun 15 17:02:55 CEST 2016
Commit: 53818c594b71e15c51fb9b3b76733507a08d5ab0
Author: Kévin Dietrich
Date: Wed Jun 15 12:54:17 2016 +0200
Branches: alembic_basic_io
https://developer.blender.org/rB53818c594b71e15c51fb9b3b76733507a08d5ab0
Use a DerivedMesh to stream curve data as well.
Simplifies the code a bit.
===================================================================
M source/blender/alembic/intern/alembic_capi.cc
M source/blender/modifiers/intern/MOD_meshsequencecache.c
===================================================================
diff --git a/source/blender/alembic/intern/alembic_capi.cc b/source/blender/alembic/intern/alembic_capi.cc
index 6894bb06..df4c13c 100644
--- a/source/blender/alembic/intern/alembic_capi.cc
+++ b/source/blender/alembic/intern/alembic_capi.cc
@@ -723,7 +723,7 @@ static DerivedMesh *read_points_sample(DerivedMesh *dm, const IObject &iobject,
return dm;
}
-void read_curves_sample(float (*vertexCos)[3], int max_verts, const IObject &iobject, const float time)
+DerivedMesh *read_curves_sample(DerivedMesh *dm, const IObject &iobject, const float time)
{
ICurves points(iobject, kWrapExisting);
ICurvesSchema schema = points.getSchema();
@@ -732,11 +732,9 @@ void read_curves_sample(float (*vertexCos)[3], int max_verts, const IObject &iob
const P3fArraySamplePtr &positions = sample.getPositions();
- for (int i = 0; i < min_ff(max_verts, positions->size()); ++i) {
- float *vert = vertexCos[i];
- Imath::V3f pos_in = (*positions)[i];
- copy_yup_zup(vert, pos_in.getValue());
- }
+ read_mverts(dm->getVertArray(dm), positions, N3fArraySamplePtr());
+
+ return dm;
}
DerivedMesh *ABC_read_mesh(DerivedMesh *dm, const char *filepath, const char *object_path, const float time)
@@ -762,29 +760,9 @@ DerivedMesh *ABC_read_mesh(DerivedMesh *dm, const char *filepath, const char *ob
else if (IPoints::matches(header)) {
return read_points_sample(dm, iobject, time);
}
-
- return NULL;
-}
-
-void ABC_read_vertex_cache(const char *filepath, const char *object_path, const float time,
- float (*vertexCos)[3], int max_verts)
-{
- IArchive archive = open_archive(filepath);
-
- if (!archive.valid()) {
- return;
+ else if (ICurves::matches(header)) {
+ return read_curves_sample(dm, iobject, time);
}
- IObject iobject;
- find_iobject(archive.getTop(), iobject, object_path);
-
- if (!iobject.valid()) {
- return;
- }
-
- const ObjectHeader &header = iobject.getHeader();
-
- if (ICurves::matches(header)) {
- return read_curves_sample(vertexCos, max_verts, iobject, time);
- }
+ return NULL;
}
diff --git a/source/blender/modifiers/intern/MOD_meshsequencecache.c b/source/blender/modifiers/intern/MOD_meshsequencecache.c
index 4bfbc2f..8954074 100644
--- a/source/blender/modifiers/intern/MOD_meshsequencecache.c
+++ b/source/blender/modifiers/intern/MOD_meshsequencecache.c
@@ -95,31 +95,6 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
#endif
}
-static void deformVerts(ModifierData *md, Object *ob,
- DerivedMesh *derivedData,
- float (*vertexCos)[3],
- int numVerts,
- ModifierApplyFlag flag)
-{
- MeshSeqCacheModifierData *mcmd = (MeshSeqCacheModifierData *) md;
-
- Scene *scene = md->scene;
-
- char filepath[1024];
- BKE_cachefile_filepath_get(scene, mcmd->cache_file, filepath);
-
- const float frame = BKE_scene_frame_get(scene);
- const float time = BKE_cachefile_time_offset(mcmd->cache_file, frame / FPS);
-
- ABC_read_vertex_cache(filepath,
- mcmd->abc_object_path,
- time,
- vertexCos,
- numVerts);
-
- UNUSED_VARS(ob, derivedData, flag);
-}
-
static bool dependsOnTime(ModifierData *md)
{
UNUSED_VARS(md);
@@ -138,11 +113,11 @@ ModifierTypeInfo modifierType_MeshSequenceCache = {
/* name */ "Mesh Sequence Cache",
/* structName */ "MeshSeqCacheModifierData",
/* structSize */ sizeof(MeshSeqCacheModifierData),
- /* type */ eModifierTypeType_DeformOrConstruct,
+ /* type */ eModifierTypeType_Constructive,
/* flags */ eModifierTypeFlag_AcceptsMesh |
eModifierTypeFlag_AcceptsCVs,
/* copyData */ copyData,
- /* deformVerts */ deformVerts,
+ /* deformVerts */ NULL,
/* deformMatrices */ NULL,
/* deformVertsEM */ NULL,
/* deformMatricesEM */ NULL,
More information about the Bf-blender-cvs
mailing list