發表文章

Logitech G29 control mapping in UE4 (using Raw Input Plugin)

Logitech G29 control mapping in UE4 (using Raw Input Plugin) https://docs.unrealengine.com/zh-CN/Gameplay/Input/RawInput/index.html Logitech G29 Vendor ID : 0x046D Product ID : 0xC24F Logitech Wheel (方向盤) :   axis properties index = 1   offset = -0.5   scale = 3.0 Logitech Brake Pedal (煞車) :   axis properties index = 3   inverted = true   offset = 1.0   scale = -2.0 Logitech Accelerator Pedal (油門) :   axis properties index = 4   inverted = true   offset = 1.0 Logitech POV (十字鍵) :   axis properties index = 0   scale = 0.875

Windows10 版本1607後可啟用支援長路徑檔名 (Maximum Path Length Limitation)

在Windows中一般情況下最大路徑長度被限制在260個字元,Windows 10 版本1607後開始可以啟用支援長路徑。 啟用長路徑: Win + S鍵,輸入regedit,執行登錄編輯程式 找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled 並設定為1 為了使系統順利套用此設定建議重新啟動電腦,因為某些程序可能在設置之前已經啟動 // 在UE4開發中,偶爾會發生路徑過長導致打包失敗的情況,若系統版本支援,可嘗試使用此方法來改善 細節詳見 Microsoft Windows Dev Center - Naming Files, Paths, and Namespaces

UE4破碎功能初探 (Apex Destruction)

圖片
導讀: UE4官方文件參數說明- 可破壞物屬性矩陣 APEX Destruction in UE3 Destructibles官方範例在4.18後版本遭拔除,若想看UE4官方應用範例需下載4.17版本之前的ContentExamples專案,位於/Content/Maps/Destructible.umap 在4.18版本後Destructibles功能被分離至 Apex Destruction Plugin,需至Plugins裡啟用重啟編輯器後才能使用 ------------------------ 以下整理一下常見問題解決 欲製作破碎效果之網格事前準備 若網格有太長的三角面、多邊形面、單邊平面、非閉合幾何圖形,則製作破碎時容易有異常結果 想製作局部破壞效果須以下設定 Support depth = 1 // 支援深度至層級1 Enable impact damage = true, Impact damage = 1.0 // 受投擲物物理碰撞計算給予傷害 World support = true // 破碎物件將固定在靜態網格上 碎片刪除機制 Enable debris = true, Debris depth =1 //啟用殘骸功能至層級1 Debris timeout = true, Debris lifetime min & max // 設定殘骸生命週期 Debris max separation = true, Debris max separation min & max // 依離本體距離判定刪除 Use valid bounds = true, Valid bounds min & max // 依邊界設定判定刪除 碎片內部材質設定 Interior element index // 預設使用網格第一顆材質球 // UE4.21有Bug,欲使用破片內部材質原Mesh需有兩顆材質球才能正常使用 Chunk parameters無法設定 若視角太遠則無法正確選取該碎片 碎片粒子效果應用 (Fracture effects) index 0用於depth 0, index 1用於depth 1 依此類推 其他應用參考: Destructible Troubleshootin...

UE4 大圖輸出 (HighResScreenshot)

