999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

UE 4粒子系統與外部數據通信研究

2017-08-07 08:20:45孫農亮玄令岐劉一清
鄭州大學學報(理學版) 2017年3期
關鍵詞:設置文本

孫農亮, 玄令岐, 劉一清

(山東科技大學 電子通信與物理學院 山東 青島 266590)

UE 4粒子系統與外部數據通信研究

孫農亮, 玄令岐, 劉一清

(山東科技大學 電子通信與物理學院 山東 青島 266590)

粒子系統被公認為是近年來應用于不規則景物模擬最好的方法.本文對Unreal Engine 4(簡稱UE 4)的粒子系統加以研究,通過藍圖的可視化編程以及Matinee動畫系統實現了粒子系統與內部數據的通信;以VS為開發環境,重點編程實現了粒子系統的外部接口,通過讀取外部文本的方式完成了粒子系統與外部數據的通信.這兩種通信方式將讀取的數據傳遞到粒子系統的參數中改變其狀態,同時外部的通信方式可以將模擬自然景物的算法數據與虛擬場景中粒子系統的參數相結合,使得模擬效果基于科學的計算,提高了其模擬自然景物的真實性和有效性.

Unreal Engine 4; 粒子系統; 接口; 數據通信

0 引言

在人們使用虛擬現實技術模擬真實世界的過程中,不規則物體的模擬一直是一個重要的課題.但不規則物體由于外形多變、邊界模糊,很難通過傳統的建模方式表現出來.針對這個問題,1983年,Reeves首次提出了粒子系統的概念[1].由于粒子系統自身高度靈活的特點[2],其在不規則物體上的模擬更加逼真生動.在虛擬現實、三維建模、電影動畫制作、數據可視化等方面占據著越來越重要的地位.而在學術研究上,通過粒子系統對自然景物的模擬也一直是眾多學者熱點研究方向.周迎春等通過求解動力學方程成功實現了對戰場煙霧的特效仿真[3].潘秋羽等提出了一種基于粒子系統的快速云三維仿真算法[4].肖凱濤等在Unity3D中實現了粒子系統在復雜風場和湍流場中的變化[5],呂雪等提出了一種基于GPU粒子系統的煙花模擬方法[6].文獻[7-8]利用粒子系統實現了實時降雨降雪的模擬和海洋環境的仿真.文獻[9]基于OpenGL圖形庫完成了噴泉的模擬.上述研究有的研究了自然景物模擬的算法,有的是對粒子系統的算法做出了改進,但是很少有人將自然景物模擬算法得出的數據與粒子系統相結合模擬自然景物.本文就是在這種情況下,以Unreal Engine 4(UE 4)的粒子系統為基礎,研究了粒子系統模擬自然景物的參數,并重點研究了粒子系統在引擎內部以及與外部的通信方式,使得粒子系統能夠通過讀取外部驅動的算法數據并與內部參數相結合模擬自然景物.

UE 4是EpicGames公司最新推出的游戲引擎,其 Cascade粒子系統編輯器提供了創建精細復雜的火焰、煙霧、雪、塵土、泥土、碎石等所需的工具.其強大的渲染效果和逼真的特效使得設計者創建出無與倫比的效果.它同時提供了Matinee過場動畫工具集,可以把場景中的細節設置為最佳效果,令場景屬性隨著時間進行改變,制作無與倫比的電影片段.正是基于此,本文選擇了UE 4為開發平臺.

1 粒子系統

1.1 粒子系統的基本原理

粒子系統的基本原理是通過大量的具有一定屬性的點粒子、線粒子或面粒子來模擬形狀不規則且多變的場景.在UE 4中,粒子系統由多個發射器組成,每個發射器包括多個模塊,可以根據需求添加和刪除模塊.每個發射器發射特定的粒子,多個發射器共同發射不同屬性粒子組成一個完整的粒子系統,可以創建各種復雜的特效.

圖1 粒子系統Fig.1 Particle system

1.2 粒子系統的基本參數

