更新时间 2019-11-14 03:17

2016年的第一个月已经完结分属于《极乐迪斯科》的开发日志

本页贡献者

五月
增0 改0 删0

基本信息

2016年的第一个月已经完结
原标题 SO THE FIRST MONTH OF 2016 HAS COME AND GONE
原作者 Aleksander Rostov
原发表日期 2016年2月1日
原文链接 https://zaumstudio.com/2016/02/01/so-the-first-month-of-2016-has-come-and-gone/

2016年的第一个月已经完结。一月初我们把去年圣诞节做的原型收尾,接着开始了新的工作。那会游戏算是能显示对话吧?你可以打开一个传真机模样的对话窗口,并显示存在xml文件中的文本。把文本从Articy(译注:一个编写对话和叙事的辅助工具)导入到Unity的基础工具也已经完成。你可以选择对话项,然后游戏根据对话树给你回复。

也有不尽如人意的地方…之前主角在屏幕上显示为一个黑色人形剪影,能够自行寻路,但在有些电脑上会出现大卫林奇电影里那样的诡异画面:人物跑动动作如常,但是移动速度只有时速5厘米。我们后来修正了这个问题,不过所有bug和图像问题加一起,就成了很棒的插曲笑料(dream sequence fodder)。

我们一月完成了这些:

  1. 室内光照系统
  2. 最终在我们研究怎么照亮室内场的人物时找到了突破的办法。
  3. 可交互物品高亮
  4. 为可交互物品加上对话
  5. 人物缩放矩阵 CHARACTER SCALE MATRIX
  6. 基本物品栏&装备系统
  7. 实际起作用的门

室内光照系统

为了做出不同时段自然光照亮室内的效果,我们尝试了很多种办法。总共有四个时段:早晨、中午、傍晚和夜里。我们曾用过一套加色系统(additive system),使用一张基础背景图,进行中性照明渲染(neutrally lit render)后由我进行手绘加工。在这张背景图之上我们再添加一层光照贴图(light map),贴图包含了各个窗口进入多少光线和颜色、物体之间光线反射和色彩变化的信息。用这套办法我们可以得到漂亮丰富的色彩和一个真实的全局照明(global illumination)效果,但问题也是有的,首先我们需要在组成关卡的素材中增加多张原生分辨率的图,也就是各时段的光照图 + 一张中性照明的背景图。然后加色层的信息过多,导致我在中性照明背景层做的手绘图也会被它覆盖掉。这可要不得。

最终在我们研究怎么照亮室内场的人物时找到了突破的办法。

有一个省事的实现方式是先在中性照明背景图上放置好阴影,然后使用引擎内置光源一次性的照亮场景和人物。这也是我们处理夜晚室外场景的做法。然而这一方法看起来效果寡淡,因为即时演算无法获得那令我们垂涎的、漂亮的漫反射环境光,那种效果只有预渲染才能做出来。最后我们采用了一种混合照明的办法来照亮角色:用光照区域贴图(lightfield map)来处理窗户照进来的自然光线,用引擎内置光源做人造光源的照明效果,例如台灯之类的。光照区域贴图其实就是一张法线贴图,作用是指明光线从哪个方向来,照到了哪个像素上。这种贴图通常非常的小,因为我们不需要很夸张的精确度。

5GTSYGd

后来我们发现光照区域贴图还能用在其他地方!我们可以渲染一个仅有自然光照明的单通道黑白背景图。通过将这张阴影贴图与光照区域贴图结合,我们就能根据时间和天气调整背景的图案明暗和着色。这个方案得到的效果虽然没有加色法那么精美,但是效率要高很多,节省了我们大量硬盘空间,也让底层背景图成为唯一带有色彩信息的图层,这意味着我可以在这一层自由的创作了!

中性光照渲染和轻度手工点缀的效果,非最终效果:

jxhVvI9

XugKDle

gbolk6Z

可交互物品高亮

这曾是个超级头痛的问题!我自认为在常用的游戏图形技术方面懂的不少了,不过给3D物体画边框的难度却超出预期。这下打脸了。我听说把3D物体沿着法线放大一圈能搞定?我们最后用的方法是遮罩加边缘测定,这个具体让Kuubaas的日志来说明吧。

pncnDOx

为可交互物品加上对话

有了这个功能和上面说的高亮就算是一个游戏了!网上有讨论冒名顶替症候群*的文章说一些从事创意工作的人总感觉自己的成功不是靠实力,哥可没这毛病——当鼠标移动到一个物体上,物体高亮起来并随着点击弹出一个对话框,此时此刻哥感觉自己就是MLG职业选手级(暴雪旗下位于纽约的一家电竞公司)的设计师。其实我想说的是,在游戏里的操作能获得实时响应感觉太棒了。

冒名顶替症候群:Impostor syndrome,用以指称出现在成功人士身上的一种现象。患有冒名顶替症候群的人无法将自己的成功归因于自己的能力,并总是担心有朝一日会被他人识破自己其实是骗子这件事。)

人物缩放矩阵 CHARACTER SCALE MATRIX

我们捣鼓了一个人物形体矩阵,可用简单两个滑动条控制人物的高矮和胖瘦,用来设置各种NPC的体型。这套方法也出了一些问题,比如人物的脚浮空等,但总体看来这个实现方法目前挺好用的。我们正在做一个逆运动学*系统来处理上下楼梯时把脚正确的放置在台阶上,解决脚有可能悬空的问题。

逆运动学:解决诸如,一个人体的三维模型,如何设置手腕和手肘的角度以便把手从放松位置变成挥手的姿势的方法论。

hI7Do7x

基本物品栏&装备系统

脱掉和穿上衣服,就像普通人每天做的那样。

实际起作用的门

门可以挡住寻路,检查物品栏中是否有钥匙。咱们来想象一下有这样一种门之科技的世界:可以在你开门时检查你有没有穿上裤子。