3

我需要加速一些使用密集计算的程序,这些程序需要从立方体、球体和类似物之间的交点进行表面计算。使用 CUDA,我需要指定我需要的所有公式,当然,以便分析计算与交叉路口相关的信息。但是因为我只需要一个很好的近似结果表面,我读到了 OpenGL 可以计算或估计这样的表面。我想知道您是否可以给我您的意见或向我指出相关的参考资料

4

2 回答 2

1

OpenGL 在这里的用处甚至比 CUDA 或 OpenCL 少,因为它主要用于绘制三角形镶嵌网格。当然,您可以在现代 OpenGL 的各个着色器阶段进行复杂的几何计算。问题是,所有这些计算的结果都是基于像素的图片。有一种反馈机制来检索处理后的顶点数据,但这只会给你一个网格。

任何平面或/和球体的交点实际上非常容易,并且可以通过分析完成。真正困难的是相交的自由曲面(Bezìer 或 NURBS)。那些通常没有封闭的解决方案,因此您需要做的是在数值上逼近最适合交叉点的修剪曲线。

于 2011-06-15T21:04:41.800 回答
1

如果您只需要渲染这些对象,您可以使用模板缓冲区来评估您需要的任何布尔操作: http ://www.opengl.org/resources/code/samples/advanced/advanced97/notes/node11.html

可以从相交表面的透视或正交投影计算的任何量都可以从这种渲染及其深度缓冲区中推导出来。如果您需要提取整个交叉点,您可以尝试使用深度剥离和模板 CSG 来提取完整​​交叉点的分层表示,尽管它在与观察方向平行的表面部分可能非常不准确,并且您需要做一些额外的工作来将这些层缝合在一起:http: //developer.download.nvidia.com/SDK/10/opengl/src/dual_depth_peeling/doc/DualDepthPeeling.pdf

编辑:这将适用于任意、自由形式的表面,并且是一种相当标准的技术。但它确实有其局限性,因为您获得的准确性会相当差,并且您可能必须投影到多个视图上才能充分覆盖您的对象。例如,这里是碰撞检测的应用程序:http ://www.cs.ucl.ac.uk/staff/b.spanlang/ISBCICSOWH.pdf

于 2011-06-15T23:39:54.593 回答