Unigine 2.10新的地形系統發布

Unigine宣布發布了2.10版,該版本為實時引擎帶來了多項重要的新功能,其中包括壹個全新的地形系統,該系統的極限為10000 x 10000km,如果您不需要模擬地球的曲率,則不受限制。

其他新功能包括改進的C ++和C#API,高級汽車物理系統,改進的體積雲,更新的粒子系統,用於組裝獨立項目的新Build工具,用於資產優化的Texture Profiler工具等等。

有關內容,詳見下面的描述

關鍵變化

  • 新的地形系統:更詳細,更快,無損的協作編輯,雙筒望遠鏡支持,運行時修改API。
  • 改進的C ++和C#API:簡化的對象管理,改進的線程安全性和穩定性,更好的代碼可讀性。
  • UnigineEditor擴展:公共API,插件系統。
  • 高級汽車物理系統:輪式車輛仿真。
  • 改進的雲:更多類型,更好的視覺效果。
  • IG更新:自適應質量管理,更好的同步,更輕松的配置,API改進。
  • 用於組裝獨立項目構建的新構建工具。
  • 用於資源優化的Texture Profiler工具。


新地形系統

經過近2年的開發,我們已經可以生產新的Terrain系統(API中的ObjectLandscapeTerrain + LandscapeLayerMap類)!讓我們來看看有什麽特別之處。

專有核心技術

新的地形系統基於稀疏虛擬紋理(MegaTexture)方法,並進行了許多改進和引擎特定的調整,例如智能詳細信息緩存,優化的剔除技術等。該地形系統與Engine的高級流子系統緊密集成,使其具有VRAM效率,並且從頭開始就設計了多線程方法,從而使其能夠利用多核系統的優勢並有效處理高達PB的數據。

該技術可用於DirectX和OpenGL API,甚至可以在Windows 7上使用(盡管Windows 7已被Microsoft逐步淘汰,但仍在企業中廣泛使用)。盡管即使對於VRAM容量有限的計算機也可以配置地形渲染,但我們強烈建議使用內存至少為4 GB的GPU以獲得最佳性能。

規模大

對於新地形的實際限制為10000 x 10000 km。如果您的用例不需要可視化地球的曲率(地面操作或直升機模擬),則地形的大小實際上並不重要(這意味著實際上是無限的)。

遊戲引擎嘗試使用由單獨的地形對象表示的補丁來模仿大型景觀,這導致它們之間出現明顯的接縫,並使縮放變得非常成問題。 UNIGINE中沒有這樣的問題。

x2-10更快

新地形的渲染確實非常快,這使得它甚至適用於以毫秒為單位的VR應用程序。根據設置,在緩慢的攝像機移動時,ObjectLandscapeTerrain的速度是ObjectTerrainGlobal的5-10倍,而在快速移動攝像機(密集的數據流)時,其速度是2-3倍。

雙筒望遠鏡/瞄準鏡支持

新的地形無論尺寸大小,均可確保完美的縮放和無縫體驗,並支持雙筒望遠鏡/望遠鏡(最大x20 /最低1度FOV),確保平滑地放大和縮小,使其甚至適用於無人機模擬的攝像機,狹窄的視野。

極致的細節水平

地形的虛擬紋理的反照率,法線和高度分量的最大細節級別不取決於原始數據源的分辨率。它由虛擬紋理的紋理像素大小定義,每個像素最大可達1毫米,從而提供了前所未有的細節。地形已針對厘米範圍的分辨率數據(例如,每個像素10 cm)進行了優化,較粗的數據源(例如,每個像素30 m)可能需要進行壹些過程上的改進才能獲得最佳結果。

使用自適應硬件細分將地形的幾何體細分為多個細節級別,使您能夠動態生成高度詳細的幾何體。通過位移貼圖可以添加更多幾何細節,從而使您的景觀看起來更加自然。地理變形支持使兩個鑲嵌級別之間的過渡無縫,而不會突然出現或消失山丘或山脈。

 

ObjectLandscapeTerrain為您提供了前所未有的變體,以創建幾乎任何程度的多樣性的景觀。那怎麽可能?您有20個多用途蒙版,可用於定義石頭,沙子,泥漿等的區域,最多可使用1024個細節來添加顏色,大小,位移變化(例如,使石頭的大小,顏色和遮罩所定義區域的粗糙度)。不夠?此外,還可以使用地形的反照率顏色作為蒙版(給您加上2400萬個變化),並可以通過高度進行其他蒙版,以限制可以看到細節的蒙版內的高度範圍(例如,下雪時)山峰)。

動態流

考慮到遮擋,相機設置等因素的自適應提取算法,將地形數據異步流傳輸到虛擬紋理,可確保穩定的性能,僅以完整的細節級別渲染必要的數據,而與支持多臺相機的相機視場無關。靈活的流設置使您甚至可以為VRAM容量有限的計算機配置地形渲染。微調渲染和流設置,以匹配您的內存量,所需的攝像機數量和質量平衡,以實現所需的性能並滿足您的項目要求。

