由于项目需要一个将场景慢慢淡入以及淡出的效果,所以就想了想实现思路。因为PBR光照模型是不支持透明物体的渲染的,所以UE4中的PBR材质在为Opaque时是无法改变透明度的,想来想去想不出解决方法,然后就找啊找找啊找,发现一种偷鸡摸狗的方法,为每个Mesh准备两种材质,一种透明,一种不透明,在需要的时候切换材质并调整透明度即可,不知还有木有更炫酷的解决方法,先记录一哈。

  在这个项目中,我选择将这个功能做成一个Actor Component,这样需要这种效果的Mesh只需添加这个组件就能实现Fade Out Fade in的效果。下图为该组件的变量及函数:

  ParentMesh:为获取组件被挂在到的Mesh。

  Hidden:控制Mesh消失。

  BaseMaterial:保存Mesh的原有材质。

  FadeMaterial:Mesh Fade时的材质,指定为可编辑的,每个Mesh单独指定。

  FadeMaterialDynamicInstance:Fade材质的动态实例。

  FadeCurve:Mesh Fade时的控制曲线,可编辑。

  CurrentFade:作为曲线的X输入,得到的值控制Fade时的透明度(即材质的透明度参数)。

  FadeRate:Mesh Fade的速率。

  IsStartHidden:Mesh的初始状态是否为隐藏。

  Toggle Hide Mesh:当Hidden为true时,设为动态材质实例,并在tick中根据曲线修改透明度。

  

  BeginPlay:初始化一些变量,生成动态材质实例,根据IsStartHidden来指定初始状态。

  Tick:根据Hidden决定曲线中的X输入是递增还是递减,并且设置最大值最小值的限制,赋值给材质中的Fade参数,这种材质中的参数统一为Fade,最后判断CurrentFade为1而且Hidden为true时,设为原有材质。

  用法:将组件挂在有Mesh的Actor中,设置曲线,Fade材质,FadeRate,及初始时是否隐藏。调用ToggleHideMesh,参数为true为隐藏,false为显示。

  总结:要实现一个Mesh的Fade out需要准备两种材质,一种透明,一种不透明,在Fade Out的时候切换为透明材质,根据一个渐变的值赋值给材质的参数即可。

  如果需要做出将挡住主角的Mesh Fade out只需要在主角和摄像机之间发出射线,将碰撞的物体加入一个数组,跟上一帧比较,将上一帧数组中不在这一帧数组的物体恢复原样,再把这一帧数组的物体Fade Out。

UE4 Fade out Mesh的更多相关文章

  1. UE4 Tutorial - Custom Mesh Component 用于绘制自定义网格的插件CustomMeshComponent

    UE4 中用于绘制自定义网格的插件CustomMeshComponent. 转载: UE4 Tutorial - Custom Mesh Component   Over the last few w ...

  2. [UE4]Set Skeletal Mesh,在蓝图中设置骨骼模型

  3. Houdini技术体系 基础管线(四) :Houdini驱动的UE4植被系统 上篇

    背景 之前在<Houdini技术体系 过程化地形系统(一):Far Cry5的植被系统分析>一文中已经对AAA游戏中过程化植被的需求有了一定的定义,后续工作就是如何用Houdini开发功能 ...

  4. ue4 Skeletal Mesh编辑器

    skeletal mesh:骨骼网络物体资源 由 美术制作(*.fbx). 在ue4可对此资源进行编辑以添加一些游戏需要的设置. https://docs.unrealengine.com/lates ...

  5. [UE4]如何替换角色Mesh上的Material材质

    http://www.dawnarc.com/2016/10/ue4%E5%A6%82%E4%BD%95%E6%9B%BF%E6%8D%A2%E8%A7%92%E8%89%B2mesh%E4%B8%8 ...

  6. [UE4]Static Mesh的碰撞体

    一.可以在3D建模的时候添加碰撞体,导入到UE4的时候,碰撞体也会跟着导入进来. 二.也可以在UE4中自行添加碰撞体 三.在UE4中添加编辑碰撞体 四.选择碰撞体可以移动.缩放.旋转碰撞体,如果模型比 ...

  7. [UE4]在Character中使用Add Spline Mesh Component,关于Transform.Mobility

    一.因为Character是可移动的,因此也需要把Add Spline Mesh Component的Transform.Mobility设置为Movable 二.不然就会得到类似这样的提示.错误信息 ...

  8. [UE4]Spline Mesh Actor

    作用: 1.按照Spline设置的轨迹,进行显示网格物体. 曲线模型 一.赋值Static Mesh,任意的Static Mesh都可以. 二.调整方向 三.Spline Mesh Actor有2个端 ...

  9. [UE4]虚幻4 spline组件、spline mesh组件的用法

    最近公司项目需要,把这两个东东好好看了下.不得不说,这两个组件还是非常方便的,但是相关的介绍.教程却非常的少.它们概念模糊,用法奇特,我就总结下吧. 首先,先要明白spline component.s ...

随机推荐

  1. Ionic2 开发笔记(1)ionic2 +angular2搭建

    1.去node.js官网下载对应版本https://nodejs.org/en/(不会请看OnsenUi搭载,里面有详细过程) 2.然后通过npm下载Ionic和cordova $ npm insta ...

  2. 3404: [Usaco2009 Open]Cow Digit Game又见数字游戏

    3404: [Usaco2009 Open]Cow Digit Game又见数字游戏 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 72  Solved ...

  3. fprintf&prinft&sprintf

    1: fprintf()#include <stdio.h> int fprintf( FILE *stream, const char *format, ... );fprintf()函 ...

  4. Cesium原理篇:3D Tiles(2)数据结构

    上一节介绍3D Tiles渲染调度的时候,我们提到目前Cesium支持的Cesium3DTileContent目前支持如下类型: Batched3DModel3DTileContent Instanc ...

  5. vue.js 踩坑第一步 利用vue-cli vue-router搭建一个带有底部导航栏移动前端项目

    vue.js学习 踩坑第一步 1.首先安装vue-cli脚手架 不多赘述,主要参考WiseWrong 的 Vue 爬坑之路(一)-- 使用 vue-cli 搭建项目 2.项目呈现效果 项目呈现网址:w ...

  6. Robot Framework 使用笔记

    条件表达式: Run Keyword If 表达式 执行动作   ... ELSE IF 表达式 执行动作 ... ELSE 执行动作   基础格式见上表,下面是我遇到的坑: 表达式:判断字符串变量是 ...

  7. 解读Laravel,看PHP如何实现Facade?

    刚刚开始学Laravel就会接触到路由 Route::get('/', function () { return view('welcome'); }); 后来笔者一本正经的去读过Route类的代码, ...

  8. 解锁redis锁的正确姿势

    解锁redis锁的正确姿势 redis是php的好朋友,在php写业务过程中,有时候会使用到锁的概念,同时只能有一个人可以操作某个行为.这个时候我们就要用到锁.锁的方式有好几种,php不能在内存中用锁 ...

  9. java中有符号和无符号数据类型发生转换

    package com.itheima.test01;/* * byte short int long float double 是有符号位的数 * char boolean 是无符号位的数 * 补码 ...

  10. Ubuntu部署Jupyter

    前言 Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言.在本文中,我们将介绍 Jupyter notebook 的主要特 ...