蓝图解锁怎么用_[UE4蓝图][Materials]虚幻4中可互动的雪地材质完整实现(一)

da3d17a53a9b8db4f6c7ab212ff57897.png

不说废话,先上个演示图

v2-5f8c1aa0f9f7b32b2e3484bc614bb65f_b.gif
最终成果(脚印,雪地可慢慢恢复,地形可控制)

主要原理(白话文):

假如你头上是块白色并且可以透视的平地,来了个非洲兄弟踩上面,你拿起单反对着上面拍了一张,照片如下

73be525ad17fb2ab044a2c0e13a10289.png

把脚印稍作翻转(因为需要的是从上往下看的图),然后用打印机打印照片,垫在黑人兄弟脚下之后得到

95441a6ea14bf7ad845b4164e9b808bc.png
黑人兄弟弹跳就是好

再试试用3D打印机,白色的地方堆高点,脚印的地方留个黑色凹槽,然后变成了

435bc57e3fa1e067c50351b26b824369.png

没错,原理就是这么简单,你可以开始跟着做了。

完整实现:

1.先新建一个新的ThirdPerson蓝图项目,把建筑都删掉,新建一个中心在原点的地形
(我们先把地形中心,人物,SceneCapture都放在原点位置,这样翻转UV的时候会好理解一点,后面我们再考虑上坐标的偏移)

  • UE4的项目名和项目文件名一定要用英文,之前我的项目总文件夹名是中文,创建C++项目一直报错

2.新建一个SceneCapture2D蓝图类,将SceneCaptur2D蓝图类拖入到场景中,设置坐标(0,0,-500),Y轴旋转90度,这样就使其在地面下并且镜头朝上了。

  • SceneCapture2D:相当于一个相机,每帧拍一张照片提供给你,你可以拿来放到材质里或者直接摆UI上,大部分游戏的小地图都是用这个做的

3.进入蓝图,将CaptureComponent2D组件的投射类型改为正交,宽度可以暂时设为2048(也就是之后雪地的最大宽度)

76d81981f420c1c80742e3109401e2f4.png
  • 投射类型(Projection Type)
    透视(Perspective)就是类似人眼,看到的是近大远小。
    正交(Orthographic)就像数学老师黑板上画的效果,不会因为投影而改变物体比例。

f565582ceadbe129b2161891977335bb.png
a为透视,b为正交

4.在资源管理器中新建两个RenderTarget,按1,2排序,2会用到。然后在CaptureComponent2D中绑定RendetTarget1,并将CaptureSource改为Final Color。

  • RenderTarget(渲染目标):用来保存渲染的缓存,类似拍张照片存在这里。

7776eb9e3e88971bf10997171f41bd6c.png

5.新建一个材质名为Depth,将MaterialDomain改为Post Process(后期处理),添加到CaptureComponent2D的后效材质数组中

2fbc56a2c46aada288f5d470639e32c5.png

6.新建一个材质Snow,将其设置为Two Sided(两面的),然后放到地形上。如果不设置成两面的,等会在地形下方的相机就看不到地形,捕捉不到地形的场景深度。

82827a56e90a3469ad522dd4867aefdd.png

7.Depth材质解析

  • 记得先开启Player的自定义深度
    (关于自定义深度和相关材质基础知识请先看这两篇
    [UE4蓝图][Materials]虚幻4中用自定义深度完整实现描边材质(一) - 架狙只打脚
    [UE4蓝图][Materials]虚幻4中用自定义深度完整实现描边材质(二) - 架狙只打脚)

09cdb57e0c42ce295dc2d7b337d55e14.png
Depth材质
  • 先介绍下Saturate节点,这个节点等同于Math.Clamp(0,1)。
    当输入值小于0时,输出0。
    当输入值大于1时,输出1。
    当输入值在0到1之间时,直接输出这个值。
  • 因为SceneCapture2D是从下往上拍的,所以获得Player的自定义深度是大于场景深度的,也就是Player离相机的距离大于地面离相机的距离。
  • 这里用(CustomDepth-SceneDepth)/自定义参数Depth=Result,那么有三种情况没有人站的地方:CustomDepth为正无穷,所以Result为正无穷,Saturate处理后为1,显示白色。人的脚底到离地面Depth高度的这一段(图中红色示意部分):CustomDepth大于SceneDepth并且小于参数Depth,所以Result为0~1的值,Saturate处理后值不变,那么根据离地越近的部分越黑。人从Depth高度往上的部分:Result为大于1的值,也是显示白色。