順便說壹下,我們還改善了所有紋理的流傳輸,減少了加載壹小部分數據時的延遲。

快速交叉測試

交叉測試快速(比ObjectTerrainGlobal快幾倍)且準確,並進行了許多優化,從而使您能夠通過忽略某些僅用於添加次要細節的圖層,而與基本圖層的高度圖相差很小,從而避免了過多的檢查。您還可以選擇在需要立即響應時以強制模式處理請求,或者選擇異步處理以平衡負載並保持穩定的性能。

基於非破壞性層的流程

地形數據(高度,反照率和遮罩)由圖層存儲,表示為單獨的對象-景觀圖層地圖,可以具有不同的密度,方向和幾乎不受限制的大小。它們可以安排在場景中,並且可以通過多種選項(加法,乘法等)提供的各種組合相互融合。因此,您可以混合使用不同密度的圖層以在任何位置創建高分辨率插圖,或者通過在基礎圖層的頂部添加新的“修改”圖層來對地形表面進行非破壞性修改(例如,創建車輪軌跡) 。您可以根據需要添加任意多個圖層。

初始風景帶拼合插圖的風景

使用“景觀圖層地圖”通過API進行運行時修改很容易-只需生成壹個新圖層即可在任何位置修改地形外觀。如果不再需要修改-只需禁用或刪除恢復先前狀態的圖層即可。

壹層兩層混合

團隊合作編輯

每個圖層的數據都獨立存儲在壹個單獨的文件中,這壹事實使Terrain系統對VCS友好並且適合於協作編輯。壹組3D藝術家可以同時設計單獨的圖層或圖層集(例如,其中壹位藝術家使用第三方軟件以程序方式生成地形數據,另壹位藝術家在其隊友雕刻山峰時在地形上創建平坦區域)。因此,他們可以壹起創建壹個大的景觀,同時叠代手動編輯和程序生成的數據,而不會發生任何沖突

支撐孔

可以使用基於貼花的技術從地形表面切出任意形狀的孔。您可以使用孔來替換任意網格物體的地形幾何形狀(例如,創建洞穴或隧道),以確保準確無縫的融合以及每個像素的細節。這些選項對於在挖掘機模擬中挖孔和挖溝特別有用。

多功能遮罩

有20個多功能遮罩,可用於向地形表面添加細節(例如石頭,沙子,泥土等),結合多達1024個細節和基於顏色的遮罩,可提供大量變化(往上看)。另壹個用例是定義草,樹和其他對象的區域,建立可在引擎的所有相關子系統中使用的統壹工作流,從而減少所需的掩碼數量並優化內存消耗,因為可以使用相同的掩碼有多種用途。

最重要的是,這些遮罩可用於創建土地覆蓋分類圖,定義各種物理參數(例如表面摩擦以模擬各種路面狀況),甚至用於傳感器數據分類(例如溫度,磁場以及傳感器的數據)其他非視覺渠道。

運行時修改API

上述所有內容均可通過API獲得。您希望自己的車輛在行駛時離開軌道,或者在壹系列爆炸後創建彈坑,想要讓挖掘機挖溝或推土機使地面平整-沒問題!通過API實時基於CPU或GPU進行地形修改的過程非常簡單,例如1、2、3:

  • 設置所需的區域,引擎將將該區域的部分地形數據復制到緩沖區。
  • 根據需要修改緩沖區(高度,顏色,蒙版或壹次全部修改)。
  • 完成後,引擎應將緩沖區粘貼回地形,以替換舊數據。

為自己的地形編輯器實現自定義畫筆的過程也不會花費很多時間,只需修改現有的畫筆材料或創建自己的畫筆即可,甚至可以使用自己的著色器代碼。新的Unigine語言對象符號(ULON)使您能夠做到這壹點。支持撤消/重做操作堆棧。

修改地形外觀的另壹種簡單方法是生成具有自己的高度,反照率和蒙版數據的自定義圖層,並將其添加到現有圖層之上。每個圖層都是壹個單獨的節點,因此您可以分別控制每個修改。對於這種方法,撤消也很簡單-禁用或刪除恢復先前狀態的修改層。

上面看到的流動站軌跡演示了地形表面的實時修改。有關配置和使用新地形系統的更多詳細信息,請參閱《景觀地形》壹文。

您可以從Art Samples套件(SDK瀏覽器-> Samples->演示-> Art Samples)中檢出新的Landscape樣本,以及說明運行時API修改並獲取任意點的地形數據的C ++ Samples:(SDK Browser- >樣本->演示-> C ++樣本->橫向)。

地形太多,請幫我選擇!

為了避免混淆,在2.10中有2種地形系統可用:

  • ObjectTerrainGlobal-適用於大規模的多插入地形,支持彎曲模式,可與地理坐標壹起使用,可以使用Landscape Tool從原始GIS數據生成,實際限制為10000×10000 km。
  • ObjectLandscapeTerrain + LandscapeLayerMap(新版本)-適用於非常詳細的地形,目前不支持地理坐標,可以由UnigineEditor從使用第三方軟件制作的圖塊直接創建,支持協作編輯,支持運行時修改,速度更快雙筒望遠鏡友好型交叉路口測試,實際極限不超過10000×10000 km。

