星空贴图可自行更换,原作者来自于 youtube

星空材质

先来张动图,gif把颜色压的挺严重。 转动的时候,能通过模型看到整个宇宙! 图片就清晰了很多 来分解下是用哪些层混合出最终效果。
  • 基础pbr材质
  • 透过模型能看到整个宇宙的,宇宙天空球。
  • 在模型表面,随模型表面朝向不同,能产生变化的鎏光效果,星星天空球。

|基础PBR材质

这个不多说,我原来的文章有写

|宇宙天空球

先来说一下此文章的要点:cubemap节点 顾名思义,就是把cubemap图片当作贴图素材,贴入到材质中。和普通的2DTexture是同类型的节点。 Cubemap常见于天空球,反射球。 当你找到cubemap素材,扔到unity中使用,需要对贴图进行设置。
回到cubemap节点 如图所示,除开sampler,该节点有4个输入口。
  1. Cube:Cube贴图输入
  2. Viewdir:视线方向。实现转动摄像机显示Cubemap不同朝向的内容
  3. Normal:指明Cube球的“上”,是朝哪个方向。
  4. LOD:Cube贴图使用lod的精度,越大越模糊,原图是0。 这是我用到的宇宙cube图,文件夹内我预留了四张,可以自行更换,觉得还不够的可以自行去google图库搜索。一搜一大把。(百度是真的垃圾) 仔细观察图片可以发现,为了使用Latitude-Long格式的全景图,我 将图片左右做成了连续 ,这能保证全景图侧面不会出现断面。 而上下,可就没那么好解决,会拉伸到一个点。 所以,模型会在某个角度,出现显示错误。(还挺好看) 这就正好能用得到 normal输入节点 。 将两个错误点,旋转到平时难以看到的角度:正上方和正下方 完美。

|星星天空球

宇宙天空球不会随着模型表面变化,只与 view 有关。模型像透明玻璃一样,透过玻璃看到整个宇宙。 而星星天空球会。他的效果更像玻璃表面的反光。这一层鎏光能让模型更加立体。 也就是说,需要随物体表面方向发生变化,Normal vector需要混到计算中来。 这一步,我其实思考了许久。究竟是用WorldNormal?还是用ObjectNormal?怎么加减乘除混到一起? 眼一横,腿一蹬,照着game视图一顿调。 完美。

|下面是混合

  • 为了让模型更立体。使用菲涅尔进行描边。
  • 为了让固有色混合宇宙颜色时有渐变,使用2U做一张上下遮罩。(建模中完成)
  • MAX来结合两张图

遮罩图完成

宇宙图和星星图走自发光,遮罩会使模型边缘和下方有自发光,而其他部分更贴近原PBR效果。 整理下连线。 此shader可以用于武器,衣服。当然我认为最适合的应当是宇宙传送门。 想象一下,一团小黑球,顶点随着时间扭动,时而像针刺时而像水滴,啪的一下展开,形成传送门,传送门内是一片巨大的宇宙。(是不是用这个正好) 当你老板需要“炫酷”的材质时,不妨试试这套做法。对了,暗色背景效果会更好。 都看到这里了,点赞收藏吧。 下面是我的文件
链接:https://share.weiyun.com/yUGZZmdL 密码:caseg9
使用方法:找个HDRP或着URP(LWRP),拖进去。我的文件夹下有预制体。 我的环境:Unity2019.3.2f1 HDRP 7.1.8 ShaderGraph 7.1.8
下面是我的artstation地址: https://www.artstation.com/luteli
当然你也能看看我原来写的文章 https://www.zhihu.com/people/lute-li/posts
Logo

分享前沿Unity技术干货和开发经验,精彩的Unity活动和社区相关信息

更多推荐