粒子的基本屬性主要有以下7種:

1) Material: 存在于Required模塊,是應用在粒子中的材質.

2) Rate: 存在于Spawn模塊,指的是粒子的生成率,也就是粒子系統每秒發射的粒子數量.

3) Lifetime: 存在于Lifetime模塊,單個粒子的生命周期(以秒為單位),數值越大,粒子存活時間越長.

4) StartSize: 存在于InitialSize模塊,指的是單個粒子的初始大小.

5) StartVelocity: 存在于InitialVelocity模塊,指的是單個粒子的初始速度.

6) ColorOverLife: 存在于ColorOverLife模塊,指的是粒子的顏色隨時間的變化而變化.

7) AlphaOverLife: 存在于ColorOverLife模塊,指的是粒子的透明度隨時間的變化而變化.

1.3 參數的數據類型

UE 4粒子系統參數的數據類型為分布(Distribution),分布是一組數據類型,這些數據類型可以是常量值、某個范圍內的隨機值、沿著曲線上的插值及由參數驅動的值,這些都為UE 4提供了很好的靈活性.多數粒子屬性都使用 DistributionFloat(浮點分布)和DistributionVector (向量分布)類型.

Constant(常量):用于為常量屬性提供一個值.

Uniform(均勻分布):為屬性提供一定范圍內的值.當計算時,在選中的范圍隨機地設置返回的值.

ConstantCurve(常量曲線分布):用于為分布在曲線編輯器上隨時間變化的屬性提供值.時間是絕對的(隨著發射器的生命周期)或相對的(隨著單個粒子的生命周期)取決于使用分布的模塊.

UniformCurve(均勻曲線分布):用于為分布在曲線編輯器上隨時間變化的屬性提供一定范圍的值.在兩條曲線范圍內隨機設置返回值.

ParticleParam(粒子參數分布):這種類型用于為發射器的參數進行代碼設置.它提供了把輸入值從一個范圍映射到另一個范圍的功能,在“Cascade-空間”中調整參數而不需要更新游戲形代碼.定義一個可靠的輸入范圍,便可以通過 Output(輸出) 映射自由地調整屬性.

2 UE 4粒子系統的內部通信

2.1 設置參數

粒子系統參數的數據類型中,ParticleParam(粒子參數)是其中比較特殊的一種,它允許操作者通過外部的藍圖等模塊控制參數,從而改變粒子系統的狀態.本文以火焰粒子的ColorOverLife(顏色隨生命周期變化)參數為例.該參數存在于火焰發射器中的ColorOverLife模塊.選擇該模塊后,在細節面板上可以找到ColorOverLife參數的數據類型.將該數據類型設置為Distribution Vector Particle Parameter;命名為Change in color.

圖2 設置參數Fig.2 Setting parameters

將火焰粒子放置在關卡中,在細節面板的Particle層次下找到Instance Parameter并添加元素,同樣命名為Change in color,Param Type模式選擇Color.

2.2 藍圖可視化編程

選擇關卡中的火焰粒子,在細節面板中創建火焰粒子類,命名為P_Fire_BP,打開類的藍圖編輯器進行編程.

數據的內部通信是通過變量進行傳遞,在類中首先要設置參數變量.在這里以顏色為例,所以創建Vector類型的數據變量,并將其設置為“顯示到Matinee”(此設置可以將變量參數暴露給Matinee以進行修改)和“可編輯”(此設置可以在藍圖實例上公開編輯此變量).參數的改變主要是通過Set Color Parameter模塊對火焰粒子的顏色進行修改,該模塊以Particle System Component(粒子系統組件)為目標.

2.3 Matinee動畫設置參數變量

在UE 4中添加Matinee過場動畫,點擊選中關卡中的P_Fire_BP類,在Matinee中創建新組,命名為“Color Variance”.右鍵點擊選中Color Variance,添加新的Vector Property Track,命名為Color.在選中Color軌跡的前提下,移動黑色光標選擇時間點,通過Enter鍵添加關鍵幀.將Color軌跡的右下角曲線圖標點亮,通過Matinee的曲線編輯器對參數變量進行設置.出于舉例的特殊性,本文在2秒的時間內設置了3個關鍵幀.

