我想使用OpenGL,GLSL和C++实现高质量的光线投射体积渲染。我使用图像顺序体积渲染。在称为合成的光线投射体积渲染的步骤中,我使用以下公式(前后顺序):
当我阅读《实时体积图形》第16页时,我发现如果采样率发生变化,我们需要进行不透明度校正:
并使用此不透明度值替换旧的不透明度值。在此公式中,
是新的采样距离,△x是旧的采样距离。
我的问题是:如何确定程序中的△x?
最佳答案
假设您的原始体积的分辨率为V =(512,256,127),则在向(rx,ry,rz)方向投射光线时,采样距离为1 / | r·V |。但是,如果在光线投射器中说您采样过度,则说您以3倍采样距离V'=(1526,768,384)采样体积,过采样的采样距离为1 / | r·V'|,因此采样率的比率为1/3。这是要添加的指数。
注意,指数仅在低密度体积下才可见,即在医学图像的情况下,低对比度的软组织。如果您要成像骨骼或密集的组织,则几乎没有任何区别(BTDT)。
关于opengl - Raycasting体积渲染中的不透明度校正,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12494439/