此版本最終刪除了舊版ObjectTerrain(從2.7開始就被棄用)。 WorldOccluderTerrain也是如此。遷移後,它們中的每個都應轉換為NodeDummy。

在進壹步的版本中,新地形還將獲得對地理坐標的支持以及從GIS數據生成的功能,以及“景觀工具”集成(也將進行重大升級)。至於ObjectTerrainGlobal的未來,它還會存在壹段時間(只有在當前開發的ObjectPlanet完全可以投入生產時才會逐步淘汰)。

綜上所述,我們建議在地理參考場景中繼續使用ObjectTerrainGlobal進行大規模飛行模擬(尤其是固定機翼),而將ObjectLandscapeTerrain進行地面操作(尤其是需要使用望遠鏡/雙筒望遠鏡或必須修改運行時)或項目需要極端細節的地方(包括直升機模擬)。

改進的體積雲,更多類型

UNIGINE的體積雲系統是可擴展的,使您能夠創建各種類型的雲。但這需要調整多個設置以及創建自定義紋理。為了使藝術家的生活更輕松,我們為以下雲類型添加了許多新的隨時可用的預設:高積雲,積雲,平流積雲,層雲,雨雲層。

我們添加了將3D細節失真紋理用於雲渲染的選項,而不是以前使用的2D紋理,從而消除了在某些細節尺寸設置下可能發生的垂直雲拉伸。可以通過“設置”窗口的“渲染”->“雲”部分或通過render_clouds_distortion_texture控制臺命令來設置新模式。默認情況下,使用舊模式。

為了使雲調整更加靈活,我們增加了控制移動雲動態的功能,即隨著移動雲的形狀變化了多少。可通過clouds_base材質的“風變形”滑塊使用此選項。

粒子系統更新

重構粒子系統具有更多的確定性行為,從而大大改善了多通道渲染用例的圖像壹致性。因此,當粒子在壹個IG / PC上生成時,它可以無縫地傳播到另壹個屏幕(來自另壹個IG / PC的視圖),這對於多通道圖像生成器非常重要。

更多渲染改進

  • 現在應分別為浮點精度和雙精度生成生成著色器緩存,因為它們每個都使用自己的著色器緩存(即,為浮點精度生成的緩存不適合於雙精度生成)。如果發布的應用程序同時具有float和double版本,則必須兩次生成著色器緩存。
  • 修復了Windows 7的著色器編譯問題。
  • 改進的可視化工具,減少了線框閃爍,默認情況下啟用了新選項,可以通過visualizer_fix_flicker控制臺命令進行控制。
    統壹UNIGINE著色器語言(UUSL)進行了許多更改,有關更多信息,請參閱《 API遷移指南》。
  • 素材文件格式也進行了許多更改,有關更多信息,請參閱內容遷移指南。
  • 修復了在NVIDIA和Intel GPU上渲染Mesh Decals時出現的噪聲偽影。
  • 現在,Voxel探針的“使用太陽顏色”選項考慮了環境的“環境”和“反射”設置。
  • 刪除了在啟用SSRTGI和“彎曲法線”時有時出現的偽影。
  • 為分配了啟用了“抖動透明度”選項的grass_impostor_base材料的冒名頂替者,消除了照相機移動過程中陰影閃爍的偽影。褪色也得到了改善,變得更加平滑。
  • 修復了草的陰影級聯偽影
  • 修復了在使用具有單個陰影級聯(OpenGL)的世界光源的情況下,啟用了陰影蒙版的對象出現的陰影渲染偽影和控制臺錯誤。
  • 固定渲染節點參考內光源的鏡頭光暈。
  • 修復了OpenGL + Nvidia上的屏幕空間次表面散射問題。

改進的C ++和C#API

用戶或多或少經常抱怨我們的API(以及內存管理)有點復雜,需要付出壹些努力才能安全地使用它。在此版本中,我們對API進行了重大重構,以使其更簡單,更安全,因此您可以專註於應用程序邏輯。

對UNIGINE的智能指針進行了重大重構,以避免懸空的指針,意外的對象刪除(例如,超出範圍時)以及兩次刪除(如果壹個對象有多個所有者)而導致崩潰。加上清晰的生命周期管理,具有清晰語義(無歧義,更多的C ++風格)的便捷向下轉換和自動向上轉換,以及減少包裝接口的數量,從而減少了內存消耗,並由於原子引用計數器而提高了線程安全性。

作為壹個小例子,請看下面的代碼如何從2.8更改為2.10,線程安全性和穩定性方面的改進在這裏並不明顯,但是它確實看起來更加簡單明了。

