请帮我澄清一下这个关于体积光线投射算法的问题:
在维基百科文章(link)中,它表示“对于每个采样点,计算一组照明值。这些表示体积内局部曲面的方向。 “
我的问题是:为什么渐变的照度值?为什么不透明度值?当然,不透明度的变化可以更准确地描述从“东西”到“无东西”的过渡。
例如,考虑两个体素:[1][2]
。 1是明亮透明的,2是黑暗和不透明的。在我看来,这对应于一个朝左的表面。我错过了什么吗?
答案 0 :(得分:2)
梯度向量指向最大增加的方向。在这种情况下,这意味着它指向照明增加最快的方向,因此在[1][2]
示例中,2
处的渐变确实指向左边。
相反,如果你采用不透明度的渐变,你会得到一个向量指向增加不透明度的方向,即“向内”。你可以否定这一点来获得一个向外指向的向量,但仍然存在不透明度 local 的问题。它仅告诉您周围环境中物体的结构。当你在遮蔽某些东西时,你想知道的是当你从一点一点移动时,一个表面的光线是多么明亮。知道恒定照明的表面可以推断出这一点,但是从恒定不透明度的表面中,如果表面和光源之间没有任何东西,你只能推断它的光线是多么光亮。
答案 1 :(得分:1)
梯度是等值面的法向量,您可以将体积对象视为一堆等值面(其中很多; o),每个等值面在其表面上具有相同的标量场值;传递函数设置不透明度/红色/绿色/蓝色和标量值的对应关系,以便每个等值面具有指定的透明度和颜色。这样的表示很容易理解体积梯度在体绘制中的作用......
答案 2 :(得分:0)
在经典光线追踪中,您可以通过您前方屏幕上的像素计算一条光线,然后进入世界以查看它所拍摄的内容。确定交点后,需要确定该点的光照特性。照明特性取决于表面法线。当你考虑它时,表面法线是一个不仅由交点本身而且由周围表面决定的属性。
同样的原则适用于射线投射。一旦确定光线确实撞击某个体素,您需要分析周围的体素以有效地计算可用于光照计算的“表面法线”。