冰块是大家生活中必不可少的东西,但是要在引擎中还原出冰块的质感和物理属性却是比较困难的,我这边也只是用了些简单的方法进行模拟,下面就给大家讲下制作流程。先给大家看几张近距离的图片。

较为透明的冰

透明度低的冰

冰随视角的变化

整个Shader采用的是无光照Mask的Shading Model,主要制作可以分为下面几部:

内部体积,表面反射,半透明模拟,折射,半透阴影以及一些颜色的变化。

内部体积制作

内部的体积制作和我这篇《如何在UE4中用raymarch实现面片水体(采样贴图)》对贴图采样进行水体模拟的文章方法一样,这里就不赘述了。

实在看不懂代码的同学就用Parallax Occlusion Mapping来实现吧,虽然性能会多消耗一些,但也没关系,效果是一样的。

Raymarch Perlin Noise之后的效果

参数设置

内部体积节点图可参考文章《如何在UE4中用raymarch实现面片水体(采样贴图)》,把贴图换成了Perlin Noise。

半透明模拟

本文最重要的部分来了,因为是用的无光Mask模式,所以半透明模拟我们采取的方法是用一个Cubemap贴到物体上,参考了下面这篇文章,但是他是通过改底层实现的,我们这边实现的方法更上层一点,原理都差不多。下面是文章链接,有兴趣的小伙伴可以看下。

《UE4中低成本的折射效果》

如果是实时的Cubemap,我们则需要用一个Scene Capture Cube来抓取,如果是静态的就直接把场景做成Cubemap然后贴上去就可以了。新建一个BP Actor后新建相机然后创建一个Cube Render Target,将Cube Texture插到相机的插槽上。

Cube相机

相机插槽

回到材质里面,我们先将Cube贴图(就是刚才新建的Cube Render Target)放进材质编辑器,然后UV口连上Camera Vector,最后输出到自发光,我们可以看到下面反着的效果。

Camera Vector作为UV

Z轴反的效果

所以我们先将Camera Vector的b轴反一下看看效果:

反向Camera Vector B轴

B轴反向的效果

看着差不多是吧?但是角度不是很对,所以我们得旋转一下这个Cubemap,我这里用RotateAboutAxis对其进行旋转,旋转轴是0,0,1(z轴),position就是Camera Vector,转完之后再加回Camera Vector(因为是在Camera Vector的基础上进行的旋转),最后Normalize(UV空间为0-1),然后对Z轴取反后连到Cube Texture 的UV就可以了,旋转角度我这边是270度(材质编辑器里是以弧度计算,所以除以360来转换成度数)。

模拟透明

模拟透明的效果

看着还可以,但是由于是Cubemap,肯定不能完全匹配上,所以只适合高折射的物体。但是还有一个问题,如果用相机抓Cubemap,他会把自身也抓上去,怎么剔除我们最后再讲。

反射

反射很简单,同样用我们的Cube Texture(就是刚才新建的Cube Render Target)然后用Reflect Vector连到UV,最后用Lerp控制反射和透明的混合比就可以达到透明度控制。

混合反射和半透

通过Lerp控制混合比

颜色混合

有了内部体积和上述效果后,我们将它们混合起来。以内部体积为Mask混合两种不透明度(其实就是内部体积和模拟透明的Lerp值,只不过我们需要两个Lerp,反射效果最后混合),然后用菲涅尔控制远近的不透明度,近处透,远处不透。

用模拟半透和内部体积进行透明度混合

透明度混合

透明度和内部体积混合后的结果

参数设置

做出上述效果后我们继续混合上反射的效果,并用菲涅尔控制反射强度变化(其实就是roughness的变化)。

混合反射效果我这边设置的反射值为0.9

混合反射后的效果,高光出现了

最后在颜色上混合上一层菲涅尔就可以了。

颜色的菲涅尔

颜色菲涅尔的效果

折射

折射很简单,原理就是扰乱半透的Cube Texture,我们只需要将一张贴图乘到半透UV的RG轴就可以了。当然为了匹配内部体积,我们可以将内部体积的UV作为折射贴图的UV。

折射效果(这张噪波贴图不是很好)

基本的效果已经实现了,我们现在做一个假的半透影子。

半透阴影

半透阴影我们采取的方法是Dither Mask,然后用Shadow Pass Switch来替换它当前的影子(其实就是用Dither过后的模型作为它投射影子的模型)。取Pixel Normal在ViewSpace中的B轴(也就是模型在地面的投影),然后abs去掉负数之后取反可以得到类似菲涅尔的效果,但是不会像菲涅尔一样随着视线变化很大。用Power可以控制范围最后输出到Dither,连上Shadow Pass Switch,再输出到Opacity Mask就可以得到假的半透阴影了(Dither阴影)。

半透阴影节点

用Pixel Normal做出的效果

半透阴影

透明度变化

translucent模式下的透明变化

最后是整体的节点:

整体节点

参数设置

附加问题:如何让摄像机只拍摄特定物体?

这个问题我在很多地方看到有人问了,这里教大家如何设置才能只渲染特定物体。

没有剔除以前会拍到自己

首先我们新建个图层,选中要显示的东西添加到图层里。

图层大纲

添加显示的Actor

