下载 App
开发日志 04 · 几个小事故
昨天 14:232 浏览
上一篇讲的是怎么把建模外包出去。这一篇不讲方法 —— 讲这周踩的几个坑。
没有一个是设计问题。全是”东西不亮””东西有条缝”这种。

一、黑色是最难画的颜色
我们在做宣传片里那台机器吐出来的那张唱片。
黑胶,顾名思义是黑的。我给了它一个接近黑的颜色,加了一点金属度 —— 结果盘面是一片死黑,什么细节都看不见,像贴了个黑色圆纸片上去。
想了一会儿才明白:对金属材质来说,颜色就是反射率。给它近黑,等于告诉它”你什么都别反”。而真实的黑胶之所以看得见,恰恰是因为它在反东西 —— 影棚里那几盏灯,在它表面留下一道光。
黑色不是”没有光”,是”反射得很少”。你得先给它一个环境去反。
补了一张程序化生成的环境贴图之后,盘面上终于有了那道斜着扫过去的光。
二、有一道缝,怎么都焊不上
整张盘不是拼出来的,是一个旋转体车出来的:一条横截面轮廓(内壁 → 顶面锯齿 → 外缘 → 底面锯齿 → 回内壁)绕轴转一圈。所以凹槽是真几何、中孔是真洞、厚度是真厚度,没有一样是贴图假装的。
渲出来之后,盘面上有一道锯齿状的竖条,从中间一直拉到边缘。
原因是旋转体在起止处会把顶点复制一份,法线不连续。这是常识,焊一下就行。
焊了。没用。
折腾半天才想起来:焊接函数是按全部属性哈希的。接缝两侧的位置一样、法线可以重算,但 UV 一个是 0、一个是 1 —— 对不上,所以永远焊不上。
盘面本来就不贴图,UV 留着没用。先把 UV 删掉,再焊。缝没了。
三、纸不是靠颜色像的
唱片中间那张橙色标签,在真实世界里是一张印了字的纸贴上去的。
我先在颜色上下功夫:调亮、调暗、加噪点。怎么调都不对 —— 亮一点像塑料,暗一点像土。
后来发现,颜色根本不是重点。起作用的是三件事:
- 粗糙度接近 1 —— 纸几乎没有镜面反射
- - 表面纤维颗粒 —— 一层很浅的凹凸
- - 掠射角上那层很弱的绒光 —— 用材质的 sheen 做
第三样是”塑料感”和”纸感”最主要的分界。普通材质做不出来,得换一种。

顺带一个坑:做斑驳的时候只能压暗、不能提亮。加白斑会把橙色的饱和度洗掉,整张标签就变成土黄色了。
四、摩尔纹,我本来想消掉它
游戏里那块屏幕上的东西是真的 3D —— 它们待在一个玩家看不见的场景里,由一个正交相机单独渲染进一张 1280×720 的贴图,再和界面合成。
把唱片放进去之后,问题来了。

唱片在屏幕上只有 250 像素宽,而它有 52 圈槽,平均每圈不到 3 个像素。结果就是严重的干涉条纹,盘面看起来像木纹。
我的第一反应是减圈数,把它消掉。
盯着看了一会儿,改了主意 —— 那个条纹正是要的。细槽和像素栅格打架,是 CRT 该有的脏东西。它把”你正在看的是一块屏幕”这件事说出来了。
所以我把圈数加了回去,而且故意把渲染分辨率留在 1280×720 —— 提上去反而会把这个效果洗掉。
五、接下来
距离提交没几天了,剩下的都是收尾。


开发日志会持续更新,游戏还在做,欢迎到时候来试玩。
#聚光灯gamejam开发者日志