導讀 如果你對「像素」、「印刷尺寸」、「DPI」之間的關係還不夠熟悉可先參考以下連結 數位影像、像素、影像大小、解析度、列印尺寸 照片印刷不失真,你真的會 DPI 換算嗎? 在UE4中欲擷圖供大圖輸出 在UE4中可透過High Resolution Screenshot功能來取得大像素圖檔,但在實際使用上有一些限制與瓶頸,本篇文章將詳細介紹細節與測試案例分享 一、計算目標像素大小 假設設定目標印刷尺寸為 140 x 220 cm,350 DPI,則得出欲取得像素尺寸為 19291 x 30315 px 計算像素大小 方法一,透過影像處理軟體的影像尺寸來做換算 方法二, 線上轉算工具 二、高解析擷圖 (解析限制與操作瓶頸) UE4編輯器內建高解析擷圖工具倍率最高限制為10倍 擷圖期間若電腦記憶體不足,則會程序崩潰 擷圖像素尺寸過大會直接顯示系統不支援 // 編輯器內建擷圖工具,基準1倍是指當前viewport大小 // 編輯器擷圖工具最高倍率限制應可修改引擎原始碼來突破限制 // 此處系統不支援應是指顯卡渲染架構限制 UE4 AnserHub: HighResShot multiplier too large 「the screenshot is being rendered to a texture, not just a memory buffer, so it will be limited by the maximum size of a texture in the graphics pipeline.」 「In Direct3D 11, it looks like it's set (by DirectX) at the max size of 16384」 三、測試與案例分享 若記憶體為16GB,則最大操作上限約為 viewport size: Full HD x 8倍 記憶體使用48GB,可支援 viewport size: Full HD x 10倍 取得像素約 6000 x 12000 px 記憶體使用48GB,使用4K螢幕,倍率設定4.8倍 取得像素約 10000 x 16000 px 擴展 viewport大小 方法一,UE4 editor -> edi...

AR技術應用 簡易分類

1) 基本型 主要架構為攝影機畫面融合虛擬畫面,細分為攝影機畫面(背景)+虛擬畫面(前景)、攝影機畫面(前景)+虛擬畫面(背景)兩種,此類型限制為固定攝影機視角 關鍵字:AR、圖片去背、影片去背、綠幕合成 https://www.youtube.com/watch?v=KUjSZBbGUlo 2)進階型 - 虛擬畫面可被實景所遮蔽 可透過事先定義之遮罩來實現 關鍵字:AR、遮蔽 https://www.youtube.com/watch?v=3KoxtAmvaoQ 3)進階型 - 攝影機可自由控制 須外加輔助標記物或空間定位裝置,細分兩種虛擬物件添加實體標記、在攝影機上加裝空間定位追蹤 關鍵字:AR、追蹤(track) https://www.youtube.com/watch?v=Gp2L_j1TTII https://www.youtube.com/watch?v=8v78vSaQH8U 4)商務型 - 實景光照能反映至虛擬物件 製作難度略高,需相關專業設備(投影牆、光照資訊擷取設備),軟體同步也較複雜(視角與即時光照變化) 關鍵字:AR、即時合成 https://www.unrealengine.com/zh-CN/spotlights/unreal-powers-on-the-fly-compositing-with-handheld-camera

UE4使用TcpSocket發生畫面凍結問題 (socket block)

情況說明: 在UE4中透過winsock來與客戶傳輸資料,保持連線且雙向傳輸(雙方都有傳送與接收),對方在長時間閒置下會停止傳送與接收,我這邊仍持續傳送與接收,最終引發socket block,又因在這個案例中我僅socket->recv()有做thread,send()則無,所以最後ue4 main thread被send()卡住,造成UE4畫面凍結。 解法: socket->SetNonBlocking(); // 將此socket設定為非阻塞模式,預設為阻塞模式 ue4 socket實現參考 socket block ------------------------------------- 延伸閱讀 Online Subsystem模組為UE4提供一些用於跟Steam, Xbox Live, Facebook...等外部網路服務連接的接口。而winsock也被封裝在內 FSocket* socket = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM) ->CreateSocket(NAME_Stream, TEXT("default"), false); // 這裡的 "PLATFORM_SOCKETSUBSYSTEM" 會判定你使用的作業系統 // 這邊的 "NAME_Stream" 則決定選用哪種的socket type 這邊使用 "NAME_Stream" 最終追蹤到 c:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h,內容實現則在WINSOCK.DLL裡 // windows裡還有分 winsock.h 跟 WinSock2.h 就不在這討論 Online Subsystem UE4网络底层概览 Facebook Online Subsystem WinSock TCP keepalive的机理及使用

Install SteamVR without Steam

Make a standalone version of SteamVR * copy and zip folder C:\Program Files (x86)\Steam\steamapps\common\SteamVR Use a standalone version of SteamVR * check all cable connected on PC and driver installed * upzip SteamVR.zip * execute ...\SteamVR\bin\win64\vrstartup.exe or vrmonitor.exe