c++ - 从深度图中绘制表面的 3d

标签 c++ 3d ogre3d

使用立体视觉,我正在生成表示从相机观察到的 3d 环境的深度图。每个与相机位置相关联的“关键帧”都有一个深度图。目标是将这些 2d 深度图转换到 3d 空间(然后合并它们以重建整个环境)。

在 3d 中转换这些深度图的最佳(有效)方法是什么?每个深度图都是 752x480 大,所以三角形的数量可以增长得相当快。我想要一个自动系统来管理对象的详细程度。

我的团队使用 Ogre3d,所以如果能找到解决方案就太好了。我正在寻找的东西与 Terrain 所做的非常相似,除了我希望能够将生成的对象放在我想要的任何地方(平移、旋转),我认为 Terrain 无法做到这一点。

我是 Ogre3d 的新手,所以如果我应该知道一个简单的解决方案,请原谅我。如果 Ogre3d 以外的其他工具更适合我的问题,我很乐意了解它!

最佳答案

不清楚你想做什么“将 depahtmap 与环境合并”?

无论如何,在你的情况下,你似乎坚持使用地形高度图技术使它们成为 3d。 在您的情况下,由于深度图是屏幕对齐的,因此请使用屏幕空间简单的光线转换技术。所以你必须在 ogre3D 中做一个合成器,它获取深度图并将它转换到你想要的像素上。

深度图的平移和旋转可能仅限于屏幕上的 xy,就像地形高度图(您不能使用高度图创建洞穴)一样,您确实错过了一个维度。

没有直接关系但可能有帮助:在纯屏幕空间中,有一种技术“位置重建”可以帮助获得对象世界空间位置,但前提是您在用于生成深度图的相机上有大量信息重新使用,例如:http://www.gamerendering.com/2009/12/07/position-reconstruction/

关于c++ - 从深度图中绘制表面的 3d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3554953/

相关文章:

linux - Linux 上的 Ogre3D 错误

c++ - 在 Mac OS-X 上编译 C++ 程序时出现 "framework not found"

c++ - 使用 CMake 构建时缺少依赖项

c++ - socket编程初学者问题

java - 将 2D 屏幕坐标取消投影到 3D 世界坐标

java - 为什么我的逆投影矩阵的两个元素始终为 0?

c# - 如何在 C# 和 C++ 代码之间共享常量?

c++ - 为什么 Microsoft Visual Studio 找不到 <stdint.h>?

python - Python 中的 3D 绘图

cmake - 当 <package> 作为同一主项目的 "Could NOT find <package>"包含时,如何避免 CMAKE 错误 "add_subdirectory"