a341761a3547a68f5c52298be7a027f3.png

8.现在新建一个UserInterface-WidgetBlueprint(控件蓝图),也就是一个UI界面,拖入一个Image,并将其的Image引用选为RenderTarget1,然后记得编译。

e36640abeb01b39608c24ec544f6a0f9.png

9.打开一开始创建的SceneCapture2D蓝图,在GameBegin时将这个UI添加到视窗上。

cb45acbd6de1b47f265ead17b503a3f1.png

现在运行游戏应该可以看到我们要的初步照片了

8194e414de4697f4caf9576d2b9dca1d.gif
这里为了看得清楚,我把相机的OrthoWidth调成512了,所以脚印看起来比你的大

我们再把检测的深度参数Depth由20改为200试试

dfcabe358d8494fa5d8f187cc45274c7.gif

(这里注意:这里相机从下往上每个像素点检测到的自定义深度是取离相机最近的一个,也就是说从下往上看被脚掌挡住的部分,比如脚脖子,跟腱等等,检测到的自定义深度就是脚掌离相机的距离,显示黑色,只有在脚掌之外的部位被检测到,才会显示更淡的颜色。)

下一篇:

[UE4蓝图][Materials]虚幻4中可互动的雪地材质完整实现(二)​zhuanlan.zhihu.com
13e07cba0c709fac8bf17380de20fc91.png

本篇到此结束了,因为想记录的细致一点,所以会比较慢,感谢关注评论点赞收藏!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据预处理工具_数据预处理

数据预处理工具As the title states this is the last project from Udacity Nanodegree. The goal of this project is to analyze demographics data for customers of a mail-order sales company in Germany.如标题所示,这是Udacity Nanodegree的最后一个项目。…

自考数据结构和数据结构导论_我跳过大学自学数据科学

自考数据结构和数据结构导论A few months back, I decided I wanted to learn data science. In order to do this, I skipped an entire semester of my data science major.几个月前,我决定要学习数据科学。 为此, 我跳过了数据科学专业的整个学期。 …

十三、原生爬虫实战

一、简单实例 1、需求:爬取熊猫直播某类主播人气排行 2、了解网站结构 分类——英雄联盟——"观看人数" 3、找到有用的信息 二、整理爬虫常规思路 1、使用工具chrome——F12——element——箭头——定位目标元素 目标元素:主播名字&#xff0c…

归一化 均值归一化_归一化折现累积收益

归一化 均值归一化Do you remember the awkward moment when someone you had a good conversation with forgets your name? In this day and age we have a new standard, an expectation. And when the expectation is not met the feeling is not far off being asked “w…

sqlserver垮库查询_Oracle和SQLServer中实现跨库查询

一、在SQLServer中连接另一个SQLServer库数据在SQL中,要想在本地库中查询另一个数据库中的数据表时,可以创建一个链接服务器:EXEC master.dbo.sp_addlinkedserver server N别名, srvproductN库名,providerNSQLOLEDB, datasrcN服务器地址EXEC…

机器学习实践三---神经网络学习

Neural Networks 在这个练习中,将实现神经网络BP算法,练习的内容是手写数字识别。Visualizing the data 这次数据还是5000个样本,每个样本是一张20*20的灰度图片fig, ax_array plt.subplots(nrows10, ncols10, figsize(6, 4))for row in range(10):fo…

机器学习实践四--正则化线性回归 和 偏差vs方差

这次实践的前半部分是,用水库水位的变化,来预测大坝的出水量。 给数据集拟合一条直线,可能得到一个逻辑回归拟合,但它并不能很好地拟合数据,这是高偏差(high bias)的情况,也称为“欠…

深度学习 推理 训练_使用关系推理的自我监督学习进行训练而无需标记数据

深度学习 推理 训练背景与挑战📋 (Background and challenges 📋) In a modern deep learning algorithm, the dependence on manual annotation of unlabeled data is one of the major limitations. To train a good model, usually, we have to prepa…