其他更改的列表包括以下內容:

  • 引擎的單例,具有改進的線程安全性並簡化了對其功能的訪問。
  • 壹組新的類和函數,用於改善多線程應用程序中的同步。
  • 改進了對節點和小部件的層次結構管理,確保按預期方式自動刪除所有子級以及根級。
  • 使用枚舉和布爾值替換int值更強的鍵入。
  • 節點管理功能(即查找,添加,刪除節點等)。

代碼遷移將需要壹些人工,但是這非常簡單,可以查找和替換操作,也可以丟棄冗余代碼。不幸的是,這是我們必須為穩定(減少崩潰和內存泄漏),便利性,線程安全性,代碼可讀性以及將來的整體開發生產力而付出的代價。我們已竭盡全力在此版本中集中所有必需的主要API修改,以避免在UNIGINE 3之前進壹步破壞API更改。

有關API更改的更多詳細信息,請參閱《 API遷移指南》。

C#API

C ++ API的更改使改進C#API成為可能。因此,除了列出的改進以外,這是特定於C#的改進的列表:

  • 改進的C#內存管理,為每個對象實施了Dispose模式,從而為Engine(native)資源執行內存清理。
  • 帶有可調整的收集器行為的改進的C#垃圾收集。
  • C#組件系統具有安全性改進,並且在運行時可提供有關當前系統狀態的統計信息。
  • 擴展的C#API,現在具有所有插件以及許多方法,這些方法以前僅可用於C ++。

Unigine語言對象表示法

Unigine語言對象符號(ULON)成為UNIGINE中用於描述類似於面向對象編程中的類的復雜結構的通用格式的基礎。它使您能夠根據定義的邏輯條件動態構建層次結構,甚至嵌入源代碼(例如,著色器或腳本)。

目前,新格式用於描述“景觀地形”材質和畫筆。基礎畫筆材料可用於實現您自己的自定義地形畫筆。

將來,我們計劃將所有UNIGINE內置材料轉換為這種格式。

有關更多信息,請參閱Unigine語言對象符號文章。

文件系統與資源管理

  • 現在無需運行編輯器即可在運行時即時更新資源。當您更改任何資源並希望引擎使用更新的版本時,可以調用FileSystem :: changeVirtualFile()方法來通知引擎文件已被修改並且需要更新。這使您可以編寫自己的自定義文件觀察器,以確保自動更新必要的資源。
  • 已修復UnigineScript中與UGUID相關的功能的問題。
  • 現在可以忽略項目根數據文件夾的過濾器(即應忽略的文件夾列表)。在創建項目時,將在數據文件夾中創建root_mount.umount文件。有關更多信息,請參閱文件系統文章。
  • 改進了所有紋理的流傳輸,減少了加載壹小部分數據的延遲。
  • 現在可以生成紋理緩存,並將其保存到數據文件夾之外的位置,該位置由-cache_path啟動命令行選項定義。
  • 修復了為某些類型的紋理生成緩存的問題。
  • 提高了文件系統,材質,紋理和控制臺的初始化速度。

高級車輛物理系統(實驗性)

現在,使用UNIGINE創建逼真的輪式車輛仿真變得更加簡單。引入了壹個新的高級系統,該系統由壹組C ++組件實現,從而最大程度地減少了制造幾乎任何輪式車輛(無論是4WD SUV,探險漫遊車還是復雜的多軸運輸車)所需的工作。

提供以下功能:

  • 設置發動機的功率和阻力曲線,以及怠速(RPM)。
    變速箱仿真(手動和自動)使您能夠調整換檔的油門和速度值以及過渡時間,以及設置檔數和配置傳動比。
  • 數學車輪模型可實現更逼真的轉向,從而能夠模擬影響旋轉車輪的力,並能夠調節懸架行程,彈簧和阻尼值。
  • 輕松設置轉向軸和驅動軸,並能夠打開和關閉差速鎖。
  • 在不同的視圖(駕駛員視圖,外部攝像機等)之間切換。
  • 模擬各種表面狀況(例如幹燥,潮濕,積雪或結冰的道路,泥濘等)。
  • 壹組調試窗口實時顯示所有車輛參數的信息。

考慮了許多參數的物理模擬可確保栩栩如生的車輛動力學。因此,在駕駛虛擬車輛時,請記住,如果過快地踩下離合器,發動機將失速!

該SDK包中的C ++樣本包中的車輛樣本中提供了C ++組件集(SDK瀏覽器->樣本->演示-> C ++樣本->車輛樣本)。

有關使用新的高級系統創建自己的輪式車輛的更多信息,請參考本文。

GUI改進

  • 為以下小部件的各種元素(邊框,背景,選擇,按鈕等)添加了顏色倍增器:GroupBox,ScrollBox,Button,CheckBox,ComboBox,MenuBar,ListBox,Scroll,EditLine,EditText,TabBox,TreeBox,Slider,tSpinBox ,窗口。
  • 修復了ObjectGUI的模具緩沖區,將所有UI元素限制為界面窗口和對象的區域。
  • 修復了WPF應用程序中與剪貼板相關的操作。

