[Bf-blender-cvs] [ba9800d] openvdb: Fix grid clipping resulting in empty trees.

Kévin Dietrich noreply at git.blender.org
Fri Jun 5 22:25:05 CEST 2015


Commit: ba9800d1e39e0f80f9b2ac57ccbd2daead51ce27
Author: Kévin Dietrich
Date:   Fri Jun 5 22:03:46 2015 +0200
Branches: openvdb
https://developer.blender.org/rBba9800d1e39e0f80f9b2ac57ccbd2daead51ce27

Fix grid clipping resulting in empty trees.

Issue was that the grids didn't have a transform set when clipping was
happening. As the clip operator copies the transform (here an invalid
one) from the grid to the mask if their tranforms mismatch, the
operation resulted in an invalid/empty tree.

(Best explanation I can give so far.)

Also for some reason exporting the obstacles field doesn't work anymore,
so it is disabled for now, and so is clipping for it as it doesn't make
sense to clip the obstacles based on the density field.

===================================================================

M	intern/openvdb/intern/openvdb_dense_convert.cpp
M	intern/openvdb/intern/openvdb_dense_convert.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 0652f03..3de0580 100644
--- a/intern/openvdb/intern/openvdb_dense_convert.cpp
+++ b/intern/openvdb/intern/openvdb_dense_convert.cpp
@@ -107,12 +107,13 @@ GridBase *OpenVDB_export_vector_grid(OpenVDBWriter *writer,
 	MergeScalarGrids op(&(grid[0]->tree()), &(grid[1]->tree()), &(grid[2]->tree()));
 	tools::foreach(vecgrid->beginValueOn(), op, true, false);
 
+	vecgrid->setTransform(transform);
+
 	if (mask) {
 		vecgrid = tools::clip(*vecgrid, *mask);
 	}
 
 	vecgrid->setName(name);
-	vecgrid->setTransform(transform);
 	vecgrid->setIsInWorldSpace(false);
 	vecgrid->setVectorType(vec_type);
 	vecgrid->insertMeta("is_color", BoolMetadata(is_color));
diff --git a/intern/openvdb/intern/openvdb_dense_convert.h b/intern/openvdb/intern/openvdb_dense_convert.h
index 9d215ad..15b6452 100644
--- a/intern/openvdb/intern/openvdb_dense_convert.h
+++ b/intern/openvdb/intern/openvdb_dense_convert.h
@@ -62,12 +62,13 @@ GridType *OpenVDB_export_grid(OpenVDBWriter *writer,
 	tools::Dense<const T, openvdb::tools::LayoutXYZ> dense_grid(bbox, data);
 	tools::copyFromDense(dense_grid, grid->tree(), 1e-3f);
 
+	grid->setTransform(transform);
+
 	if (mask) {
 		grid = tools::clip(*grid, *mask);
 	}
 
 	grid->setName(name);
-	grid->setTransform(transform);
 	grid->setIsInWorldSpace(false);
 
 	writer->insert(grid);
diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c
index 3eb7392..a922f9a 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -3176,7 +3176,7 @@ static void OpenVDB_export_smoke(SmokeDomainSettings *sds, struct OpenVDBWriter
 		}
 
 		OpenVDB_export_grid_vec(writer, "Velocity", vx, vy, vz, sds->res, sds->fluidmat, VEC_CONTRAVARIANT_RELATIVE, false, density_grid);
-		OpenVDB_export_grid_ch(writer, "Obstacles", obstacles, sds->res, sds->fluidmat, density_grid);
+		//OpenVDB_export_grid_ch(writer, "Obstacles", obstacles, sds->res, sds->fluidmat, NULL);
 	}
 
 	if (sds->wt) {




More information about the Bf-blender-cvs mailing list