NVIDIA / gvdb-voxels

Sparse volume compute and rendering on NVIDIA GPUs
Other
672 stars 144 forks source link

Error Buiding OpenVDB Samples #121

Open ghost opened 3 years ago

ghost commented 3 years ago

I have successfully built and tested gvdb-voxels "as-is", but now I am trying to build gvdb-voxels with OpenVDB Samples enabled. I have built OpenVDB 8.1.1 and installed, and set GVDB_BUILD_OPENVDB and GVDB_BUILD_OPENVDB_SAMPLES to ON.

I am getting the following CMake messages:

Note: GVDB_OPENVDB_INSTALL_PATH not specified; assuming OpenVDB has been installed in /usr/local/lib64 (which should contain cmake/OpenVDB). CMake Error at source/gvdb_library/CMakeLists.txt:262 (find_package): By not providing "FindOpenVDB.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "OpenVDB", but CMake did not find one.

Could not find a package configuration file provided by "OpenVDB" with any of the following names:

OpenVDBConfig.cmake
openvdb-config.cmake

Add the installation prefix of "OpenVDB" to CMAKE_PREFIX_PATH or set "OpenVDB_DIR" to a directory containing one of the above files. If "OpenVDB" provides a separate development package or SDK, be sure it has been installed.

I have built and installed OpenVDB 8.1.1 and it is in /usr/local/lib64 however, there are no .cmake files in /usr/local/lib64/cmake/OpenVDB, which I assume is why OpenVDBConfig.cmake and openvdb-config.cmake are not found and do not seem to be present in my OpenVDB build tree, so not sure what to do about that. BUT, when I try to use the FindOpenVDB.cmake from the OpenVDB distribution with gvdb-voxels, I get compiliation errors:

