中文第一计算机图形学社区OpenGPU 版权所有2007-2018

 找回密码
 注册

扫一扫,访问微社区

搜索
查看: 254|回复: 1

怎么渲染有色透明的玻璃球?

[复制链接]
发表于 2018-8-1 11:50:34 | 显示全部楼层 |阅读模式
有色且透明的玻璃球(用 “有色透明” 描述不知道准不准确),玻璃球最终的颜色该怎么计算?
漫反射能否在有色玻璃球上适用?还有当光线最终从有色玻璃球内部传播到外界的时候又该如何处理?
发表于 2018-8-4 10:14:36 | 显示全部楼层
首先定义透明颜色以及不透明颜色,前者为Transparency Color,后者为Opacity Color,这个关系为
Opacity = 1 - Transparency。不同的软件这里定义会不同。

对于单个一层的这种材质来说,透过这个透明玻璃所观察到的颜色,应该是

Ci = Opacity Color * 背景色 + 本体反射色

Ci是最终我们观察到的颜色,即最终结果,这个结果由简单的两个部分构成,就是入射的颜色,以及本体的反射。
假如是一个Opacity = (0.5, 0, 0)只允许透过蓝色的玻璃,那么显然我们透过这个玻璃观察的世界应该是一片蓝。假设背景色是纯白色(1, 1, 1),上面的共识计算结果就是(0.5, 0, 0)。

第二个成分牵涉到你的第二个问题,就是这个半透明物体的本体界面上也会发生反射折射,这个时候呢,如果是光栅化实时渲染,我可以明白的告诉你这个地方很难处理正确,因为你需要计算每一个界面伤的反射折射,是一个迭代许多次的过程。

所以实时渲染一般不考虑内部的折射反射,只考虑从背景入射过来的色,以及和本体Opacity Color的混合,以及面对摄影机那个最近的界面的反射,比如上面提到的蓝色的反射。这个方法可以搜索Order Independent Transparency Rendering,都是在解决这个问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于我们|小黑屋|Archiver|手机版|中文第一计算机图形学社区OpenGPU

GMT+8, 2018-10-17 03:37 , Processed in 0.094153 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表