在Matinee的細節面板中可以根據需要選擇是否循環播放,通過設置各種參數隨時間改變粒子系統的狀態;也可以在藍圖中設置播放方式以及播放時間等來創建各種想要的特效.通過藍圖可視化編程以及Matinee初步實現了數據在UE 4粒子系統內部的通信.圖3為仿真結果.

圖3 火焰顏色變化Fig.3 Color change of the flame

3 基于文本的UE 4粒子系統的外部通信

UE 4通過藍圖與Matinee實現了粒子系統的內部通信,但這對于粒子系統的數據傳輸是有局限性的,制約了UE 4粒子系統與外部的數據傳輸.以VS為開發環境,以C++為開發語言,編程實現了UE 4粒子系統與外部數據的傳輸.

3.1 粒子系統的接口函數

粒子系統通過參數改變其狀態,數據傳輸的前提是實現參數的接口.在UE 4中通過創建不同的類實現各個模塊的功能.在UE 4編輯器中創建新的C++類,繼承Actor父類,在cpp文件中編寫粒子系統的接口類.以火焰粒子系統為例:

首先綁定創建的初始狀態的粒子系統:

FName EffectName="/Game/StarterContent/Particles/P_Fire.P_Fire"; //火焰粒子的路徑

UParticleSystem *MyEffect=Cast(StaticLoadObject(UParticleSystem::StaticClass(), NULL, *EffectName.ToString())); //綁定火焰粒子

編寫修改粒子系統參數的接口函數,在接口函數中,通過MyEffect->Emitters[i]函數(定位粒子系統中的發射器)找到要修改的發射器Emitters[i],在發射器中通過MyEmitter->LODLevels[i]函數(定位發射器中的模塊)找到要修改的模塊Module,在模塊下找到要修改的參數.將接口函數中接收的數據賦值給要修改的參數.不同的參數對應不同的接口函數.其中接口函數接收的數據類型要和修改的參數的數據類型一致.以下為部分接口函數:

void SetActorScale3D(FVector NewScale3D); //粒子系統的整體大小

void SetActorRelativeLocation(FVector NewRelativeLocation); //粒子系統在關卡中的相對位置

void SetActorRelativeRotation(FRotator NewRelativeRotation); //粒子系統的角度

void SetEmitteroneSpawnRate(float NewSpawnRate); //粒子系統第一個發射器的速率

void SetEmitteroneLifeTime(float NewLifeTime); //粒子系統第一個發射器的生命周期

void SetEmitteroneStartSize(FVector NewStartSize); //粒子系統第一個發射器的初始大小

void SetEmitteroneStartVelocity(FVector NewStartVelocity); //粒子系統第一個發射器的初始速度

void SetEmitteroneColorOverLife(MyColor CL); //粒子系統第一個發射器的顏色

void SetEmitteroneAlphaOverLife(MyAlpha CL); //粒子系統第一個發射器的透明度

粒子系統發射器中的每一個參數對應一個函數,其中每一個函數都可以接收數據,并能夠將數據傳遞到相應的的參數中,改變粒子系統的模擬狀態.

3.2 外部文本數據的讀取

UE 4中進行文件I/O操作時,為了其可移植性,不能直接使用C++標準庫,為此UE 4提供了 IPlatformFile(平臺文件I/O接口),通過IPlatformFile可以實現粒子系統與外部文本的接口通信.

在文本文件中,數據的類型為浮點型.每一行的數據表示要修改的參數,例如,每1行的第1個數據是要修改的速率,第2~第4個數據是要修改的初始大小……,每個數據與數據之間通過空格隔開.如圖4所示.

圖4 文本中的數據格式Fig.4 Data format in text