Teslasuit支持

我們將繼續與領先的硬件解決方案添加更多集成,從而在虛擬環境中實現新的沈浸式體驗。現在該是觸覺了。

UNIGINE現在支持Teslasuit,這是壹種帶有運動捕捉和氣候控制功能的全身觸覺套裝,使用戶可以感受到虛擬現實中的感覺,傳遞身體運動並提供冷熱感覺。新的TeslaSuit插件提供了與西服的集成,並允許控制Teslasuit服務傳遞以下數據:

  • 用戶動作
  • 觸覺反饋
  • 生物特征

使用該套裝,用戶可以感覺到壓力,熱量,寒冷,而應用程序可以從用戶那裏讀取運動和脈搏率數據。這樣可以在企業人員培訓中大量應用。

可通過C ++和C#API獲得插件的功能。有關更多信息,請參見TeslaSuit插件文章。

碰撞檢測優化(重要)

為了優化性能並避免不必要的計算,默認情況下,ObjectMesh *對象所有表面的碰撞標誌都應取消設置。

因此,您必須為需要它的所有曲面手動設置Collision標誌。如果通過代碼創建對象,請不要忘記在必要時通過setCollision()方法設置標誌。我們還強烈建議您使用物理形狀來檢測動態對象的碰撞,因為它們的工作速度要快得多!

GPU調試信息

為引擎的“調試和開發”版本添加了GPU調試信息,這在使用第三方圖形調試器(例如RenderDoc或NVIDIA Nsight)時可能會有所幫助。新功能與Microprofile工具集成在壹起,使您可以將OpenGL或DirectX命令組合到GPU調試組中,並在定義分析範圍時自動創建它們。現在,從外部文件(例如紋理,著色器,靜態或蒙皮網格物體)加載的所有圖形資源以及Engine的內部資源都具有自己的調試名稱,以簡化識別。

其他引擎改進

  • 添加了對EXR文件的支持(當前僅Windows)。這樣的圖像可以具有任意數量的通道,每個通道每個像素每個像素真正的32位浮點數,以存儲其他數據。有許多EXR格式的HDR紋理可用,因此不再需要手動轉換。
  • 添加了對RGBA32F Tiff圖像的支持。
  • 解決了在啟用放置在節點層次結構中的世界圖層時性能下降的問題。
  • 修復了MeshClutter元素的碰撞檢測。
  • 修復了將其他材質應用於其克隆時更改原始廣告牌大小的問題。
  • 修復了在為具有非零數組大小的屬性中的結構數組用size()函數時崩潰的問題。
  • 修復了錯誤捕獲具有樞軸偏移的冒名頂替者的問題。
  • 現在,可以正確應用投影反射來縮放環境探測器。
  • 改進的可視化器,減少了細線的閃爍。
  • 修復了在WaterGlobal對象的體積內創建FieldHeight時,控制臺中出現的圖像解壓縮錯誤。
  • World :: getNodeByName()方法現在可以過濾出孤立的節點層次結構和緩存節點,因此它不會從其緩存中的前任節點或返回節點中返回具有擁有者的節點(NodeReference / Clutter / Cluster)。
  • 修復了將Grass對象附加/分離到父級Geodetic Pivot時崩潰的問題。
  • 對於錯誤使用手動屬性的情況,改進了錯誤報告。
  • 如果節點層包含破碎的“水網格”對象(缺少網格),則不再從世界上刪除。現在,它們通常會按其所有層次結構進行加載,只刪除了破碎的“水網格”。
  • 修復了圖塊文件問題,該問題導致在缺少高細節LOD數據的區域中,帶有插圖的TerrainGlobal對象的高度圖的不正確編輯和損壞。
  • 使用Impostors Creator改進了MeshClutter對象與為其生成的冒名頂替者的對齊方式,有時會導致某些混亂元素缺少冒名頂替者。
  • 修復了與動態環境探測器使用的大型紋理的內存分配有關的崩潰。
  • 修復了將新的未命名曲面添加到對象(或將網格劃分到網格群集)導致為它們取消設置“啟用”標誌的問題。
  • 修復了替換為ObjectMeshSkinned的網格時崩潰的問題,該網格將子WorldWorldformformBone節點分配給了特定的骨骼,而網格中的骨骼數量較少。
  • 當“ upU向量與方向向量共線,導致著色器緩存生成崩潰時”的情況,Node :: setDirection()方法的固定行為。
  • 修復了MeshDynamic :: addTriangleFan()中的整數溢出。
    修復了“水網格”對象中與網格相關的錯誤操作。
  • 修復了插件的執行順序,從而消除了在某些情況下發生的雙重初始化問題。
  • AppEasyBlend插件現在支持可擴展SDK 2.96。
  • 固定生成XML警告。如果控制臺中有許多錯誤,請註意,大多數錯誤可能會表明先前的內容遷移期間發生的錯誤。如果出現此類錯誤,應手動修復。
  • 現在默認情況下在C ++組件系統中禁用了Microprofile。
    僅在調用所有初始化方法之後,才調用C ++組件的shutdown()方法。
  • 即使引擎已安裝在系統(system32)中,引擎也會始終從bin目錄中加載正確的openal.dll庫。
  • 用於多普勒頻移計算的固定速度校正因子。
  • 現在,所有打開的套接字在刪除之前都會自動關閉,從而消除了關閉時相關的引擎崩潰。

