【问题标题】:Visualise n-dimensional scalar field in opengl / pycuda在 opengl / pycuda 中可视化 n 维标量场
【发布时间】:2013-09-21 13:22:10
【问题描述】:

使用 pyCuda,我正在处理一个 N 维标量场。我想实时可视化这个标量场(即快速有效)。我正在考虑使用行进立方体算法来绘制等值面的 3D 投影,但我一直无法从我的 pyCuda 程序中找到可以使用的任何好的实现/库。有什么建议吗?理想情况下,我希望该解决方案与我在程序中进行的其他 OpenGL 绘图兼容。

【问题讨论】:

    标签: python opengl marching-cubes


    【解决方案1】:

    3D 标量场可以解释为体积图像。有几种使用 OpenGL 片段着色器进行直接体积渲染的方法。使用术语“OpenGL GLSL 体积光线投射直接渲染”会产生很多结果。本质上,您要做的就是确定对应于通过体积的每个屏幕像素的光线的入口和出口点,并遍历标量场中的所有样本,将它们整合起来。

    几个链接:

    http://http.developer.nvidia.com/GPUGems/gpugems_ch39.html

    http://sirkan.iit.bme.hu/~cseb/Education/ComputerGraphics/direct_volume_rendering_6.pdf

    http://graphicsrunner.blogspot.de/2009/01/volume-rendering-101.html

    http://www.cs.utah.edu/~jmk/sigg_crs_02/courses_0067.html

    http://www.daimi.au.dk/~trier/?page_id=98

    【讨论】:

    • 这很有帮助。谢谢你。我现在将重点关注的不是等值面生成,而是直接体积渲染。我仍然希望不必自己实现它。要进行可旋转的体积渲染,编写采样算法似乎相当复杂([http.developer.nvidia.com/GPUGems/gpugems_ch39.html] 的第 39.4.2 节)等。如果有人知道现有的着色器代码,请告诉我!非常感谢!
    • @weemattisnot:实际上,如果您利用 GPU 的某些功能,着色器代码相当简单。我不能在这里详述,因为整个实时体绘制主题都涉及我的日常工作,并且有一些我不能违反的保密协议;我仍在尝试获得发布我开发的体积渲染器部分的许可。但请放心,您可以用不到 70 行着色器代码加上不到 50 行 OpenGL 设置代码来实现高质量的直接体积渲染器。
    • 我可以发布这张照片,因为它是乱来的结果:这是我的渲染器生成的渲染示例,其中数据只是未初始化的 GPU 内存:dl.datenwolf.net/uninitialized_volume.jpg - 它有效实时,并且可以实际渲染体积电影。
    猜你喜欢
    • 2011-03-12
    • 1970-01-01
    • 2015-10-20
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2015-10-15
    相关资源
    最近更新 更多