設置好文本中數據的格式后,通過FPlatformFileManager:Get().GetPlatformFile().FileExists(*CompleteFilePath)函數(管理文本的函數,通過路徑綁定文本文件,其中CompleteFilePath為文本的路徑)綁定文本文件.將文本文件中的數據通過LoadFileToString函數(將文本中的數據緩存成字符串的格式)緩存下來并轉換成字符串格式.

根據空格(“”)讀取一行中的每一個數據,將數據通過Atof函數(轉換數據格式的函數)轉換成參數所需要的數據類型,賦值給粒子系統接口函數頭中接收的參數.讀取完一行后,根據換行函數讀取下一行直到最后一行,最終讀取完成整個文本中的數據.

圖5的3個示例分別展示了通過改變和讀取文本文件中的數據而得到的仿真結果,作者通過讀取外部的數據進行了火焰燃燒的仿真實驗.在本次仿真中,主要對其中的4個參數進行了改變:速率、初始大小、生命周期、初始速度.其中文本中的數據來源于外部的數據解算模塊,UE 4每隔0.25秒讀取一次文本數據,模擬了火焰從開始燃燒到劇烈燃燒的場景.

可以看出,采用這種方法,可以很好地實現粒子系統與外部數據的通信,可以將外部的解算模塊得出的數據與粒子系統中的參數相結合.而通過文本讀取數據的方式既能達到實時的效果,又可以較容易地與外部解算模塊或軟件結合使用,避免了不同軟件需要不同的通信協議的問題,為實現基于外部數據驅動的模擬仿真打下基礎.

圖5 文本文件數據控制的火焰燃燒Fig.5 Fire controlled by text file data

4 結論

UE 4粒子系統內部間的通信以及外部數據通信的實現,使得我們可以通過外部的數據控制粒子系統的模擬效果,既可以更加逼真地模擬現實生活中的場景和事件,也提高了其模擬自然景物的真實性和有效性.這也為基于數據解算和驅動的仿真提供了有效手段.

[1] REEVES W T. Particle system: a technique for modeling a class of fuzzy objects[J].Acm siggraph computer graphics, 1983,17(3):359-375.

[2] 劉剛. 基于 CUDA平臺和粒子系統技術的實時煙花模擬[D].上海:上海大學,2013.

[3] 周迎春, 房凌暉, 鄭翔玉,等. 基于粒子系統的虛擬戰場煙霧特效仿真[J]. 計算機仿真, 2015, 32(7):417-420.

[4] 潘秋羽, 畢碩本, 陸良虎,等. 基于粒子系統三維動態云的快速仿真算法[J]. 系統仿真學報, 2014, 26(1).

[5] 肖凱濤, 徐路程, 李紅輝. 粒子系統在復雜風場及湍流場中的實現[J]. 北京交通大學學報, 2015, 39(2):13-21.

[6] 呂雪, 劉麗, 王俊杰,等. 基于GPU粒子系統的煙花模擬[J]. 計算機工程與設計, 2013, 34(3):989-992.

[7] 劉芳, 佟巍. 基于粒子系統的實時降雨、降雪模擬[J]. 計算機系統應用, 2015, 24(6):19-23.

[8] 王琪, 鄧會亨, 馬璐. 基于粒子系統的海洋環境仿真[J]. 計算機系統應用, 2013, 22(2):230-232.

[9] 劉韜. 基于OpenGL噴泉粒子系統設計與實現[J]. 科技視界, 2016(11):287-288.

(責任編輯:王浩毅)

Research on Communication Between Particle System of UE 4 and External Data

SUN Nongliang, XUAN Lingqi, LIU Yiqing

(CollegeofElectronicCommunicationandPhysics,ShandongUniversityofScienceandTechnology,Qingdao266590,China)