UnigineEditor

在以前的版本中,我們付出了很多努力來使UnigineEditor成為完整的獨立應用程序,豐富其功能並提高其穩定性和性能。這次,我們專註於為您提供擴展功能。

插件和公共API(實驗性)

此功能是實驗性功能,不建議用於生產環境,因為在將來的版本中API可能會發生重大變化。但是,您的反饋對於推動該功能的進壹步開發非常有價值。

引入了期待已久的UnigineEditor插件系統和公共API,使用戶能夠創建自己的插件來定制編輯器以滿足其項目特定的需求,例如,添加新菜單,窗口,工具欄命令,子模式,定義屬性的方式顯示等

插件是代碼和數據的集合,開發人員可以根據項目在UnigineEditor中輕松啟用或禁用這些代碼和數據。每個插件都被編譯到壹個單獨提供的動態庫中,UnigineEditor會在運行時檢測並加載它。插件可以具有各種版本,並且可以依賴於其他插件,因此插件系統實現了依賴項解析機制。

您可以通過幫助->插件在UnigineEditor中查看所有當前加載的插件的列表。

如果在加載插件時發生錯誤,則應在描述窗口中顯示壹條詳細消息。

UnigineEditor是壹個完全用C ++編寫的應用程序,它非常依賴Qt5框架基礎結構。因此,為了擴展其功能,不僅需要C ++編程技能,而且您還應該熟悉Qt5框架和CMake構建系統。

有關擴展編輯器功能的更多信息,請參考以下文章:

  • 擴展編輯器功能。
  • 創建您的第壹個編輯器插件。
  • 編輯器API參考。

項目建設

我們添加了壹個新工具來處理項目的最終構建程序集。因此,您現在可以通過File-> Create Build在UnigineEditor中為您的項目創建最終版本。

請註意,類似的功能(Assemble Project)已從SDK瀏覽器中刪除。

還有壹個用於構建的新項目啟動器(您可以根據需要修改UI):

新的構建系統具有以下優點:

  • 直接在編輯器中構建項目,可以在壹處微調所有設置。
  • 最大程度簡化了基於C#組件系統的項目構建過程。
  • 基於GUI的啟動器現在可與橫幅圖像和默認設置壹起使用。
  • 可以在視覺上對其進行定制以滿足您的需求。
  • 可以設置要在啟動時加載的默認世界。
  • 默認情況下,來自安裝點和數據文件夾的文件將復制到輸出文件夾。可以手動指定要復制的其他必要數據的列表。

有關更多信息,請參閱“構建項目”文章。

紋理輪廓儀

紋理是最常用的資產,並且可能是最消耗內存的資產。適當的優化可以確保更快的流傳輸,減少視頻內存消耗以及加載時產生的峰值。

引入新的Texture Profiler,為您提供有關項目中所有紋理的詳細信息,以清楚地了解可以優化或刪除其中的哪個紋理。您可以按大小或分辨率對紋理進行排序,以快速找到對內存消耗有重大影響的紋理,並花費大量時間進行加載。您也可以專註於僅檢查當前顯示在視口中的紋理!

如果項目中使用了大量紋理,強烈建議您使用此工具來確保所有紋理均已正確配置和使用。此工具可節省美術人員大量時間和精力進行優化,有關更多信息,請參閱Texture Profiler文章。

資產依賴跟蹤

有時很難找到確切使用某項資產的位置。想象壹下,在資源瀏覽器中,您發現壹個具有奇怪位置的紋理。您想知道使用哪種材料才能將紋理移動到項目中更合適的位置。或者,也許根本不使用此紋理,因此您可以刪除它並節省壹些磁盤空間。因此,我們為您提供了壹個新工具,因此您可以檢查任何資產,無論它是材質,紋理,FBX,網格,屬性還是其他任何東西。

您可以通過在資產瀏覽器的快捷菜單中選擇“使用此資產顯示資產”或“使用資產顯示”來檢查資產是用作更復雜資產的壹部分還是由壹組資產本身組成。

