【发布时间】:2013-03-30 01:10:09
【问题描述】:
我有一个问题要问那些熟悉计算机图形学中 XNA 和色彩理论的人。我正在制作一个瓷砖游戏(有点像泰拉瑞亚),我想知道如何将每个瓷砖照明应用到场景中。对于这个游戏来说,彩色光照是必须的,现在我通过 4 个 2D 字节数组、存储整体光照和 3 种不同的颜色量来解决这个问题。绘制瓷砖时,它会采用特定瓷砖的纹理,但我将如何根据 3 个颜色值和整体照明在同一个瓷砖上应用颜色?
现在,这是我的颜色生成函数:
public Color GetColorAt(int x, int y)
{
byte r = _rMap[x, y]; //Red light
byte g = _gMap[x, y]; //Green light
byte b = _bMap[x, y]; //Blue light
byte mul = _lightMap[x, y]; ///Overall light
return new Color(r * mul, g * mul, b * mul, 1);
}
作为色彩理论的新手,我完全不知道我是否以正确的方式处理这个问题。我的照明系统使用蜂窝算法,减少并扩散到所有相邻的瓷砖。如果它降低了每个图块的颜色值,我什至需要从整体光值开始吗?
另外,在混合瓷砖纹理和光线以获得结果时,我是使用加法还是乘法,还是其他一些计算?
TL;DR: 1. 上面的代码块是否工作,考虑到每个瓷砖之间的光线减少? 2. 如何将光和纹理结合起来,以获得在光的颜色下看起来像它的纹理?
感谢您的帮助,我没有颜色组合的经验。
【问题讨论】:
-
在问这个问题之前你做了哪些研究?