[ 2%] Built target gvdbPTX [ 3%] Building CXX object gvdb_library/CMakeFiles/gvdb.dir/src/gvdb_volume_gvdb.cpp.o [ 4%] Built target gRenderKernelPTX In file included from gvdb-voxels/source/gvdb_library/src/gvdb_allocator.h:14, from gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:10: gvdb-voxels/source/gvdb_library/src/gvdb_vec.h:280:26: warning: type attributes ignored after type is already defined [-Wattributes] template class GVDB_API Vector3D; ^~~~~ gvdb-voxels/source/gvdb_library/src/gvdb_vec.h:281:26: warning: type attributes ignored after type is already defined [-Wattributes] template class GVDB_API Vector3D; ^~~~~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp: In constructor ‘nvdb::VolumeGVDB::VolumeGVDB()’: gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:64:12: warning: converting to non-pointer type ‘CUdevice’ {aka ‘int’} from NULL [-Wconversion-null] mDevice = NULL; ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp: In member function ‘bool nvdb::VolumeGVDB::LoadVDBInternal(openvdb::v8_1::GridBase::Ptr&)’: gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:1965:62: error: to refer to a type member of a template parameter, use ‘typename GridType::ValueType’ [-fpermissive] const bool isFloat = std::is_same<GridType::ValueType, float>::value; ^ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:1971:2: error: need ‘typename’ before ‘GridType::Ptr’ because ‘GridType’ is a dependent scope GridType::Ptr grid = openvdb::gridPtrCast(baseGrid); ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:1971:15: error: expected ‘;’ before ‘grid’ GridType::Ptr grid = openvdb::gridPtrCast(baseGrid); ^~~~~ ; gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:1973:22: error: ‘grid’ was not declared in this scope static_cast(grid->voxelSize().x()), ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:1973:22: note: suggested alternative: ‘void’ static_cast(grid->voxelSize().x()), ^~~~ void gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:1990:2: error: need ‘typename’ before ‘typename GridType::TreeType::LeafCIter’ because ‘typename GridType::TreeType’ is a dependent scope GridType::TreeType::LeafCIter iterator; ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:1990:31: error: expected ‘;’ before ‘iterator’ GridType::TreeType::LeafCIter iterator; ^~~~~ ; gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:1991:26: error: ‘iterator’ was not declared in this scope vdbSkip(grid, iterator, leaf_start); ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:1991:26: note: suggested alternatives: In file included from /opt/rh/devtoolset-8/root/usr/include/c++/8/bits/stl_algobase.h:65, from /opt/rh/devtoolset-8/root/usr/include/c++/8/bits/char_traits.h:39, from /opt/rh/devtoolset-8/root/usr/include/c++/8/ios:40, from /opt/rh/devtoolset-8/root/usr/include/c++/8/ostream:38, from /opt/rh/devtoolset-8/root/usr/include/c++/8/iostream:39, from gvdb-voxels/source/gvdb_library/src/gvdb_vec.h:15, from gvdb-voxels/source/gvdb_library/src/gvdb_allocator.h:14, from gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:10: /opt/rh/devtoolset-8/root/usr/include/c++/8/bits/stl_iterator_base_types.h:118:12: note: ‘std::iterator’ struct iterator ^~~~ /opt/rh/devtoolset-8/root/usr/include/c++/8/bits/stl_iterator_base_types.h:118:12: note: ‘std::iterator’ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2093:4: error: need ‘typename’ before ‘typename GridType::TreeType::LeafNodeType::Buffer’ because ‘typename GridType::TreeType::LeafNodeType’ is a dependent scope GridType::TreeType::LeafNodeType::Buffer leafBuffer = iterator->buffer(); ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2093:44: error: expected ‘;’ before ‘leafBuffer’ GridType::TreeType::LeafNodeType::Buffer leafBuffer = iterator->buffer(); ^~~ ; gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2096:11: error: ‘leafBuffer’ was not declared in this scope src = leafBuffer.data(); ^~~~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2096:11: note: suggested alternative: ‘glReadBuffer’ src = leafBuffer.data(); ^~~~~~ glReadBuffer gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2099:55: error: ‘leafBuffer’ was not declared in this scope src = ConvertToScalar(res0 res0 res0, (float)leafBuffer.data(), srcLengths, mValMin, mValMax); ^~~~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2099:55: note: suggested alternative: ‘glReadBuffer’ src = ConvertToScalar(res0 res0 res0, (float)leafBuffer.data(), srcLengths, mValMin, mValMax); ^~~~~~ glReadBuffer gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp: In member function ‘void nvdb::VolumeGVDB::SaveVDBInternal(std::string&)’: gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2215:2: error: need ‘typename’ before ‘TreeType::Ptr’ because ‘TreeType’ is a dependent scope TreeType::Ptr tree(treePtr); ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2215:15: error: expected ‘;’ before ‘tree’ TreeType::Ptr tree(treePtr); ^~~~~ ; gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2240:10: error: ‘tree’ was not declared in this scope leaf = tree->touchLeaf(openvdb::Coord(pos.x, pos.y, pos.z)); ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2240:10: note: suggested alternative: In file included from /usr/local/include/openvdb/tools/Count.h:15, from /usr/local/include/openvdb/tree/Tree.h:13, from /usr/local/include/openvdb/Grid.h:12, from /usr/local/include/openvdb/openvdb.h:12, from gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.h:21, from gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:12: /usr/local/include/openvdb/tree/NodeManager.h:25:11: note: ‘openvdb::v8_1::tree’ namespace tree { ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2250:33: error: ‘tree’ was not declared in this scope verbosef(" Leaf count: %d\n", tree->leafCount()); ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2250:33: note: suggested alternative: In file included from /usr/local/include/openvdb/tools/Count.h:15, from /usr/local/include/openvdb/tree/Tree.h:13, from /usr/local/include/openvdb/Grid.h:12, from /usr/local/include/openvdb/openvdb.h:12, from gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.h:21, from gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:12: /usr/local/include/openvdb/tree/NodeManager.h:25:11: note: ‘openvdb::v8_1::tree’ namespace tree { ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2254:2: error: need ‘typename’ before ‘GridType::Ptr’ because ‘GridType’ is a dependent scope GridType::Ptr grid = GridType::create(tree); ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2254:15: error: expected ‘;’ before ‘grid’ GridType::Ptr grid = GridType::create(tree); ^~~~~ ; gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2255:2: error: ‘grid’ was not declared in this scope grid->setGridClass(openvdb::GRID_FOG_VOLUME); ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2255:2: note: suggested alternative: ‘void’ grid->setGridClass(openvdb::GRID_FOG_VOLUME); ^~~~ void gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp: In member function ‘void nvdb::VolumeGVDB::PrepareRender(int, int, char)’: gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:4301:59: warning: converting to non-pointer type ‘long long unsigned int’ from NULL [-Wconversion-null] mScnInfo.dbuf = (dbuf == 255 ? NULL : mRenderBuf[dbuf].gpu); ^~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp: In member function ‘void nvdb::VolumeGVDB::ScatterDensity(int, float, float, nvdb::Vector3DF, bool, bool)’: gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:5637:33: warning: NULL used in arithmetic [-Wpointer-arith] if (mAux[AUX_PNTCLR].gpu != NULL && avgColor) { ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:5649:30: warning: NULL used in arithmetic [-Wpointer-arith] if (mAux[AUX_PNTCLR].gpu != NULL && avgColor) { ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp: In instantiation of ‘bool nvdb::VolumeGVDB::LoadVDBInternal(openvdb::v8_1::GridBase::Ptr&) [with GridType = openvdb::v8_1::Grid<openvdb::v8_1::tree::Tree<openvdb::v8_1::tree::RootNode<openvdb::v8_1::tree::InternalNode<openvdb::v8_1::tree::InternalNode<openvdb::v8_1::tree::LeafNode<float, 3>, 4>, 5> > > >; openvdb::v8_1::GridBase::Ptr = std::shared_ptr]’: gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2172:51: required from here gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:1971:2: error: dependent-name ‘GridType::Ptr’ is parsed as a non-type, but instantiation yields a type GridType::Ptr grid = openvdb::gridPtrCast(baseGrid); ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:1971:2: note: say ‘typename GridType::Ptr’ if a type is meant gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:1990:2: error: dependent-name ‘typename GridType::TreeType::LeafCIter’ is parsed as a non-type, but instantiation yields a type GridType::TreeType::LeafCIter iterator; ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:1990:2: note: say ‘typename typename GridType::TreeType::LeafCIter’ if a type is meant gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2093:4: error: dependent-name ‘typename GridType::TreeType::LeafNodeType::Buffer’ is parsed as a non-type, but instantiation yields a type GridType::TreeType::LeafNodeType::Buffer leafBuffer = iterator->buffer(); ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2093:4: note: say ‘typename typename GridType::TreeType::LeafNodeType::Buffer’ if a type is meant gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp: In instantiation of ‘bool nvdb::VolumeGVDB::LoadVDBInternal(openvdb::v8_1::GridBase::Ptr&) [with GridType = openvdb::v8_1::Grid<openvdb::v8_1::tree::Tree<openvdb::v8_1::tree::RootNode<openvdb::v8_1::tree::InternalNode<openvdb::v8_1::tree::InternalNode<openvdb::v8_1::tree::InternalNode<openvdb::v8_1::tree::LeafNode<float, 4>, 3>, 3>, 3> > > >; openvdb::v8_1::GridBase::Ptr = std::shared_ptr]’: gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2180:50: required from here gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:1971:2: error: dependent-name ‘GridType::Ptr’ is parsed as a non-type, but instantiation yields a type GridType::Ptr grid = openvdb::gridPtrCast(baseGrid); ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:1971:2: note: say ‘typename GridType::Ptr’ if a type is meant gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:1990:2: error: dependent-name ‘typename GridType::TreeType::LeafCIter’ is parsed as a non-type, but instantiation yields a type GridType::TreeType::LeafCIter iterator; ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:1990:2: note: say ‘typename typename GridType::TreeType::LeafCIter’ if a type is meant gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2093:4: error: dependent-name ‘typename GridType::TreeType::LeafNodeType::Buffer’ is parsed as a non-type, but instantiation yields a type GridType::TreeType::LeafNodeType::Buffer leafBuffer = iterator->buffer(); ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2093:4: note: say ‘typename typename GridType::TreeType::LeafNodeType::Buffer’ if a type is meant gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp: In instantiation of ‘void nvdb::VolumeGVDB::SaveVDBInternal(std::string&) [with TreeType = openvdb::v8_1::tree::Tree<openvdb::v8_1::tree::RootNode<openvdb::v8_1::tree::InternalNode<openvdb::v8_1::tree::InternalNode<openvdb::v8_1::tree::LeafNode<float, 3>, 4>, 5> > >; std::string = std::basic_string]’: gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2292:38: required from here gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2215:2: error: dependent-name ‘TreeType::Ptr’ is parsed as a non-type, but instantiation yields a type TreeType::Ptr tree(treePtr); ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2215:2: note: say ‘typename TreeType::Ptr’ if a type is meant gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2254:2: error: dependent-name ‘GridType::Ptr’ is parsed as a non-type, but instantiation yields a type GridType::Ptr grid = GridType::create(tree); ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2254:2: note: say ‘typename GridType::Ptr’ if a type is meant gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp: In instantiation of ‘void nvdb::VolumeGVDB::SaveVDBInternal(std::string&) [with TreeType = openvdb::v8_1::tree::Tree<openvdb::v8_1::tree::RootNode<openvdb::v8_1::tree::InternalNode<openvdb::v8_1::tree::InternalNode<openvdb::v8_1::tree::InternalNode<openvdb::v8_1::tree::LeafNode<float, 4>, 3>, 3>, 3> > >; std::string = std::basic_string]’: gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2295:37: required from here gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2215:2: error: dependent-name ‘TreeType::Ptr’ is parsed as a non-type, but instantiation yields a type TreeType::Ptr tree(treePtr); ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2215:2: note: say ‘typename TreeType::Ptr’ if a type is meant gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2254:2: error: dependent-name ‘GridType::Ptr’ is parsed as a non-type, but instantiation yields a type GridType::Ptr grid = GridType::create(tree); ^~~~ gvdb-voxels/source/gvdb_library/src/gvdb_volume_gvdb.cpp:2254:2: note: say ‘typename GridType::Ptr’ if a type is meant make[2]: [gvdb_library/CMakeFiles/gvdb.dir/build.make:251: gvdb_library/CMakeFiles/gvdb.dir/src/gvdb_volume_gvdb.cpp.o] Error 1 make[1]: [CMakeFiles/Makefile2:314: gvdb_library/CMakeFiles/gvdb.dir/all] Error 2 make: *** [Makefile:149: all] Error 2

gongyuuhi commented 1 year ago

the same question,did you solve it

Fflyzz commented 2 days ago

i have the same question. and i have try openvdb 6.1, 9.0 but don't success.