CentOS 7 使用 ACL 设置文件权限

Linux 系统标准的 ugo/rwx 集合并不允许为不同的用户配置不同的权限,所以 ACL 便被引入了进来,为的是为文件和目录定义更加详细的访问权限,而不仅仅是这些特别指定的特定权限。 ACL 可以为每个用户,每个组或不在文件所属组中的用…

机器学习实践五---支持向量机(SVM)

之前已经学到了很多监督学习算法, 今天的监督学习算法是支持向量机,与逻辑回归和神经网络算法相比,它在学习复杂的非线性方程时提供了一种更为清晰,更强大的方式。 Support Vector Machines SVM hypothesis Example Dataset 1…

服务器安装mysql_阿里云服务器上安装MySQL

关闭防火墙和selinuxCentOS7以下:service iptables stopsetenforce 0CentOS7.xsystemctl stop firewalldsystemctl disable firewalldsystemctl status firewalldvi /etc/selinux/config把SELINUXenforcing 改成 SELINUXdisabled一、安装依赖库yum -y install make …

在PyTorch中转换数据

In continuation of my previous post ,we will keep on deep diving into basic fundamentals of PyTorch. In this post we will discuss about ways to transform data in PyTorch.延续我以前的 发布后 ,我们将继续深入研究PyTorch的基本原理。 在这篇文章中&a…

机器学习实践六---K-means聚类算法 和 主成分分析(PCA)

在这次练习中将实现K-means 聚类算法并应用它压缩图片,第二部分,将使用主成分分析算法去找到一个脸部图片的低维描述。 K-means Clustering Implementing K-means K-means算法是一种自动将相似的数据样本聚在一起的方法,K-means背后的直观是一个迭代过…

打包 压缩 命令tar zip

2019独角兽企业重金招聘Python工程师标准>>> 打包 压缩 命令tar zip tar语法 #压缩 tar -czvf ***.tar.gz tar -cjvf ***.tar.bz2 #解压缩 tar -xzvf ***.tar.gz tar -xjvf ***.tar.bz2 tar [主选项辅选项] 文件或目录 主选项是必须要有的,它告诉tar要做…

mysql免安装5.7.17_mysql免安装5.7.17数据库配置

首先要有 mysql-5.7.10-winx64环境: mysql-5.7.10-winx64 win10(64位)配置环境变量:1、把mysql-5.7.10-winx64放到D盘,进入D\mysql-5.7.10-winx64\bin目录,复制路径,配置环境变量,在path后面添加D\mysql-5.7.10-winx6…

tidb数据库_异构数据库复制到TiDB

tidb数据库This article is based on a talk given by Tianshuang Qin at TiDB DevCon 2020.本文基于Tianshuang Qin在 TiDB DevCon 2020 上的演讲 。 When we convert from a standalone system to a distributed one, one of the challenges is migrating the database. We’…

机器学习实践七----异常检测和推荐系统

Anomaly detection 异常检测是机器学习中比较常见的应用,它主要用于非监督学习问题,从某些角度看, 它又类似于一些监督学习问题。 什么是异常检测?来看几个例子: 例1. 假设是飞机引擎制造商, 要对引擎进行…

CODE[VS] 1621 混合牛奶 USACO

题目描述 Description牛奶包装是一个如此低利润的生意,所以尽可能低的控制初级产品(牛奶)的价格变的十分重要.请帮助快乐的牛奶制造者(Merry Milk Makers)以可能的最廉价的方式取得他们所需的牛奶.快乐的牛奶制造公司从一些农民那购买牛奶,每个农民卖给牛奶制造公司的价格不一定…

刚认识女孩说不要浪费时间_不要浪费时间寻找学习数据科学的最佳方法

刚认识女孩说不要浪费时间重点 (Top highlight)Data science train is moving, at a constantly accelerating speed, and increasing its length by adding up new coaches. Businesses want to be on the data science train to keep up with the ever-evolving technology a…

测试工具之badboy

badboy这个工具本身用处不是很大,但有个录制脚本的功能,还是jmeter脚本,所以针对这一点很多懒人就可以通过这个录制脚本,而不需要自己去编写 badboy工具最近还是2016年更新的,后面也没在更新了,官方下载地址…