其他編輯器改進

  • UnigineEditor不再自動監視通過絕對路徑引用的數據文件夾外部資源的修改,因此建議使用安裝點。
  • 在選擇分配了許多復雜結構屬性的節點時,改進了“參數”窗口的UI生成,從而提高了4倍,並最大程度地減少了顯示參數時出現的滯後。
  • 更改了相對於GeodeticPivot彎曲節點的方式:單擊“使曲線彎曲”可創建初始節點的彎曲克隆,而只是禁用了後者(使用非彎曲網格),因此在需要返回到上壹個節點時可以使用它(未彎曲)狀態,不需要時取下“平整”按鈕。
  • 改進了生成的Vector和Point對象與Global Terrain曲面的對齊方式。現在,對齊不準確的唯壹原因是使用低分辨率的高度圖。
  • 源節點參數(最小/最大淡入淡出和可見距離)現在已正確傳輸到生成的Cluster對象,從而確保了適當的LOD管理。
  • 修復了在資產瀏覽器中刪除C#組件時刪除關聯的屬性文件的問題。
  • 修復了用於更改分配給節點的屬性的撤消操作。
  • 修復了分配通過“選擇資產”窗口的“創建”菜單創建的屬性時發生崩潰的問題。
  • 通過從資產瀏覽器中拖動屬性資產,將屬性資產固定分配給屬性字段。
  • 修復了顯示用於基於C#組件啟動項目的Play預設的其他命令行參數的問題。
  • 現在可以正確保存“場高”的混合模式更改。
  • 修復了更改單個Worldluster對象的Generator設置會影響場景中其他Worldluster對象時的問題。
  • 修復了當其中壹個軸的尺寸接近0時,“編輯尺寸”操縱器不可用的問題。當攝像機位於體素探針的體積內時,該操縱器現在也可以正常工作。
  • 修復了比例尺操縱器控制框顯示不正確的問題。
  • 現在,在調整大小並重新打開它們之後,可以正確重置工具窗口的大小(“設置”,“世界層次”,“材料層次”等)。
  • 修復了其他場景視口中第壹個關閉或隱藏時控件無響應的問題。
  • 在“設置”窗口中將各種類型的預設重命名為模糊的“保存”按鈕,以明確指示相應的類型。
  • 修復了導入啟用了“按材質合並曲面”選項的模型後,第二個UV通道信息丟失的問題。
  • 改進了對具有16K +分辨率的紋理資產的處理,現在可以按原樣正確導入它們,而無需轉換為DDS(DDS不支持16K +分辨率)。
  • 修復了重新導入時RGB8,RGBA8,RG16,RGB16和RGBA16圖像的G通道反轉的問題。
  • 重新加載世界後,作為子級添加到大地測量軸的MeshStatic對象的位置正確。
  • 修復了在編輯器外部熱重新加載對* .prop文件所做的修改的問題。
  • 修復了烘烤網狀雜物的Impostors崩潰的問題。
  • 修復了通過在資源瀏覽器中雙擊自動打開景觀文件的問題。
  • 在“資產瀏覽器”中顯示資產命令將自動將焦點設置到資產瀏覽器。
  • 修復了包含NodeDummy節點的層次結構的中心樞軸點計算。
  • 現在將高度圖歸壹化保存到景觀資產。
  • Video Grabber現在考慮了存儲在* .track文件node.enabled值。
  • 修復了“跟蹤器”工具中按鈕的行為。
  • 刪除了重新生成的靜態光源陰影的問題,其中在節點引用中存儲了禁用的陰影。
  • 修復了嘗試將通過同壹靜態網格物體在安裝點內部創建的多個節點引用之壹放置時崩潰的問題。
  • 修復了為環境探針啟用“編輯大小”操縱器以創建新世界時發生的崩潰。
  • 修復了當世界包含NodeReference時在Tracker工具中添加新的節點參數的問題。

IG更新

IG(圖像生成器)應用程序模板是我們用於專業分布式仿真系統的即插即用組件,具有大量更新。

自適應質量管理

仿真通常使用大量由復雜的層次結構表示的各種實體進行操作。要保持較高的性能,需要進行適當的優化,因為轉換和渲染幾乎不可見的實體的整個層次結構會浪費大量計算資源。新的Simplifier組件可以幫助優化實體的呈現。通過將此組件分配給實體,您可以定義從某個距離級別開始可以忽略其模型的哪些部分(例如,1 km處的皮瓣,副翼和方向舵,5 km處的引擎等)以及哪些替代項可以用於表示遠距離的實體(例如,當平面只是屏幕上的壹個點時,頻閃燈閃爍)。

除了簡化模型之外,還引入了實驗性自適應質量系統,該系統根據當前性能自動提供詳細級別的實時調整(當前僅可使用降級模式)。該系統與上述實體模型簡化機制壹起工作,並隨著性能降低而自動刪除細節。

統壹IG配置

大部分IG配置設置存儲在ig_config.xml文件中,而其中壹些則分散在屬性文件中。我們將所有這些文件集中在壹起(ig_config.xml文件),並添加了壹個新的IGConfig類,以使您可以通過API管理IG配置。

集成同步

IG與Syncker交互的原理已經改變。 IG現在擁有自己的同步系統,並且Syncker插件會自動初始化-無需IP地址或端口號!只需使用以下命令行選項:

  • 主機(ig_count-IG主機總數,包括主機):-ig_master 1 -ig_count 2
  • 從站:-ig_master 0

