[Bf-blender-cvs] [e189fe4] openvdb: Set vector type when converting a grid.
Kévin Dietrich
noreply at git.blender.org
Fri Jun 5 14:08:07 CEST 2015
Commit: e189fe46e1b9e9e045fa6eda830558b2c5df0704
Author: Kévin Dietrich
Date: Wed May 27 22:22:20 2015 +0200
Branches: openvdb
https://developer.blender.org/rBe189fe46e1b9e9e045fa6eda830558b2c5df0704
Set vector type when converting a grid.
===================================================================
M intern/openvdb/intern/openvdb_dense_convert.cpp
M intern/openvdb/intern/openvdb_dense_convert.h
M intern/openvdb/openvdb_capi.cpp
M intern/openvdb/openvdb_capi.h
M source/blender/blenkernel/intern/smoke.c
===================================================================
diff --git a/intern/openvdb/intern/openvdb_dense_convert.cpp b/intern/openvdb/intern/openvdb_dense_convert.cpp
index d38b4b5..e095d46 100644
--- a/intern/openvdb/intern/openvdb_dense_convert.cpp
+++ b/intern/openvdb/intern/openvdb_dense_convert.cpp
@@ -66,7 +66,8 @@ void OpenVDB_export_vector_grid(OpenVDBWriter *writer,
const std::string &name,
const float *data_x, const float *data_y, const float *data_z,
const int res[3],
- float fluid_mat[4][4])
+ float fluid_mat[4][4],
+ VecType vec_type)
{
math::CoordBBox bbox(Coord(0), Coord(res[0] - 1, res[1] - 1, res[2] - 1));
@@ -107,6 +108,7 @@ void OpenVDB_export_vector_grid(OpenVDBWriter *writer,
vecgrid->setName(name);
vecgrid->setTransform(transform);
vecgrid->setIsInWorldSpace(false);
+ vecgrid->setVectorType(vec_type);
writer->insert(vecgrid);
}
diff --git a/intern/openvdb/intern/openvdb_dense_convert.h b/intern/openvdb/intern/openvdb_dense_convert.h
index d7747c8..4102498 100644
--- a/intern/openvdb/intern/openvdb_dense_convert.h
+++ b/intern/openvdb/intern/openvdb_dense_convert.h
@@ -102,7 +102,8 @@ void OpenVDB_export_vector_grid(OpenVDBWriter *writer,
const std::string &name,
const float *data_x, const float *data_y, const float *data_z,
const int res[3],
- float fluid_mat[4][4]);
+ float fluid_mat[4][4],
+ openvdb::VecType vec_type);
void OpenVDB_import_grid_vector(OpenVDBReader *reader,
diff --git a/intern/openvdb/openvdb_capi.cpp b/intern/openvdb/openvdb_capi.cpp
index b3d9aa8..dc1ea07 100644
--- a/intern/openvdb/openvdb_capi.cpp
+++ b/intern/openvdb/openvdb_capi.cpp
@@ -110,9 +110,11 @@ void OpenVDB_export_grid_ch(OpenVDBWriter *writer,
void OpenVDB_export_grid_vec(struct OpenVDBWriter *writer,
const char *name,
const float *data_x, const float *data_y, const float *data_z,
- const int res[3], float matrix[4][4])
+ const int res[3], float matrix[4][4], short vec_type)
{
- internal::OpenVDB_export_vector_grid(writer, name, data_x, data_y, data_z, res, matrix);
+ internal::OpenVDB_export_vector_grid(writer, name,
+ data_x, data_y, data_z, res, matrix,
+ static_cast<openvdb::VecType>(vec_type));
}
void OpenVDB_import_grid_fl(OpenVDBReader *reader,
diff --git a/intern/openvdb/openvdb_capi.h b/intern/openvdb/openvdb_capi.h
index be2d49d..62e43e9 100644
--- a/intern/openvdb/openvdb_capi.h
+++ b/intern/openvdb/openvdb_capi.h
@@ -54,6 +54,14 @@ enum {
OPENVDB_UNKNOWN_ERROR = 11,
};
+enum {
+ VEC_INVARIANT = 0,
+ VEC_COVARIANT = 1,
+ VEC_COVARIANT_NORMALIZE = 2,
+ VEC_CONTRAVARIANT_RELATIVE = 3,
+ VEC_CONTRAVARIANT_ABSOLUTE = 4,
+};
+
void OpenVDB_update_fluid_transform(const char *filename,
float matrix[4][4],
float matrix_high[4][4]);
@@ -69,7 +77,7 @@ void OpenVDB_export_grid_ch(struct OpenVDBWriter *writer,
void OpenVDB_export_grid_vec(struct OpenVDBWriter *writer,
const char *name,
const float *data_x, const float *data_y, const float *data_z,
- const int res[3], float matrix[4][4]);
+ const int res[3], float matrix[4][4], short vec_type);
void OpenVDB_import_grid_fl(struct OpenVDBReader *reader,
const char *name, float **data,
diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c
index 72d9beb..942f90e 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -3165,13 +3165,13 @@ static void OpenVDB_export_smoke(SmokeDomainSettings *sds, struct OpenVDBWriter
// OpenVDB_export_grid_fl(writer, "Red", r, sds->res, sds->fluidmat);
// OpenVDB_export_grid_fl(writer, "Green", g, sds->res, sds->fluidmat);
// OpenVDB_export_grid_fl(writer, "Blue", b, sds->res, sds->fluidmat);
- OpenVDB_export_grid_vec(writer, "Color", r, g, b, sds->res, sds->fluidmat);
+ OpenVDB_export_grid_vec(writer, "Color", r, g, b, sds->res, sds->fluidmat, VEC_INVARIANT);
}
// OpenVDB_export_grid_fl(writer, "Velocity X", vx, sds->res, sds->fluidmat);
// OpenVDB_export_grid_fl(writer, "Velocity Y", vy, sds->res, sds->fluidmat);
// OpenVDB_export_grid_fl(writer, "Velocity Z", vz, sds->res, sds->fluidmat);
- OpenVDB_export_grid_vec(writer, "Velocity", vx, vy, vz, sds->res, sds->fluidmat);
+ OpenVDB_export_grid_vec(writer, "Velocity", vx, vy, vz, sds->res, sds->fluidmat, VEC_CONTRAVARIANT_RELATIVE);
OpenVDB_export_grid_ch(writer, "Obstacles", obstacles, sds->res, sds->fluidmat);
}
@@ -3193,13 +3193,13 @@ static void OpenVDB_export_smoke(SmokeDomainSettings *sds, struct OpenVDBWriter
// OpenVDB_export_grid_fl(writer, "Red High", r, sds->res, sds->fluidmat_wt);
// OpenVDB_export_grid_fl(writer, "Green High", g, sds->res, sds->fluidmat_wt);
// OpenVDB_export_grid_fl(writer, "Blue High", b, sds->res, sds->fluidmat_wt);
- OpenVDB_export_grid_vec(writer, "Color High", r, g, b, sds->res_wt, sds->fluidmat_wt);
+ OpenVDB_export_grid_vec(writer, "Color High", r, g, b, sds->res_wt, sds->fluidmat_wt, VEC_INVARIANT);
}
// OpenVDB_export_grid_fl(writer, "Texture Coordinates U", tcu, sds->res, sds->fluidmat);
// OpenVDB_export_grid_fl(writer, "Texture Coordinates V", tcv, sds->res, sds->fluidmat);
// OpenVDB_export_grid_fl(writer, "Texture Coordinates W", tcw, sds->res, sds->fluidmat);
- OpenVDB_export_grid_vec(writer, "Texture Coordinates", tcu, tcv, tcw, sds->res, sds->fluidmat);
+ OpenVDB_export_grid_vec(writer, "Texture Coordinates", tcu, tcv, tcw, sds->res, sds->fluidmat, VEC_INVARIANT);
}
}
@@ -3287,6 +3287,11 @@ void smokeModifier_OpenVDB_export(SmokeModifierData *smd, Scene *scene, Object *
orig_frame = scene->r.cfra;
cache = BKE_openvdb_get_current_cache(sds);
+
+ if (cache->writer == NULL) {
+ cache->writer = OpenVDBWriter_create();
+ }
+
OpenVDBWriter_set_compression(cache->writer, cache->compression);
for (fr = cache->startframe; fr <= cache->endframe; fr++) {
More information about the Bf-blender-cvs
mailing list