[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