默認情況下,IG使用UDP端口25000,但是您可以在需要時(例如,如果此端口被另壹個系統阻止或使用)更改它,方法是指定ig_port鍵。如果需要,您還可以使用ig_address鍵為從站設置特定主站的ip地址。當不需要Syncker時,只需跳過-ig_master鍵,或指定-ig_master -1。

完整的更新集包括以下內容:

  • 現在可以使用IGManager類發送用戶消息:
    無效sendUserMessage(const Unigine :: BlobPtr&send_message)
    setOnUserMessageReceivedCallback(Unigine :: CallbackBase *回調);
  • 現在,您可以通過getEntities(Unigine :: Vector <IEntity *>&Entitys_ret)方法獲取所有現有實體的列表。
  • 為DISConnector添加了新的on_connect和on_disconnect回調(請參見setConnectionThreadCallbacks()方法)。在建立用於訪問和修改的連接(KDIS :: NETWORK :: Connection)時會觸發這些回調。
  • 可以通過API更改用於發送UDP消息的廣播地址和端口,而無需重新啟動Syncker,只需使用Master :: setBroadcast(const char * address,int port)方法設置新參數即可。
  • 修復了加載Syncker插件時,與其余附加的小部件相關聯的應用程序關閉過程中發生的崩潰。
  • 修復了Syncker在重新加載和關閉世界時崩潰的問題。
  • 改進日誌記錄,提供更多信息。
  • 現在,可通過WeatherControl數據包的Coverage參數控制CIGI中的降水強度。
  • 現在可以通過ID而不是索引來引用天氣區域。
  • 修復了許多與風向有關的問題。

樣品和演示

煉油廠演示現在還在煉油廠區域中使用了具有高分辨率插圖的新型“景觀地形”,這也演示了地形表面的平坦化。景觀地形蒙版用於定義草皮甚至瀝青的區域,現在已將其實現為高質量的地形細節。

石油平臺和士兵演示也移植到了新的景觀地形。

Samples演示包已重命名為Art Samples,並添加並更新了以下內容:

  • 壹組景觀樣本展示了新的景觀地形的功能:

-使用景觀圖層貼圖和混合模式的高分辨率地形插圖。

-使用景觀地形細節的蒙版:使用各種對比度值按高度圖進行融合,以在細節,附加蒙版和三面貼圖之間進行過渡

-使用基於貼花的孔創建壹條貫穿景觀的隧道。

  • 在以下示例中,Object Terrain Global被新的Landscape Terrain代替:Shoreline,Clutter Terrain,Grass Terrain,Impostors和Forest。

C ++示例

為了通過C ++ API展示引擎功能在各種用例中的使用,我們向SDK添加了壹個新的演示(SDK瀏覽器->示例->演示-> C ++示例)。我們計劃在每個發行版中使用適合您的新簡單示例來更新此演示包。同時,2.10帶給您以下內容:

車輛樣本展示了新的高級汽車物理系統。
壹組“地形地形”樣本演示了如何通過API進行運行時修改以及獲取特定點的地形信息(高度,反照率,遮罩)。

SDK瀏覽器

現在,SDK瀏覽器將為所有新用戶首次登錄時自動下載最新的可用SDK版本。請註意,只有安裝了至少壹個SDK後,“我的項目”選項卡才可用。因此,如果選項卡處於非活動狀態並且您無法創建項目,請切換到“ SDK”選項卡,並確保已安裝的SDK列表不為空。

文獻資料

始終專註於客戶的需求,我們希望我們的文檔有用。因此,除了壹系列提高生活質量的功能外,我們還增加了壹個新的反饋渠道-現在您可以為文章評分,向我們發送錯誤報告以及您對任何頁面中不正確或缺失信息的要求。

  • 更新了IG文檔。
  • 添加了新的擴展編輯器功能部分。
  • 添加了新的Editor API Reference部分。 IDE中也提供了相關的就地文檔。
  • 在新的“地形地形”上添加了壹組文章。
  • 添加了有關Unigine語言對象表示法的新文章。
  • 《 API遷移指南》中提供了API更改的完整列表。
  • 《控制臺遷移指南》中提供了控制臺命令更改的完整列表。

粒子系統改進方面的進展(預覽,不在2.10中)

底紋(WIP)

我們目前正在努力改善粒子的陰影效果:更逼真的半透明效果,能夠設置半透明半徑以模仿不同的煙霧密度,由粒子投射的半透明陰影以及法線貼圖,以提供更多的體積並添加細節。它們壹起使粒子照明更加生動,並與場景壹致,使您能夠創建令人信服的立體效果。

模擬(WIP)

設置在粒子生命周期內保持恒定的粒子系統參數值是沒有意思的。對於許多這些參數,您將能夠使用“曲線編輯器”來定義它們應如何隨時間變化。這將使您在設置每個粒子生命周期的行為時具有很大的靈活性。

還有許多其他很酷的功能幾乎準備在2020年初發布,敬請期待!

註意:UNIGINE 2.10 SDK需要SDK瀏覽器1.9.20或更高版本。

來源:unigine

PHP Code Snippets Powered By : XYZScripts.com