0

我对光线追踪有疑问。我无法将透明对象的颜色放入文件中。透明物体被视为白色。怎么了 ?我在算法中忘记了什么吗?

注意:由于我的声誉,我无法将图像上传到 stackoverflow。

trace ( ray ) 
   intersect with objects
   for each light 
       if ( object in shadow )
              colour = black
       else
              diffuse 
              specular
   ambient
   color += trace ( reflect_ray )
   if ( object is transparent )
        color += trace ( transparent_ray )
4

1 回答 1

1

您不想直接添加透明光线,您需要混合它。

color = opacity * color + (1 - opacity) * trace( transparent_ray )

opacity定义对象的不透明程度。完全不透明的对象 ( opacity = 1) 根本不透明,因此透明光线不会影响颜色。完全透明的物体(opacity = 0),例如空气或玻璃(几乎)不会受到物体颜色的影响,因此光线的颜色就是透明光线的颜色。

于 2012-10-28T13:11:18.273 回答