如何用线条绘制3D世界,更像是素描或卡通


9

考虑制作一个没有阴影且所有线条均具有相同权重的水墨绘图,例如在Dilbert之类的连环漫画中所看到的。这代表了一个活跃的3D世界,但是对象没有纹理,但是您也看不到细分的三角形。

为了举例,考虑绘制月球表面。您可能绘制的线将沿着丘陵的顶部边缘,直到它们与地面的大致水平相交。在那些山的后面,对于较大的山丘,到远方,在地平线之后,您将执行相同的操作。对于环形山,您可以为外边缘绘制一个近圆,为下边缘绘制一个部分被屏蔽的圆。巨石的边缘和主要可见边缘将有一条线。宇航员的外缘和宇航服的主要特征将成一条直线。

我是一位经验丰富的程序员,但对3D编程还是陌生的。我不能随便想到一个看起来像这样的游戏-完成了吗?怎么办呢?我想到了两个问题-找到明显的边缘并绘制。是否需要基于行从矩阵向上编码的“引擎”,而不是常规的3D引擎?


我只是想警告您,人类并不擅长照原样在2D屏幕上感知3D,因此消除阴影(这对于理解场景的深度非常重要)很可能在依赖3D的游戏中效果不佳游戏性
Jeff

一款符合您描述风格的游戏-Okami,几年前针对PS2发行,en.wikipedia.org
wiki /%C5%

1
很好,我一直在考虑自己做这个。我认为您想使用某种cel阴影,而不仅仅是线条。
mpnk121

Answers:


11

从根本上讲,您在说的是边缘发现,并且有很多游戏以各种不同的方式来做到这一点。

大概第一个是Jet Set Radio(在西方以“ Jet Grind Radio”发行)。此后仅发布了一个月或两个月,我就为该游戏开发了一种类似的渲染技术: 鲁尼调谐:太空竞赛。(在太空竞赛中,我们尽力保持一致的线宽,而Jet Set Radio则将不均匀的线宽作为其视觉风格的很大一部分)。

这两个游戏的工作方式相同。对于每个要勾勒出轮廓的对象,绘制对象两次。首先,以反转的背面渲染,应用顶点推动(即,将每个顶点沿其法线向量移动一定距离)并以您希望“线”显示的任何颜色进行渲染。然后再次绘制,不推顶点,并使用常规背面。这对操作为您提供了围绕对象的彩色轮廓,这就是前两个游戏所使用的全部。在“太空竞赛”中,我根据物体与相机之间的距离,通过将顶点推入不同的距离来维持恒定线宽的错觉。在喷气机收音机中,它们没有(当物体离摄像机越来越近时,导致线变得越来越大)

NVidia和ATI演示了其他几种实现此效果的方法,主要围绕像素着色器寻找法线,这些法线垂直于每个像素的相机到像素向量,但是这些都需要非常高分辨率的网格,并且会产生不一致的情况实践中的线宽。我不知道是否有游戏真正使用这种方法。我认为我没有看到过像这些公司的样本那样的样本。

我还要向您指出《龙的巢穴3D》,这是我所知道的唯一一款似乎确实能够正确执行此游戏的游戏。获取模型中每个多边形的相机到多边形的点积与多边形的法线,以查看每个多边形是朝向还是背离相机,然后检查所有已连接的多边形对。如果任何一对多边形共享一条边,而一个多边形面对摄像机而一个多边形不面对摄像机,则它将沿屏幕空间中的该边绘制一条细且恒定宽度的线。(我无法在Dreamcast for Space Race上足够快地完成这项工作,或者我已经使用了它。今天,在现代计算机上,这完全是我试图实现这种效果的方式,即使它是

龙的巢穴3D也是我所知道的唯一一款可以在不同颜色的区域之间或在顶点法线不连续处绘制线条的游戏,即使在该处找不到轮廓边缘也是如此。我怀疑他们有一个自定义工具,该工具允许其艺术家指定多边形边缘以始终接收线条。

其他人提到过的Okami似乎正在使用双重渲染的顶点推方法,类似于Jet Set Radio和Space Race,但也使用了采用拉丝艺术风格构建的纹理。(例如,将距离中的山丘作为画笔描边绘制到作为标准四边形绘制的纹理中)。Okami很可爱,但我认为这确实与您要问的技术无关;当然,它使用的是较旧的方法。

现在,就您的情况而言,您要问的是在不使用颜色填充的情况下执行此操作,仅使用线条绘制世界即可。这很容易做到;只需绘制不带照明的所有多边形,并绘制与背景颜色匹配的单一不变颜色即可。这些方法中的任何一种都应该使用该方法工作,而根本不更改游戏引擎。实际绘制这些“与背景相同的颜色”的多边形非常重要,因为它们将阻止背景边缘通过前景对象显示,这可能会很快使您感到困惑。


+1出色的答案,包括理论和有趣的例子
Maik Semder 2011年

很棒的答案,谢谢您的宝贵时间。
无情的沼泽

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.