我遇到光线跟踪问题。我无法将透明对象的颜色放到文件中。透明物体被视为白色。怎么了 ?我在算法中忘记了什么吗?
注意:由于我的声誉,我无法将图片上传到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 )
答案 0 :(得分:1)
您不想直接添加透明光线,需要将其混合。
color = opacity * color + (1 - opacity) * trace( transparent_ray )
opacity
定义了对象的 opaque 。完全不透明的对象(opacity = 1
)根本不透明,因此透明光线不会影响颜色。完全透明的物体(opacity = 0
),例如空气或玻璃(几乎)不会受物体颜色的影响,因此光线的颜色只是透明光线的颜色。