[Bf-blender-cvs] [d9b70e4] openvdb: Support for drawing the grid values in the viewport.

Kévin Dietrich noreply at git.blender.org
Sat Jun 13 03:45:46 CEST 2015


Commit: d9b70e40df78758db7f1eddb3946354df3286a35
Author: Kévin Dietrich
Date:   Fri Jun 12 03:55:53 2015 +0200
Branches: openvdb
https://developer.blender.org/rBd9b70e40df78758db7f1eddb3946354df3286a35

Support for drawing the grid values in the viewport.

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

M	intern/openvdb/intern/openvdb_render.cpp
M	intern/openvdb/intern/openvdb_render.h
M	intern/openvdb/openvdb_capi.cpp
M	intern/openvdb/openvdb_capi.h
M	source/blender/editors/space_view3d/drawobject.c

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

diff --git a/intern/openvdb/intern/openvdb_render.cpp b/intern/openvdb/intern/openvdb_render.cpp
index 51aa436..f9622d9 100644
--- a/intern/openvdb/intern/openvdb_render.cpp
+++ b/intern/openvdb/intern/openvdb_render.cpp
@@ -133,4 +133,30 @@ void OpenVDBPrimitive_draw_tree(OpenVDBPrimitive *vdb_prim, const bool draw_root
 	glEnd();
 }
 
+void OpenVDBPrimitive_draw_values(OpenVDBPrimitive *vdb_prim)
+{
+	using namespace openvdb;
+	using namespace openvdb::math;
+
+	FloatGrid::Ptr grid = gridPtrCast<FloatGrid>(vdb_prim->getGridPtr());
+	//	size_t num_points = grid->activeVoxelCount();
+
+	glPointSize(1.0f);
+	glBegin(GL_POINTS);
+
+	for (FloatGrid::ValueOnCIter iter = grid->cbeginValueOn(); iter; ++iter) {
+		float color = iter.getValue();
+
+		if (color < 0.1f) {
+			continue;
+		}
+
+		Vec3d point = grid->indexToWorld(iter.getCoord());
+		glColor3f(color, color, color);
+		glVertex3f(point.x(), point.y(), point.z());
+	}
+
+	glEnd();
+}
+
 }
diff --git a/intern/openvdb/intern/openvdb_render.h b/intern/openvdb/intern/openvdb_render.h
index 06bff35..5b2a4bd 100644
--- a/intern/openvdb/intern/openvdb_render.h
+++ b/intern/openvdb/intern/openvdb_render.h
@@ -9,6 +9,8 @@ void OpenVDBPrimitive_draw_tree(OpenVDBPrimitive *vdb_prim, const bool draw_root
                                 const bool draw_level_1, const bool draw_level_2,
                                 const bool draw_leaves);
 
+void OpenVDBPrimitive_draw_values(OpenVDBPrimitive *vdb_prim);
+
 }
 
 #endif /* __OPENVDB_RENDER_H__ */
diff --git a/intern/openvdb/openvdb_capi.cpp b/intern/openvdb/openvdb_capi.cpp
index 64df4b9..a75feeb 100644
--- a/intern/openvdb/openvdb_capi.cpp
+++ b/intern/openvdb/openvdb_capi.cpp
@@ -246,3 +246,8 @@ void OpenVDB_draw_primitive(OpenVDBPrimitive *vdb_prim,
 {
     internal::OpenVDBPrimitive_draw_tree(vdb_prim, draw_root, draw_level_1, draw_level_2, draw_leaves);
 }
+
+void OpenVDB_draw_primitive_values(struct OpenVDBPrimitive *vdb_prim)
+{
+	internal::OpenVDBPrimitive_draw_values(vdb_prim);
+}
diff --git a/intern/openvdb/openvdb_capi.h b/intern/openvdb/openvdb_capi.h
index d0d4d80..4ad22aa 100644
--- a/intern/openvdb/openvdb_capi.h
+++ b/intern/openvdb/openvdb_capi.h
@@ -124,6 +124,8 @@ void OpenVDB_draw_primitive(struct OpenVDBPrimitive *vdb_prim,
                             const bool draw_level_2,
                             const bool draw_leaves);
 
+void OpenVDB_draw_primitive_values(struct OpenVDBPrimitive *vdb_prim);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index becb2b1..d4d2dbe 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -8038,10 +8038,14 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, const short
 
 #ifdef WITH_OPENVDB
 				glLoadMatrixf(rv3d->viewmat);
-				if (sds->density)
+				if (sds->density) {
 					OpenVDB_draw_primitive(sds->density, true, true, true, true);
-				if (sds->density_high)
+					OpenVDB_draw_primitive_values(sds->density);
+				}
+				if (sds->density_high) {
 					OpenVDB_draw_primitive(sds->density_high, true, true, true, true);
+					OpenVDB_draw_primitive_values(sds->density_high);
+				}
 				glMultMatrixf(sds->fluidmat);
 #endif
 			}




More information about the Bf-blender-cvs mailing list