Particle system was considered as the best method to simulate the irregular scene in recent years. The particle system of Unreal Engine 4(UE 4) was studied. And the communication between the particle system and the internal data was realized through the visual programming of the blueprint and the Matinee animation system. With VS as the development environment, external interface of the particle system was programed. The communication between the particle system and the external data was achieved by reading text file. The input data would be transferred into the parameters of the particle system and changed each state.At the same time, the external communication mode was used to combine the simulation of the natural scenery and the parameters of the particle system in the virtual scene. This simulation based on scientific calculation improved the sense of reality and validity in simulation natural scene.

Unreal Engine 4; particle system; interface; data communication

2016-12-01

國家863項目子課題:礦井災害動態演化技術驗證平臺(2015AA016404-4);山東科技大學領軍人才計劃項目.

孫農亮(1962—),男,山東青島人,教授,主要從事圖像處理、模式識別、虛擬現實研究,E-mail: nl-jackson@vip.163.com.

TP311.5

A

1671-6841(2017)03-0069-05

10.13705/j.issn.1671-6841.2016335

猜你喜歡
設置文本
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
初中群文閱讀的文本選擇及組織
甘肅教育(2020年8期)2020-06-11 06:10:02
在808DA上文本顯示的改善
7招教你手動設置參數
基于doc2vec和TF-IDF的相似文本識別
電子制作(2018年18期)2018-11-14 01:48:06
文本之中·文本之外·文本之上——童話故事《坐井觀天》的教學隱喻
論《柳毅傳》對前代文本的繼承與轉化
人間(2015年20期)2016-01-04 12:47:10
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
艦船人員編制的設置與控制
主站蜘蛛池模板: 精品一区二区三区四区五区| 午夜福利无码一区二区| 国产精品视频免费网站| 国产精品污污在线观看网站| 精品国产一区二区三区在线观看| 日本www在线视频| 一级做a爰片久久免费| 精品视频免费在线| 国产91蝌蚪窝| 久久久久国产精品熟女影院| 亚洲日韩每日更新| 亚洲国产在一区二区三区| 青青草国产免费国产| 成年人午夜免费视频| 亚洲中文字幕23页在线| 国产精品深爱在线| 国产综合网站| 深夜福利视频一区二区| 色综合日本| 国产欧美日韩免费| 女同国产精品一区二区| 欧美午夜一区| 久久综合五月婷婷| 国产精品原创不卡在线| 亚洲性视频网站| 成人一级黄色毛片| 亚洲天堂自拍| 亚洲一区色| 欧美a在线看| 久久精品视频亚洲| 国产熟女一级毛片| 國產尤物AV尤物在線觀看| 国产精品吹潮在线观看中文| 亚洲天堂视频在线免费观看| 99免费在线观看视频| 日韩中文无码av超清| 91精品人妻互换| 亚洲美女视频一区| 高清色本在线www| 伊人网址在线| 日韩经典精品无码一区二区| 精品免费在线视频| 国产区人妖精品人妖精品视频| 久久久久久尹人网香蕉| 亚洲人成网18禁| 久久婷婷五月综合97色| 蜜桃视频一区| 97影院午夜在线观看视频| 国产精品自在线拍国产电影| 国产精品无码AⅤ在线观看播放| 久久精品一品道久久精品 | 亚洲午夜国产片在线观看| 中文字幕人妻无码系列第三区| 3344在线观看无码| 国产精品美乳| 日韩国产综合精选| 免费视频在线2021入口| 2022国产无码在线| 亚洲国产精品无码AV| 欧美精品亚洲精品日韩专区va| 毛片最新网址| 免费亚洲成人| 国产女人在线| 久久99精品久久久久纯品| 国产精品观看视频免费完整版| 456亚洲人成高清在线| 亚洲成网777777国产精品| 国产婬乱a一级毛片多女| 亚洲欧美不卡视频| AV在线麻免费观看网站| 国产三级a| 日韩av手机在线| 高清国产在线| 婷婷综合在线观看丁香| 欧美日韩综合网| 国产精品亚欧美一区二区| 91久久国产综合精品| 成人看片欧美一区二区| 亚洲欧美另类专区| 极品国产在线| 中文字幕欧美日韩高清| 国产欧美视频在线观看|