藍圖解鎖怎么用_[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.pswp.cn/news/388959.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388959.shtml
英文地址,請注明出處:http://en.pswp.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的最后一個項目。…

這幾日英文大匯

int > 整數. 主要?用來進?行行數學運算 str > 字符串串, 可以保存少量量數據并進?行行相應的操作 bool>判斷真假, True, False list> 存儲?大量量數據.?用[ ]表?示 tuple> 元組, 不可以發?生改變 ?用( )表?示 dict>字典,保存鍵值對,?一樣可以…

在網上收集了一部分關于使用Google API進行手機定位的資料和大家分享

在網上收集了一部分關于使用Google API進行手機定位的資料和大家分享:關于基站定位方面的介紹:http://tech.c114.net/164/a140837.html開發方面的幫助:http://www.dotblogs.com.tw/kylin/archive/2009/08/09/9964.aspxhttp://code.google.com…

background圖片疊加_css怎么讓兩張圖片疊加,不用background只用img疊加

展開全部css層疊圖片代碼://這個層為外面的父層,只需設置相對位置樣式即可//這個為里e69da5e887aa3231313335323631343130323136353331333431363030面要疊加的層,只需設置絕對樣式//這個為層里面的內容圖片//這個為父層內容或者:擴…

“入鄉隨俗,服務為主” 發明者量化兼容麥語言啦!

5年時光 我們裹挾前行。發明者量化從篳路藍縷到步履蹣跚,從以“區塊鏈資產交易”為陣地,再到以“內外盤商品期貨”為依托。再到今天全面兼容“麥語言”。每一步,我們始終都在為建立一個優秀的量化交易平臺而努力。 什么是麥語言? …

自考數據結構和數據結構導論_我跳過大學自學數據科學

自考數據結構和數據結構導論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.幾個月前,我決定要學習數據科學。 為此, 我跳過了數據科學專業的整個學期。 …

爬取LeetCode題目——如何發送GraphQL Query獲取數據

前言 GraphQL 是一種用于 API 的查詢語言,是由 Facebook 開源的一種用于提供數據查詢服務的抽象框架。在服務端 API 開發中,很多時候定義一個接口返回的數據相對固定,因此要獲得更多信息或者只想得到某部分信息時,基于 RESTful AP…

python中的thread_Python中的thread

測試代碼import threadingimport timedef do_thread_test():print start thread time:, time.strftime(%H:%M:%S)time.sleep(5)print stop thread time:, time.strftime(%H:%M:%S)threads []for i in range(2):thread1 threading.Thread(targetdo_thread_test)thread1.setDae…

--附加數據庫失敗

--附加數據庫失敗1.產生失敗的原因比如有個數據庫,名叫HIMS,它的數據文件HIMS_Data.mdf和日志文件HIMS_Log.ldf,都放在路徑c:/Program Files/Microsoft SQL Server/MSSQL/data/下。但是這個數據庫天天跑日志,會產生上G的日志,現在通過企業管理…

十三、原生爬蟲實戰

一、簡單實例 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…

Angular2+ typescript 項目里面用require

在typescript里面怎么使用require方法呢? const jQuery require(jquery); const fip require( fonticonpicker/fonticonpicker )( jQuery ); 如果什么都不做,直接在項目里面使用,會得到以下錯誤: Cannot find name require 以下…

機器學習實踐三---神經網絡學習

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…

Microsoft Expression Blend 2 密鑰,key

Microsoft Expression Blend 2 密鑰,key,序列TJ2R3-WHW22-B848T-B78YJ-HHJWJ號

ethereumjs/ethereumjs-common-3-test

查看test能夠讓你更好滴了解其API文檔的使用 ethereumjs-common/tests/chains.js const tape require(tape) const Common require(../index.js)tape([Common]: Initialization / Chain params, function (t) {t.test(Should initialize with chain provided, function (st) …

mysql修改_mysql修改表操作

一: 修改表信息1.修改表名alter table test_a rename to sys_app;2.修改表注釋alter table sys_application comment 系統信息表;二:修改字段信息1.修改字段類型和注釋alter table sys_application modify column app_name varchar(20) COMMENT 應用的名…

機器學習實踐四--正則化線性回歸 和 偏差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…

Android strings.xml中定義字符串顯示空格

<string name"str">字 符 串</string> 其中 就表示空格。如果直接在里面鍵入空格&#xff0c;無論多少空格都只會顯示一個。 用的XML轉義字符記錄如下&#xff1a; 空格&#xff1a; <string name"out_bound_submit">出 庫</strin…