From a9729e6d75c74f48c6135df710f117435e7ff2f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dietrich?= Date: Fri, 22 Apr 2016 11:46:02 +0200 Subject: [PATCH] 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. --- intern/openvdb/intern/openvdb_dense_convert.cc | 3 ++- intern/openvdb/intern/openvdb_dense_convert.h | 3 ++- 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); }