http://www.nulj.cn

首页 所有文章 归档 留言 关于我

我想白嫖《Dota2》模型制作demo,谁知竟成了一周的噩梦_游戏葡萄

编辑:李靖2023年5月5日993次阅读阅读转载:游戏葡萄

本文首发于知乎,作者Lute Li,原标题《Dota2角色渲染,用unity重现其shader》,游戏葡萄已获转载授权。

制作demo时有没有遇到过,急需大量角色资源,但又无从下手的烦恼?

www.dota2.com/workshop/requirements 

V社早已公开《Dota2》的模型,模型骨骼贴图一应俱全,可以直接用他的资源来进行demo制作。

左边是unity内渲染,右边是《Dota2》展示界面。

看似一切美好,下载模型贴图,扔到unity,网上找个DotaShader,贴图一贴,转为人形骨骼,就可以随意套动作库。

然而这个想法,让我经历了一周的噩梦。

先总结下我这一周的感想:

  • 他给的贴图问题很大,需要睁大眼睛看清楚。

  • 国内对《Dota2》渲染写的文章,就没一个是对的。

  • 官方没有发shader,需要从网上犄角旮旯处拼凑。

  • 《Dota2》用魔改BlinnPhong模拟PBR效果,有点吃力不讨好

  • 下面开始正文。

    |1.《Dota2》贴图问题

    先看一下原始贴图资源。

    一个材质球有接近20张贴图。平均一个角色3个材质球,多的时候有6个。

    首先检查一下贴图,你会发现一堆问题。

    • 法线上有某个uv的水印(大概是2u,但是模型内没有2u)。

    • 某些贴图uv是反过来的(红圈处),而且不是每个角色都这样。

    • 你以为这就完了?下了多个角色后会发现,有些法线是DX有些是OpenGL。

    贴图上有乱七八糟的信息?uv有问题?不同人物的贴图命名规范还不一样?

    怕不是valve派实习生用截帧工具抓出来的资源,真有你的啊G胖。

    |2.国内网站上关于《Dota2》渲染文章的错误

    官方提供的文档只有一个。

    http://wiki.polycount.com/w/images/8/85/Dota2ShaderMaskGuide.pdf 

    后来修改了一版。

    https://support.steampowered.com/kb/3081-QUXN-6209/dota-2-workshop-item-shader-masks 

    很多人写的文章只包含四五张图片,对几张不理解的mask和warp图绝口不提。

    更有甚者能毫无根据得脑补一套算法,也是厉害。

    关键最终渲染不好看。

    我在了解到网上没有现成shader后,揭开了SubstancePainter 和 Marmoset Toolbag的Dota2Shader。兴致冲冲,以为找到了光明。结果看了两宿后才知道,他们只是为自家软件做的,很多参数上来就power个256次,而且还缺很多贴图。

    所以我根据以往经验来推断Dota2Shader。

    |3.我来拼凑shader

    先把熟悉的贴图拿出来

    color固有色(不是漫反射,漫反射金属为黑色)
    cubemap天空球
    detail * detailMask细节图(单独调节缩放) * 细节遮罩→加到固有色上
    metalnessMask金属度
    normal法线
    SelfillumMask发光遮罩→遮罩 * 固有色 = 自发光图
    translucency透明度

    然后把Warp和条状贴图拿出来,这些贴图之后再说。

    剩下四个。

    分别是RimMask,specularExponent ,specularMask,tintByBaseMask。

    从名字可以看出来,他们分别和菲涅尔,高光形状,高光颜色有关。Mask是乘上去,Exponent是指数(power的幂)。

    菲涅尔 * RimMask

    BlinnPhong^Exponent * SpecularMask

    Lerp(固有色,自选高光颜色,Tint),相当于在制造pbr的specular贴图。

    specular贴图在standard里用的是Lerp(0.04, 固有色, 金属度),有兴趣的可以试一试,长的差不多。不过这个颜色可以自己调。

    左边是金属度转的,右边是tint转的

    好,大部分素材都集齐,回头看一下我印象里光照模型。

    直射光 / 环境光的漫反射 / 镜面反射一共四项。

    先看directDiffuse也就是直射光漫反射。

    他用到了halfLambert + DiffuseWarp,具体效果如上图。

    用这个方法可以实现一点点假3s效果。

    其次,他使用DiffuseWarpMask当作UV的V,用于在一个材质球内使用多种颜色的DiffuseWarp。

    注意DiffuseWarp要改为sRGB和UVClamp。

    看蓝胖皮肤侧面偏紫,土猫更是有红绿两层颜色。

    indirectDiffuse就当一个颜色,加上去解决。

    最麻烦的是两个specular。

    我在游戏内一直想找光滑度特别高,能反射旁边环境的材质,也就是反射球indirect specular。

    在unity内,长这样。

    然后我对比了下游戏内,没有发现任何一个角色有反射球内容。《Dota2》最接近黑色光滑金属的龙骑,也没有反射球内容。

    而且打开角色资源内的CubeMap会发现,他只有周边和底部有亮色。

    于是我推断,《Dota2》内是不是没有传统的direct specular和indirect specular,而是一个魔改的DOTASpecular!

    依靠这个想法,我在substance的《Dota2》中寻找线索。

    菲涅尔 * 法线朝上的面 * 自选颜色,这不就是indirect specular吗。

    moba游戏内,必然存在朝上的面对着天空,朝下的面对着地面。

    妙啊,靠rim来模拟环境光。

    cubemap不用在反射球,我猜测是加到directSpecular的灯光颜色内,让高光颜色更加丰富一些。

    整理一下,dota光照模型。

    其中有一段max(Fresnel(外黑内白),DiffuseWarpMask)。

    我的理解是让主光的高光在模型边缘处减少,避免高亮的边缘出现,是一个很主观的参数。

    剩下的几张warp。

    fresnelWarpColor,fresnelWarpRim,fresnelWarpSpec这三张必然和NdotV有关。

    颜色很像PBR常用到的F0公式。OneMinus,Pow5 和 带F0的Fresnel,分别对应三张贴图,大概吧。

    bloom和selfIllumMask1,我猜测和后处理bloom有关。reflectance实在没猜出和什么有关。

    |4.我的感想

    本来想白嫖《Dota2》模型制作demo,结果折腾这么久的幺蛾子。

    真想快速使用,套standard材质,把固有色法线金属度光滑度自发光一贴,啥事没有。

    既然都自定义渲染,就不要太纠结具体过程(说的就是我),只要制作软件和游戏内达成一致就好,画面好坏的最后还是得看美术。

    《Dota2》作为一个2013年的游戏,为了兼容当年低端电脑,使用了很多trick技术。放在现在看,贴图分辨率/模型面数/渲染技术,比手机游戏标准还低,但是画面表现还算不错。

    这让我不禁感慨科技发展。

    1.这套渲染不适用于什么

    想模拟现实中的材质,PBR还是有无可比拟的优势。(主要是高光)

    PBR材质不等于写实风格游戏。同理,卡通风格游戏也可以用PBR材质。

    枪火重生,守望先锋等一系列游戏都是用PBR渲染。只是在模型设计和配色上偏卡通。

    枪火重生

    2.这套渲染适用于什么

    物理材质无法满足你,想使用风格化渲染,就可以尝试各种warp贴图来定制渲染。

    如二次元的渲染。

    不过在制作贴图的软件上,得配套完善工作流,要不然面对20来张不知所谓的贴图,任何美术都得崩溃。

    最后来一张蓝胖镇楼。


    推荐阅读

    原神改变了什么|王者荣耀IP|动物派对专访

    英雄联盟手游|我们把公司做死了|技术中台

    Q4产品储备|二次元游戏困局|发行大困局

    最新的游戏专业书上架啦!点击下方小程序即可获取

    感谢阅读,如果觉得本文对您有帮助,请给我点个,或者把本文的网址复制分享其它好友。
    本文网址:http://www.nulj.cn/nulj.cn/k/4153.html复制
    写博客不容易,服务器成本也很高,感谢谢支持。微信打赏红包

    发表评论

    李靖的博客

    大家好,我是李靖,不是封神榜的托塔天王李靖。我只是一个普通的上班族,1991年出生于湖南邵阳市。我喜欢看书/看电影/摄影/打手游。感谢你访问我的博客,我在博客中会经常分享我喜欢的文章。创建这个博客记录生活,让我学会很多知识也认识了很多朋友。
    关于我的更多资料>>

    支持博主

    写博客不容易,服务器成本也很高。您可以用微信给我发个小红包。疾风知劲草,板荡识诚臣。你的支持就是我的动力。谢谢!

    推荐阅读

    垃圾信息处理邮箱tousu117@163.com icp备案号 粤ICP备10034762号 互联网安全管理备案 不良信息举报平台 Copyright 2021 www.nulj.cn All Rights Reserved