关于opengl:使用GPU查询点云中接近切割平面的点epsilon

关于opengl:使用GPU查询点云中接近切割平面的点epsilon

Query points epsilon-close to a cut plane in point cloud using the GPU

我正在尝试使用GPU功能解决当前问题:"给定点云P和由点和法线(Pp,Np)描述的定向平面,使云中的点以相等的距离说谎或小于飞机上的EPSILON "。

与我的一位同事交谈,我趋向于以下解决方案:

1)准备带有附加的纹理坐标的点的顶点缓冲区,以使每个点都具有不同的顶点坐标
2)将投影状态设置为正交
3)旋转网格,使平面的法线与-z轴对齐并偏移它,以使x,y,z = 0对应于Pp
4)将z裁剪平面设置为z:[-EPSILON; EPSILON]
5)渲染到纹理
6)从图形卡中检索纹理
7)从图形卡中读取纹理,并查看渲染了哪些点(以它们的索引为单位),这些点是在所需距离范围内的点。

现在问题如下:
q1)我需要打开一个窗框才能执行此操作吗?我在MATLAB内工作,并致电MEX-C。根据经验,我知道一旦您打开一个新的框架,整个西装就会惨败!
q2)为GLPoint提供纹理坐标的原语是什么?
q3)我不太清楚如何实现纹理渲染?任何参考,教程都很棒...
q4)您将如何从卡中检索此纹理?再次,任何参考资料,教程都会很棒...

我的时间很紧,因此,如果您能指出我应该学习的技术名称,而不是像别人做的那样,指向GLSL规范文档和OpenGL API,那就太好了。这些只是我的问题的答案太模糊了。

非常感谢您发表任何评论。

p.s。
另请注意,如果可能的话,我宁愿不使用任何诸如CUDA之类的资源,因此,获得了使用
尽可能多的OpenGL元素,而无需我编写新的着色器。

注意:交叉发布于
http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat


很简单:
令n为平面的法线,x为点。

1
2
3
4
5
n_u = n/norm(n)         //this is a normal vector of unit length
d   = scalarprod(n,x)   //this is the distance of the plane to the origin

for each point p_i
    d_i = abs(scalarprod(p_i,n) - d)  //this is the distance of the point to the plane

显然," scalarprod"表示"标量乘积"," abs"表示"绝对值"。
如果您想知道为什么只阅读Wikipedia上有关标量产品的文章。


在我看来,您应该能够在顶点程序中而不是在for循环中实现类似于Corporal Touchy的方法的东西,对吧?也许使用C API进行GPU编程,例如CUDA?


我想问Andrea Tagliasacchi一个问题,为什么?

仅当您查看1000的点并且可能查看100的平面时,使用概述的方法才会有任何好处。正如我的下士(Corporate Touchy)概述的那样,用于点积点和平面。

此外,由于像素的有限性,您经常会发现两个或多个点将投射到纹理中的同一像素。

如果您仍然想这样做,我可以在C中编写一个示例glut程序,但这对我不知道的MATLAB有什么帮助,因为我不熟悉它。


首先免责声明:我对3D编程一无所知。

现在我的纯粹数学想法是:

给定一个平面N(单位长度)和平面到中心的距离L(点[0/0/0])。点X到平面的距离由N和X的标量乘积减去到中心的距离L给出。因此,您只需要检查wether

| n。 x-L | <= epsilon

。是标量产品| |绝对值

当然,您必须先将平面与法线相交才能获得距离L。

也许这会有所帮助。


推荐阅读

    查询linux内存命令?

    查询linux内存命令?,系统,情况,信息,工具,电脑,状态,命令,内存,发行,总量,查

    linux查询ip命令?

    linux查询ip命令?,地址,网络,信息,设备,系统,电脑,终端,命令,中心,技术指标,l

    linux查询所有命令?

    linux查询所有命令?,工作,地址,系统,命令,信息,目录,工具,基础,文件,内容,lin

    linux日志命令查询?

    linux日志命令查询?,系统,名称,信息,实时,电脑,对比,最新,日志,命令,环境,Lin

    linux文本查询命令?

    linux文本查询命令?,标准,命令,文件,工具,数据,信息,位置,系统,内容,文本,Lin

    命令查询linux包安装?

    命令查询linux包安装?,软件,地方,地址,名字,系统,名称,信息,路径,命令,文件,

    查询linux的命令历史?

    查询linux的命令历史?,信息,系统,名称,地址,服务,命令,数据,环境,指令,用户,

    linux线程查询命令?

    linux线程查询命令?,系统,第一,线程,命令,软件,名称,信息,进程,选项,方法,Lin

    linux命令左右查询?

    linux命令左右查询?,系统,信息,管理,地址,工作,命令,文件,单位,位置,数据,lin

    linux简单查询命令?

    linux简单查询命令?,地址,命令,信息,设备,电脑,系统,工作,文件,终端,内容,Lin

    linux线程查询命令?

    linux线程查询命令?,系统,第一,线程,命令,软件,名称,信息,进程,选项,方法,Lin

    linux命令左右查询?

    linux命令左右查询?,系统,信息,管理,地址,工作,命令,文件,单位,位置,数据,lin

    linux简单查询命令?

    linux简单查询命令?,地址,命令,信息,设备,电脑,系统,工作,文件,终端,内容,Lin

    查询linux配置的命令?

    查询linux配置的命令?,系统,网络,地址,情况,信息,电脑,中科,状态,服务,命令,

    查询linux配置的命令?

    查询linux配置的命令?,系统,网络,地址,情况,信息,电脑,中科,状态,服务,命令,

    linux命令查询时间?

    linux命令查询时间?,时间,系统,状态,信息,数据,标准,地址,平台,环境,命令,在w

    linux查询翻页命令?

    linux查询翻页命令?,工作,地址,系统,信息,命令,工具,目录,管理,暂停,标准,Lin

    查询linux上调度命令?

    查询linux上调度命令?,系统,策略,实时,信息,状态,时间,进程,电脑,报告,分析,L

    linux查询网关命令?

    linux查询网关命令?,网络,信息,地址,环境,系统,网关,名字,中心,状态,命令,lin

    linux命令查询参数?

    linux命令查询参数?,网络,信息,设备,系统,服务,状态,情况,工作,地址,命令,Lin