我已经在互联网上搜寻了一段时间,但是我找不到我想要的特定阴影技术。它,而且我知道它也发生在游戏的PC端口上。问题游戏为GameCube的“音速冒险2:战斗”。我记得它发生在“超级马里奥阳光”上,但我可能会误会。


阴影只是从主要角色身上投射的。
它是100%清晰的,不论游戏的分辨率如何。
它们完全平行地向下投射到玩家站立的表面上。
有趣的是,如果阴影与垂直墙相交,则阴影将一直绘制在墙壁上,甚至比原始交叉点还高。
您还可以在玩家角色正上方的天花板上甚至在天花板上方的地板上看到阴影。好像有一个大的人物剪影形状的管子被浇铸在表面上。

该技术如何起作用,我如何进一步了解它?

我在打算寻找这种特殊技术的图片,但是我现在还没有。

评论

“ 3d早期(2000年-2004年)”哈!你们这些年轻人。

从90年代开始出现了更多早期游戏:)那段时期令人难以置信。

en.wikipedia.org/wiki/Shadow_volume <-that

#1 楼

没有玩过这些游戏,我只能推测...但是根据您的描述,这听起来像是带有正交投影且没有深度信息的粗略阴影贴图。它可能有(或有一个)特定的名称,但是我怀疑他们是这样做的:
渲染场景时,请在该纹理中进行查找并乘以该颜色。当然,您将字符排除在外。

纹理查找所涉及的计算将是微不足道的,因为在世界坐标平面中,一切都是2D的。它还不需要当时IIRC还没有出现的可编程着色器。您需要作为纹理坐标的只是顶点的(x,z)位置(假设y在此处朝向天空),以及等于角色的(x,z)位置的偏移量。在OpenGL中,我相信可以通过glTexGen以及纹理转换矩阵来实现。 。从上方看,阴影会绘制在每个表面上,无论阴影位于角色的前面还是后面(从摄像机的角度来看,是在上方还是在下方)。就像您是在角色轮廓中从天空滴下黑色墨水一样,它贯穿了所有内容。

评论


$ \ begingroup $
我觉得这很接近,但是我希望有一个更深入的答案-特别是这种纹理查找的工作方式以及为什么这种方法特别导致墙壁和天花板上的阴影失真。
$ \ endgroup $
– Steffan Donal
18-2-23在11:02

$ \ begingroup $
@SteffanDonal公平点。我将添加一些我所想到的细节。
$ \ endgroup $
–奥利维尔
18年2月23日在14:19

#2 楼

不了解游戏,但是硬阴影通常是阴影体积,通常在模板缓冲区的帮助下实现。您可以在Wikipedia上找到该算法的简短说明。

评论


$ \ begingroup $
是的,这是人们正在寻找的技术。由于阴影是实际渲染的几何图形,因此非常清晰。如果您可以提供该技术的简单描述,那就太好了!维基百科也有一些不错的信息:en.wikipedia.org/wiki/Shadow_volume
$ \ endgroup $
–艾伦·沃尔夫(Alan Wolfe)
18-2-27在14:49

$ \ begingroup $
@AlanWolfe阴影体积可以解释其清晰度,但是不符合OP的说法,即阴影在角色上方延伸(比阴影投射器更靠近灯光)。经典的阴影体积算法没有该伪像。
$ \ endgroup $
–内森·里德(Nathan Reed)
18-2-27在21:41

$ \ begingroup $
恰好@NathanReed-阴影体积是我最初的研究重点之一,但似乎并不正确。
$ \ endgroup $
– Steffan Donal
18-2-28在12:49