问题标签 [openvdb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
31 浏览

c++ - OpenVDB 需要什么版本的 zlib?

我在工作中使用的软件已经使用 zlib 版本 1.2.5-1,但我正准备添加一些需要 OpenVDB 的功能。在 OpenVDB 的 INSTALL 文件中,它列出了所有依赖项所需的版本,除了 zlib。在 google 和 here 上搜索并没有得到关于 OpenVDB 正常运行需要什么版本的 zlib 的信息。

有没有人从经验或卓越的谷歌搜索技能中知道 OpenVDB 的 zlib 最低版本是什么?

0 投票
2 回答
955 浏览

c++ - 在 DLL 中包含 OpenVDB;使用 Visual Studio 2015 链接错误

我正在尝试在 Visual Studio 2015 中编译我正在制作的 DLL,它充当 OpenVDB 中某些功能的 C 兼容包装器,使其可在现有 C 项目中使用。但是,当我构建时,我收到以下链接器错误:

OpenVDB 及其所有依赖项都在包含文件夹中,其目录被添加到其他包含目录中,这是我当前在链接器选项下的附加依赖项列表:

  • 块库
  • cppunit.lib
  • glew32.lib
  • glfw3.lib
  • 半库
  • iex-2_2.lib
  • IexMath-2_2.lib
  • IlmImf-2_2.lib
  • IlmImfUtil-2_2.lib
  • IlmThread-2_2.lib
  • Imath2_2.lib
  • 打开vdb.lib
  • tbb.lib
  • tbb_debug.lib
  • tbb_preview.lib
  • tbb_preview_debug.lib
  • tbbmalloc.lib
  • tbbmalloc_debug.lib
  • tbbproxy.lib
  • zlibstaticd.lib

我似乎找不到任何关于在 Visual Studio 中使用 OpenVDB 编译的信息来涵盖此类错误,并且对于我可能忘记的内容感到非常困惑。

0 投票
1 回答
326 浏览

c++ - OpenVDB 链接器错误:未解析的外部符号

我希望在项目中使用 OpenVDB 库。该库已在 Windows7 x64 上使用 \MD 成功编译(如https://github.com/rchoetzlein/win_openvdb中所述)。OpenVDB_cookbook 也成功编译和执行。如果我将自己的代码放入说明书中,它也会成功编译和执行。

但,

  • 如果我将库链接到现有项目,

  • 或者我将相同的代码(来自说明书)复制粘贴到一个新项目中,并使用相同的 cmakelists.txt、Find*.cmake 文件以及项目属性中与说明书中相同的所有选项,

它引发链接器错误“LNK2019:函数 main 中引用的未解析的外部符号“void_cdecl openvdb::v3_0_0::initialize(void)”

即使是最简单的形式代码:

引发此链接器错误。

任何想法我做错了什么?我已经解决了几天,但无法解决它。

所有库 IlmBase、OpenEXR、glew、glfw、boost 和 OpenVDB 都使用 cmake 成功链接,并出现在项目属性页面中。

感谢您的帮助。

0 投票
1 回答
158 浏览

c++ - 无法让两个网格在一个 OpenVDB 文件中工作

问题如下:

对于同一个空间,我有两个不同的浮点值(密度)网格。

我可以使用下面的代码将它们都写入一个 OpenVDB 文件。但是当我尝试在Maya中使用Arnold进行体积渲染时,两个网格似乎都包含相同的值。

我可以确认网格在预览中(在 Mantaflow 中)完全不同,并且文件包含两个网格。

在我看来,第一个网格的值不知何故被第二个网格的值覆盖了。

这是 Mantaflow 插件中用于编写 OpenVDB 文件的相关部分:

所以我用它来写两个网格“绿色”和“红色”,但在我渲染的图片中,两者看起来都应该是红色。

这是我对 Maya/Arnold 设置的相应设置的屏幕截图...

选择两个网格作为输入

我刚刚尝试了来自 volumecollector 的不同通道并得到了相同的图片。

可以换频道,都像“红色”

值得一提的是渲染后的图片是什么样子的:

红色来自上面,绿色缺失

0 投票
0 回答
63 浏览

c++ - 使用 OpenVDB 重构 Enright 测试

如Ken Museth的文章中所述,我想使用 OpenVDB 重新创建 Enright 测试结果。

设置 OpenVDB 后,我创建了与 OpenVDB 测试git中描述的方式类似的球体。

我收到的结果与文章中显示的结果大不相同。

我的代码如下所示:

我的结果如下:

活动体素 MV:0.742089

内存 MB:617.325

活动体素 MV:0.742089

内存 MB:56.234

正如我们所看到的,它比文章中的结果大十倍

结果可以在文章中的表 II、III 和 IV 中看到,参考 512^3 网格大小,具有 [6,5,4,3] 树分支。我已经达到了几乎相同数量的活动体素(表 III),但有显着的额外内存消耗表(IV),而表 II 的结果非常混乱。我错过了什么吗?或者做错了什么,可能没有像文章所述那样激活某种压缩或位量化。

同样,当使用查看器查看生成的网格时,它会显示一个完美的圆形球体(不是以布尔方式体素化),这就是我想要的。

有什么想法吗?

谢谢你

0 投票
0 回答
215 浏览

linker-errors - Mac 上的 OpenVDB 5.1.0 Hello World 示例链接错误

我尝试了不同的方法来运行最新版本 5.1.0的 openvdb食谱中的 hello world 示例。但是我的 MacBook Pro(macOS High Sierra 10.13.4)不断Undefined symbols for architecture x86_64出现错误。

为了缩小问题范围,我将 hello world 示例简化为:

为了编译代码,我使用 homebrew 安装了 openvdb 5.1.0 brew install openvdb。我用来编译代码的命令行是(g++ version = 5.4.0):

我得到的是:

似乎该openvdb库没有包含功能实现。我错过了什么?

我还尝试从 openvdb git v5.1.0 编译其他依赖包是通过自制软件安装的(只有 blosc 是从 c-blosc git中提取的)。但是,错误是相同的。

有人在 Mac 上运行 openvdb 5.1.0 时遇到同样的问题吗?

更新

我尝试使用nm来确定 test.o 中的符号(使用相同的编译命令而不引用任何库)是否在 .o 中openvdb.dylib。我的目标符号是simplify. 输出如下:

$ nm -A test.o | grep 简化

test.o: U __ZN7openvdb4v5_14math8simplify ESt10 shared_ptrINS1_9AffineMapEE

$ nm -A libopenvdb.dylib | grep 简化

libopenvdb.dylib: 0000000000027a2a T __ZN7openvdb4v5_14math8simplify ENSt3__110 shared_ptrINS1_9AffineMapEE E

$ nm -A git5.1.0/libopenvdb.dylib | grep 简化

libopenvdb.dylib: 00000000000d56c0 T __ZN7openvdb8v5_ 1abi34 math8simplify EN5boost10 shared_ptrINS1_9AffineMapEE E

(为了更好的可读性,我删除了路径)

就是这个!我已经强调了三个不同之处。我不知道突出显示部分的确切含义。我的猜测是三个文件中的 shared_ptr 来自不同的来源(C++x0、C++11、Boost)?但我编译 test.o 时包含 Boost 标头并打开了 c++11。

对于推理差异有什么好的建议吗?

0 投票
0 回答
203 浏览

c++ - CMake提升链接不尊重顺序

我试图编译一个使用 OpenVDB 的项目。OpenVDB 本身依赖于 Boost。

该项目包含几个库和几个可执行文件。其中一个库需要 OpenVDB(因此也需要 Boost),而可执行文件需要该库。

我的 CMakeLists 可以简化为

根 CMakeLists

库 CMakeLists

最后可执行

我知道 Boost::system 是重复的,我故意这样做是为了尝试使其链接,但没有成功。

调用的链接器行如下

如您所见,OpenVDB 链接在接近尾声,而 boost 之前已链接,所以我有一个 boost 链接错误作为这个

我不确定为什么要在 OpenVDB 之前链接 Boost,因为我明确指定在 OpenVDB 之后链接 Boost 并试图强制它将它链接到可执行文件的第一个和最后一个。

此错误仅在 Linux 中发生。

知道发生了什么吗?

0 投票
1 回答
158 浏览

voxel - 通过体素分析 3D 对象

我计划使用 OpenVDB 来分析 3D 对象/网格。目标是:

  • 用一定的标准检测物体表面区域,比如斜率
  • 然后操纵那些区域
  • 例如,操作可能会将其他 3D 对象添加到这些区域

茶壶模型

OpenVDB 有一些可用的工具

  1. 转换工具
  2. 过滤器
  3. 拓扑运算
  4. 水平集工具
  5. 形态学运算
  6. 几何变换
  7. 合成工具
  8. ...

这是一大套令人困惑的工具可供选择。有 OpenVDB 经验的人知道吗:

  1. OpenVDB 是实现我目标的合适库吗
  2. 如果是这样,哪个 OpenVDB 工具最适合我的需求
0 投票
0 回答
78 浏览

c++ - 通过体素分析传统的三角形网格

我在 Qt Creator 上有一个qmake项目,使用Qt3D渲染具有三角形网格的3D 场景。此处提供了一个示例。我打算使用 OpenVDB工具来分析我的 Qt3D 网格。

  • 将 Qt3D 网格转换为 OpenVDB 网格是能够通过 Qt3D 使用 OpenVDB 工具的正确方法吗?
  • 通过 OpenVDB 网格工具分析我的 Qt3D 网格的最佳方法是什么?
  • 是否有任何可能有帮助的文档或参考资料?

Qt3DOpenVDBRenderer存储库,但是:

  • 据我了解,它只是加载 OpenVDB 网格并使用 Qt3D 渲染它们
  • 它不处理现有的 Qt3D 网格
  • 它只认为Qt3DRender::QGeometryRenderer::Points原始类型,但我需要Qt3DRender::QGeometryRenderer::Triangles

谢谢。

0 投票
1 回答
200 浏览

polygon - Performance of converting polygons to voxels and vice versa

What is the performance of transforming between geometry primitives of polygons and voxels by VoxelizePolygons?

Is there any benchmark tests on it? I'm trying to estimate if it is a critical overhead for an application handling polygon meshes of around several hundred mega bytes in average size.