易码技术论坛

 找回密码
 加入易码
搜索
查看: 443039|回复: 1

[教程] [抛砖]一种效果不错的混色方式

[复制链接]
发表于 2006-10-6 17:37:40 | 显示全部楼层
那个损失可不可以考虑扩到周围的点上呢?
 楼主| 发表于 2006-10-6 16:16:24 | 显示全部楼层 |阅读模式
  继续抛……
昨天因为看不懂diffuse color的实现方法,所以放弃了进一步的研究。不过始终觉得不爽,于是考虑其他混色方式。要求是颜色并非简单的叠加,需要和目标象素点的色彩有关。当目标象素点较亮则混色效果明显,反之亦然。

有了这个前题,思路就明确了。我假定这种混色相当于给物体表面照射了一束平行光,物体被光照之后表现的颜色取决于其对于各种颜色的反射程度。黑色显然是全部吸收的,白色则具有最好的反射度。为了简单起见,分开考虑光的反射效果。

比如考虑红色分量,当象素本身红色分量为255时,红色光将被全部反射;象素颜色不含有红色分量,则不会反射红色光。所以混色之后的红色分量的变换应该是:
Ri = Rs*(Rd/255)
其中Rs是混色的红色分量,Rd是象素本身的红色分量。由此得到混色对于象素的红色分量叠加值Ri

如果继续考虑混色的透明度,也就是Alpha分量,那么这个Ri并不是最终看到的红色分量。因为混色如果是半透明的,象素原来的颜色仍然会有所保留(理解为光强度不同?或者透光性?物理解释不能……-.-)
最终的红色分量我觉得应该用如下公式计算:
R = Ri * As/255 + Rd * (1-As)/255
其中As是混色的透明度,R为最终的红色分量。

其余两色分量依次类推。另外,我这里计算的时候,并没有做颜色值的归一化处理,对于每种颜色分量,使用的仍然是0~255的8bit表示方法,不牵扯到浮点数,每次计算后都是有损的……木办法-.-b

这种混色可以很方便的给灰阶图像蒙上一层均匀的色彩,感觉挺漂亮,和那个屏保的一些效果类似。可惜的是lock一个表面之后,逐点进行运算速度实在是慢……这个混色比颜色叠加多了一层运算……郁闷啊-.-
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-8-24 12:45 , Processed in 0.009462 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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