Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKévin Dietrich <kevin.dietrich@mailoo.org>2016-04-22 12:46:02 +0300
committerKévin Dietrich <kevin.dietrich@mailoo.org>2016-04-22 12:46:02 +0300
commita9729e6d75c74f48c6135df710f117435e7ff2f3 (patch)
tree8f7623ac04d1142fccf89ebb06049ae207a76841 /intern/openvdb
parent87dcee0c0c33ab2f2a8d22e0d0b53f0289ef7a46 (diff)
Fix T48236: OpenVDB smoke cache glitches out with smokeless flames.
Issue was that before writing to disk grids are clipped against the density field's tree to optimize for memory/disk space, which in the case of simulations with no density field results in all grids having empty trees. For now avoid clipping against empty grids, but perhaps in the future it can be interresting to have some UI parameters to let the user choose the grid used for clipping.
Diffstat (limited to 'intern/openvdb')
-rw-r--r--intern/openvdb/intern/openvdb_dense_convert.cc3
-rw-r--r--intern/openvdb/intern/openvdb_dense_convert.h3
2 files changed, 4 insertions, 2 deletions
diff --git a/intern/openvdb/intern/openvdb_dense_convert.cc b/intern/openvdb/intern/openvdb_dense_convert.cc
index d4f62776988..ef52408bd93 100644
--- a/intern/openvdb/intern/openvdb_dense_convert.cc
+++ b/intern/openvdb/intern/openvdb_dense_convert.cc
@@ -115,7 +115,8 @@ openvdb::GridBase *OpenVDB_export_vector_grid(
vecgrid->setTransform(transform);
- if (mask) {
+ /* Avoid clipping against an empty grid. */
+ if (mask && !mask->tree().empty()) {
vecgrid = tools::clip(*vecgrid, *mask);
}
diff --git a/intern/openvdb/intern/openvdb_dense_convert.h b/intern/openvdb/intern/openvdb_dense_convert.h
index fd10334c4ad..284fd1ceeae 100644
--- a/intern/openvdb/intern/openvdb_dense_convert.h
+++ b/intern/openvdb/intern/openvdb_dense_convert.h
@@ -64,7 +64,8 @@ GridType *OpenVDB_export_grid(
grid->setTransform(transform);
- if (mask) {
+ /* Avoid clipping against an empty grid. */
+ if (mask && !mask->tree().empty()) {
grid = tools::clip(*grid, *mask);
}