简单体积光线投射

3

这个问题可能很简单,但我意识到答案可能并不简单。为了尽可能清晰明了,请允许我解释一下。

您能否解释一下3D体渲染中的体积光线投射技术的基本思想。

谢谢, Timo


每个光线都穿过体积,沿着光线的样本所代表的半透明颜色在最终像素值中混合,详见视频 - Fedor
2个回答

3
这个参考资料介绍了简单光线投射的基本概念(链接)。这些概念(如光线与平面的交点等)可以扩展为体积光线投射(链接)
简单来说,通过体积投射光线,并在满足某些条件的每个交点处累加一些颜色。例如,沿着光线的每个体素具有值> 128,则该体素可能会为所需的RGB颜色贡献一些小百分比的不透明度。在这种简化情况下,不透明度的程度是加权的(voxel_value-128)/127可能是一个合适的加权函数(假设负值得到适当处理)。该方案将表示成比例阈值转移函数。对于渲染,与光线相关联的像素由其路径上遇到的不透明度确定颜色。 (这将是前向混合 - 还存在其他方法。)
还存在其他转移函数:某些函数可能会严重加权梯度。这种函数可能用于可视化出现在体积内的表面边界。
我建议进一步阅读VTK书籍。

1

我在我的博客(PyScience)上写了几篇关于使用Python和VTK进行光线投射和光线追踪的文章:

http://pyscience.wordpress.com/2014/09/21/ray-casting-with-python-and-vtk-intersecting-linesrays-with-surface-meshes/

http://pyscience.wordpress.com/2014/10/05/from-ray-casting-to-ray-tracing-with-python-and-vtk/

然而,我意识到这些光线技术并不特定用于体渲染(即使它们可以被用于此类)。对于纯体渲染,vtkVolumeRayCastMapper类可以解决问题(尚未在此方面撰写文章:)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接