Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenGL获取像素';原始三维坐标_Opengl_Point Clouds - Fatal编程技术网

OpenGL获取像素';原始三维坐标

OpenGL获取像素';原始三维坐标,opengl,point-clouds,Opengl,Point Clouds,我有一个大的点云,每个点都有{x,y,z,r,g,b}。 我能够从给定的相机姿势和视角查看点云,并将其保存到屏幕截图中。我需要基于此图像对我的点云进行更改 如何获得投影图像中每个像素的原始坐标 基本上,我不只是在像素上投影每个点,我还想存储每个像素的原始位置(或任何其他元数据) 我想为每个视图保存N*M*3(RGB)+N*M*3(坐标),而不是仅保存N*M*3矩阵。 请注意,我每次都需要这些信息,计算开销不是问题。如果没有更多关于设置或要求的详细信息,我将假设您处于现代OpenGL(3.x+)环

我有一个大的点云,每个点都有{x,y,z,r,g,b}。 我能够从给定的相机姿势和视角查看点云,并将其保存到屏幕截图中。我需要基于此图像对我的点云进行更改

如何获得投影图像中每个像素的原始坐标

基本上,我不只是在像素上投影每个点,我还想存储每个像素的原始位置(或任何其他元数据)

我想为每个视图保存N*M*3(RGB)+N*M*3(坐标),而不是仅保存N*M*3矩阵。
请注意,我每次都需要这些信息,计算开销不是问题。

如果没有更多关于设置或要求的详细信息,我将假设您处于现代OpenGL(3.x+)环境中。在这种情况下,您可以简单地使用一个附加的渲染目标,并将附加数据存储在另一个(非颜色)目标中

我假设您的点云数据正在传递到顶点(或几何体着色器)。您需要将原始的
x
y
z
值传递给具有
变量的片段着色器。向片段着色器添加额外的
out
参数,并将原始坐标写入新的
out
参数

然后通过使用将目标绑定到新输出。大概您已经在使用颜色输出执行此操作了。您的附加目标纹理可能需要是浮点纹理(
GL\u RGB32F
,如果您的驱动程序支持)。“正常”彩色目标(
GL_RGBA8
)的分辨率不够

拍摄一个“屏幕截图”,您将保存颜色输出和附加目标。颜色输出中的每个像素将对应于附加目标中的同一像素,您可以读取输出的原始点的坐标。如果要使用GPU进行进一步处理,可以在同一像素处对两种纹理进行采样以进行对应。您需要决定如何实现“空”像素(例如,不存在对象的像素)


您可以为所需的任何其他元数据复制此项,添加和绑定其他目标(假定您的设置支持足够的目标)。您可以拥有的最大输出数由定义,但保证至少为8。

如果没有更多关于设置或要求的详细信息,我将假设您处于现代OpenGL(3.x+)环境中。在这种情况下,您可以简单地使用一个附加的渲染目标,并将附加数据存储在另一个(非颜色)目标中

我假设您的点云数据正在传递到顶点(或几何体着色器)。您需要将原始的
x
y
z
值传递给具有
变量的片段着色器。向片段着色器添加额外的
out
参数,并将原始坐标写入新的
out
参数

然后通过使用将目标绑定到新输出。大概您已经在使用颜色输出执行此操作了。您的附加目标纹理可能需要是浮点纹理(
GL\u RGB32F
,如果您的驱动程序支持)。“正常”彩色目标(
GL_RGBA8
)的分辨率不够

拍摄一个“屏幕截图”,您将保存颜色输出和附加目标。颜色输出中的每个像素将对应于附加目标中的同一像素,您可以读取输出的原始点的坐标。如果要使用GPU进行进一步处理,可以在同一像素处对两种纹理进行采样以进行对应。您需要决定如何实现“空”像素(例如,不存在对象的像素)

您可以为所需的任何其他元数据复制此项,添加和绑定其他目标(假定您的设置支持足够的目标)。您可以拥有的最大输出数由定义,但保证至少为8