【发布时间】:2010-09-15 12:52:49
【问题描述】:
我正在编写一个基于图块的小游戏,我想为此支持光源。但是我的算法fu太弱了,所以来找你帮忙。
情况是这样的:有一个基于瓦片的地图(以二维数组的形式保存),包含一个光源和几个站在周围的物品。我想计算哪些瓷砖被光源照亮,哪些在阴影中。
大概的样子的视觉帮助。 L 是光源,Xs 是阻挡光线的物品,0s 是点亮的瓷砖,-s 是阴影中的瓷砖。
0 0 0 0 0 0 - - 0
0 0 0 0 0 0 - 0 0
0 0 0 0 0 X 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 L 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 X X X X 0 0
0 0 0 - - - - - 0
0 0 - - - - - - -
当然,分数系统会更好,其中由于部分被遮挡,瓷砖可能处于半阴影中。该算法不必是完美的 - 只是没有明显错误并且相当快。
(当然会有多个光源,但这只是一个循环。)
有接受者吗?
【问题讨论】:
-
感谢您的所有回答。回到家后,我将详细介绍它们并实施/发布算法。
-
您在这方面取得了进一步的进展吗?我很想听听你的进展。
标签: algorithm raytracing lighting