c++ - 从网格渲染 RGB-D 图像

标签 c++ graphics 3d rendering vtk

我有一个网格模型(.ply 文件),我用 VTK 渲染了它并改变了相机视点。

从新相机的角度来看,我如何渲染 RGB 和深度图像?我认为这可能是光线追踪,但不确定

编辑

我想生成一个真实的深度图,而不仅仅是深度的可视化。可以通过使用 Z 缓冲区中的值并在 0-255 之间缩放来实现可视化,但这不提供真实的深度信息。

最佳答案

为了从相机获得真实世界的深度,我做了以下事情:

double z = render_win->GetZbufferDataAtPoint(x,y);
worldPicker->Pick(x, y, z, renderer);
worldPicker->GetPickPosition(coords);
double euclidean_distance = sqrt(pow((coords[0] - cam_pos[0]), 2) + pow(coords[1] - cam_pos[1], 2) + pow(coords[2] - cam_pos[2], 2));

其中 cam_pos 是真实世界坐标中的相机位置。这似乎可以解决问题

关于c++ - 从网格渲染 RGB-D 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17654545/

相关文章:

c++ - 这个局部变量是否隐藏/隐藏了另一个常态或 Visual Studio 中的错误?

c++ - 返回 std::string 时指针无效(libc 如此说)

java - 欧拉计划 N# 8 JAVA

java - 重画功能

opengl - 使用单个绘制调用在 OpenGL 中渲染多个模型

c++ - 存储在文件中的记录

graphics - nVidia GLSL 不支持 sampler1D?

graphics - 销售 Mono 的商业软件

r - 从 R 中的时间序列数据制作 3D 表面

python - 如何将这两条 3D 线与 Python 的 matplotlib 中的表面连接在一起