在BP里的相机上设置只显示列表目标。

设置相机

然后将列表传给相机,用fresh手动更新,因为非play状态下Cube Texture不会在材质里实时更新。

将列表传给相机

最后将新建出的Actor Layer变量制定下图层名就可以只显示选中图层的物体了。

指定图层

剔除自身后的效果

这是侑虎科技第1017篇文章,感谢作者落月满江树供稿。欢迎转发分享,未经作者授权请勿转载。如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨。(QQ群:793972859)

作者主页:落月满江树 - 知乎,再次感谢落月满江树的分享,如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨。(QQ群:793972859)

如何用UE4制作假透明冰块材质相关推荐

  1. 如何用UE4制作非写实“草浪”?

    最近在A站看到了一个UE4大佬经常分享一些有趣的小教程,这个大佬就是Jack McKelvie(A站)Midwinter Entertainment的环境艺术家,今天就让我们来看看他是如何用UE4制作 ...

  2. 如何用UE4制作2D游戏文档(一)——基础篇

    一.前言 首先感谢B站马克镇镇长的视频讲解清晰把很多细节都照顾到了,我本来自己做的时候没有视频说的那么细,参考他的全套系列视频之后完善了很多内容. 视频指路:https://www.bilibili. ...

  3. 如何用UE4制作2D游戏文档(二)——资源篇

    一.前言 首先感谢B站马克镇镇长的视频讲解清晰把很多细节都照顾到了,我本来自己做的时候没有视频说的那么细,参考他的全套系列视频之后完善了很多内容. 视频指路:https://www.bilibili. ...

  4. 如何用UE4制作2D游戏文档(三)——角色篇

    一.前言 首先感谢B站马克镇镇长的视频讲解清晰把很多细节都照顾到了,我本来自己做的时候没有视频说的那么细,参考他的全套系列视频之后完善了很多内容. 视频指路:https://www.bilibili. ...

  5. 张瀚荣:如何用UE4制作3D动作游戏

    http://www.gamelook.com.cn/2015/06/218267 GameLook报道/ 6月5日,2015年第三期GameLook开放日‧虚幻引擎专场活动在上海正式举行,此次活动由 ...

  6. 张瀚荣 如何用UE4制作3D动作游戏

    GameLook报道/ 6月5日,2015年第三期GameLook开放日‧虚幻引擎专场活动在上海正式举行,此次活动由Epic Games与GameLook联合主办. 动作游戏凭借爽快的打击感和强烈的操 ...

  7. UE4蓝图案例:制作实时反射镜面材质

    UE4蓝图案例:制作实时反射镜面材质 UE4版本 4.7.6 通过蓝图来制作实时反射镜面材质 一.新建一个空的项目 如图1 二.向场景中添加[Modes]->[Basic]->[Cube] ...

  8. maya 阿诺德水晶材质_MAYA阿诺德基础材质(冰块材质)MAYA学习笔记

    冰块材质是透明的,有很高的高光.有折射.有一定的焦散. 创建一个阿诺德基础材质球. 冰块材质是透明的.没有颜色,所以没有表面颜色.,在漫反射(diffuse)里把颜色(color)设置成黑色. 在高光 ...

  9. maya 阿诺德水晶材质_阿诺德基础材质(冰块材质)

    环境球背景取消:primary visibility 着色器:shader 环境球亮度调节:intensity FEVTE编注:更多MAYA渲染教程讨论交流和MAYA相关知识学习请进入飞特网MAYA教 ...

最新文章

  1. R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行expoTrans指数变换(Exponential transformation、可以处理负数)
  2. linux下面显示所有正在运行的线程
  3. 网络推广——如何在网站内容优化工作中实现更好的网络推广?
  4. 【机器视觉】 dev_get_window算子
  5. Maskros的蓝桥刷题之路(1-13)
  6. uboot移植——使用三星官方的uboot进行移植
  7. python 生成pdf页面大小_(Python)更改使用xtopd生成的PDF文件的页面大小和格式
  8. linux下删除cmake_ubuntu 16.04 + cmake 升级
  9. 创金合信: 做的这些事
  10. 【平面设计基础】01:抠图—薄、透、露的朦胧美
  11. 12306的数据库设计
  12. python 中用ts文件合并成为MP4
  13. vyos in or out 限流量
  14. 三角函数及其之间的关系
  15. 支持M1芯片AE2022已发布,After Effects 2022 for MAC中文安装教程,支持Monterey系统不闪退
  16. Tomcat运行黄色叉号
  17. idea项目管理github无法登陆
  18. 荣耀v40怎么样 荣耀v40值得入手吗
  19. java图形界面编程 房子_Java图形界面编程
  20. JAVA缓存技术特点

热门文章

  1. python2安装pyinstaller失败
  2. d3h 技嘉b365m 黑苹果_技嘉B365M D3H主板u盘重装系统win10教程
  3. redis队列生产消费php,redis 队列 生产者 消费者模式
  4. IdUtils工具类
  5. win10必备的快捷键
  6. 表格标签、tr、td、th、table
  7. 二:原神本地服务器(sifu)搭建环境配置教程第二篇
  8. 从svn到git开发转变
  9. css动画 animation
  10. js/jquery获取文本框的值与改变文本框的值