《UE5_C++多人TPS完整教程》學習筆記43 ——《P44 奔跑混合空間(Running Blending Space)》


本文為B站系列教學視頻 《UE5_C++多人TPS完整教程》 —— 《P44 奔跑混合空間(Running Blending Space)》 的學習筆記,該系列教學視頻為計算機工程師、程序員、游戲開發者、作家(Engineer, Programmer, Game Developer, Author) Stephen Ulibarri 發布在 Udemy 上的課程 《Unreal Engine 5 C++ Multiplayer Shooter》 的中文字幕翻譯版,UP主(也是譯者)為 游戲引擎能吃么。
在這里插入圖片描述


文章目錄

  • P44 奔跑混合空間(Running Blending Space)
  • 44.1 創建奔跑混合空間藍圖類
  • 44.2 制作 “Leaning” 動畫
  • 44.3 Summary


P44 奔跑混合空間(Running Blending Space)

本節課我們將創建一個奔跑混合空間,這樣我們的人物角色就會不會在進行移動時只是四處“滑動”(Slide Around)。
在這里插入圖片描述


44.1 創建奔跑混合空間藍圖類

  1. 在虛幻引擎內容瀏覽器中打開 “/Game/Contents/Assets/Animation” 目錄,搜索 “Jog”,可以看到我們已經有了向前、向后、向左、向右四個方向慢跑的動畫資產,我們可以將其用于制作奔跑混合空間。
    在這里插入圖片描述

  2. 在 “/Game/Contents/Blueprints/Character/Animation” 目錄下以 “SK_EpicCharacter_Skeleton” 為骨骼創建混合空間藍圖類,命名為 “EquippedRun
    在這里插入圖片描述

  3. 打開 “EquippedRun” 混合空間編輯器,在左側 “資產詳情”(Asset Details)面板的 “Axis Settings” 選項卡下展開 “水平坐標”(Horizontal Axis)和 “垂直坐標”(Vertical Axis)選項。在 “水平坐標”(Horizontal Axis)中設置 “名稱”(Name)為 “YawOffset”,并設置 “最小軸值”(Minimum Axis Value)為 -180,“最大軸值”(Maximum Axis Value)為 180;同理在 “垂直坐標”(Vertical Axis)中設置 “名稱”(Name)為 “Leaning”,并設置 “最小軸值”(Minimum Axis Value)為 -180,“最大軸值”(Maximum Axis Value)為 180。它們將作為奔跑混合空間的度量(Measures)。
    在這里插入圖片描述

  4. 在中間視口面板下的坐標圖中添加動畫資產,坐標中心原點是我們向前奔跑的時刻,因此在右側“資產瀏覽器”(Asset Browser)中拖拽向前慢跑的動畫資產 “Jog_Fwd_Rifle” 的同時按下鍵盤 Shift 鍵,將其放置在坐標 (0.0, 0.0) 處生成采樣點。
    請添加圖片描述

    注意
    如果沒有在拖拽動畫資產的同時按下 Shift 鍵進行放置,生成的采樣點無法精確的落在坐標中心遠點上,可能會不符合我們的需求,可以點擊采樣點后在坐標圖上方設置坐標軸值 “YawOffset” 和 “Leaning”。
    在這里插入圖片描述在這里插入圖片描述

  5. 分別將向左慢跑的動畫資產 “Jog_Lft_Rifle” 和向右慢跑 “Jog_Rt_Rifle” 放置在 (-90.0, 0.0)(90.0, 0.0) 處,然后將向后慢跑的動畫資產 “Jog_Bwd_Rifle” 放置在 (-180.0, 0.0)(180.0, 0.0) 處。
    在這里插入圖片描述

  6. 這里的水平坐標軸 “YawOffset” 映射到人物角色奔跑方向的朝向,當我們按下 Ctrl 鍵并長按鼠標左鍵在水平坐標軸上進行拖動時,可以展示人物角色了向前、向后、向左、向右四個方向慢跑的動畫資產。

44.2 制作 “Leaning” 動畫

  1. 由于垂直坐標軸 “Leaning” 上并未添加任何動畫資產,我們需要制作與之有關的動畫,使得人物角色在奔跑時可以傾斜身體。在內容瀏覽器中拷貝(Duplicated)向前慢跑的動畫資產 “Jog_Fwd_Rifle”,可以看到內容瀏覽器中生成了新的動畫資產 “Jog_Fwd_Rifle1”。
    在這里插入圖片描述

  2. 雙擊打開 “Jog_Fwd_Rifle1” 動畫資產編輯器,在左側骨骼樹(Skeleton Tree)中選中骨骼根節點 “Root”,在視口中通過按下 W、S、A、D 鍵并配合鼠標拖動將攝像機視角移動到人物角色后方,在視口右上方點擊 “選擇并旋轉對象”,將骨骼根節點 “Root” 向右旋轉 20°,可以看到人物角色在向前慢跑時身體是向右傾斜的。
    在這里插入圖片描述

  3. 在工具欄中點擊 “+關鍵幀”(+Key),為動畫添加關鍵幀,點擊后可以看到下方時間軸中出現了名為 “root” 的 “Additive圖層軌道”(Additive Layer Tracks)。
    在這里插入圖片描述

  4. 在工具欄中 “創建資產”(Create Asset),選擇 “創建動畫”(Create Animation),選擇 “當前動畫”(Current Animation),再選擇 “預覽網格體”(Preview Mesh),隨后在彈出的對話框中將動畫資產命名為 “Jog_Fwd_Lean_R” 并保存到 “/Game/Contents/Assets/Animation” 目錄下。
    在這里插入圖片描述
    在這里插入圖片描述

  5. 在內容瀏覽器中可以看到新創建的動畫資產 “Jog_Fwd_Lean_R”,點擊 “保存所有”(Save All),隨后 “強制刪除”(Force Delete)動畫資產 “Jog_Fwd_Rifle1”。
    在這里插入圖片描述

  6. 仿照步驟 1—6 的操作,創建向前向左傾斜慢跑的動畫資產。
    在這里插入圖片描述

  7. 回到 “EquippedRun” 混合空間編輯器,在右側“資產瀏覽器”(Asset Browser)中按下鍵盤 Shift 鍵的同時分別拖拽 “Jog_Fwd_Lean_R” 和 “Jog_Fwd_Lean_L”,將其放置在坐標 (0.0, 180.0)(0.0, -180.0) 處生成采樣點。隨后在坐標軸中上下垂直移動光標,可以看到人物角色在向前跑動的同時身體可以發生傾斜。
    在這里插入圖片描述

  8. 仿照步驟 1—6 操作,創建向右慢跑 “Jog_Rt_Rifle” 向右傾斜和向左傾斜的動畫資產 “Jog_Rt_Lean_R” 和 “Jog_Rt_Lean_L”,并在坐標 (90.0, 180.0)(90.0, -180.0) 處生成采樣點。
    在這里插入圖片描述

  9. 仿照步驟 1—6 操作,創建向右慢跑 “Jog_Lt_Rifle” 向右傾斜和向左傾斜的動畫資產 “Jog_Lt_Lean_R” 和 “Jog_Lt_Lean_L”,并在坐標 (-90.0, 180.0)(-90.0, -180.0) 處生成采樣點。
    在這里插入圖片描述

  10. 仿照步驟 1—6 操作,創建向右慢跑 “Jog_Bwd_Rifle” 向右傾斜和向左傾斜的動畫資產 “Jog_Bwd_Lean_R” 和 “Jog_Bwd_Lean_L”,并在坐標 (180.0, 180.0)(-180.0, 180.0)(180.0, -180.0)(-180.0, 180.0) 處生成采樣點。
    在這里插入圖片描述


44.3 Summary

本節課我們創建了人物角色裝備武器時的奔跑混合空間,為人物角色在不同方向和身體傾斜狀態下奔跑提供了流暢的動畫過渡。首先,在指定骨骼 “SK_EpicCharacter_Skeleton” 上創建了混合空間藍圖類 “EquippedRun”,并為其配置了水平坐標軸 “YawOffset” 和垂直坐標軸 “Leaning”,它們的最小軸值都設置為 -180,最大軸值都設置為 180。隨后,將已有的向前“Jog_Fwd_Rifle”、向后 “Jog_Bwd_Rifle”、向左 “Jog_Lft_Rifle”、向右“Jog_Rt_Rifle” 慢跑動畫資產精確放置到坐標軸的關鍵指定位置上生成采樣點。
接著,我們重點制作了支持垂直坐標軸 “Leaning” 的傾斜奔跑動畫,使得人物角色在奔跑時身體會有小幅度的傾斜。通過拷貝基礎向前奔跑動畫 “Jog_Fwd_Rifle”,在拷貝好的臨時動畫資產的編輯器中旋轉骨骼根節點 “Root” 并添加關鍵幀,創建了向前向左傾 “Jog_Fwd_Lean_L” 和向右傾 “Jog_Fwd_Lean_R”的新動畫資產,然后刪除臨時動畫資產。此后,仿照上述步驟擴展應用到其他三個基礎方向后、左、右,分別創建了它們對應的左右傾斜動畫資產,并將這些新動畫作為采樣點添加到混合空間垂直坐標軸的兩端。
最終完成的奔跑混合空間 “EquippedRun” 能根據 YawOffset” 和 “Leaning`” 值動態混合,使角色在 360° 任意方向奔跑時,身體也能平滑地向左右傾斜。
在這里插入圖片描述


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93664.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93664.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93664.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TensorRT-LLM.V1.1.0rc1:Dockerfile.multi文件解讀

一、TensorRT-LLM有三種安裝方式,從簡單到難 1.NGC上的預構建發布容器進行部署,見《tensorrt-llm0.20.0離線部署DeepSeek-R1-Distill-Qwen-32B》。 2.通過pip進行部署。 3.從源頭構建再部署,《TensorRT-LLM.V1.1.0rc0:在無 GitHub 訪問權限的服務器上編…

UniApp 實現pdf上傳和預覽

一、上傳1、html<template><button click"takeFile">pdf上傳</button> </template>2、JStakeFile() {// #ifdef H5// H5端使用input方式選擇文件const input document.createElement(input);input.type file;input.accept .pdf;input.onc…

《用Proxy解構前端壁壘:跨框架狀態共享庫的從零到優之路》

一個項目中同時出現React的函數式組件、Vue的模板語法、Angular的依賴注入時,數據在不同框架體系間的流轉便成了開發者不得不面對的難題—狀態管理,這個本就復雜的命題,在跨框架場景下更顯棘手。而Proxy,作為JavaScript語言賦予開發者的“元編程利器”,正為打破這道壁壘提…

MOESI FSM的全路徑測試用例

MOESI FSM的全路徑測試用例摘要&#xff1a;本文首先提供一個UVM版本的測試序列&#xff08;基于SystemVerilog和UVM框架&#xff09;&#xff0c;設計為覆蓋MOESI FSM的全路徑&#xff1b;其次詳細解釋如何使用覆蓋組&#xff08;covergroup&#xff09;來量化測試的覆蓋率&am…

git倉庫和分支的關系

1?? 倉庫分支&#xff08;Repository Branch&#xff09;每個 Git 倉庫都有自己的分支結構。分支決定你當前倉庫看到的代碼版本。示例&#xff1a;倉庫分支只是局部修改&#xff0c;項目分支才是全局管理所有倉庫分支的概念。wifi_camera 倉庫&#xff1a; - main - dev - fe…

Linux的基本操作

Linux 系統基礎操作完整指南一、文件與目錄操作1. 導航與查看pwd (Print Working Directory)作用&#xff1a;顯示當前所在目錄的完整路徑示例&#xff1a;pwd → 輸出 /home/user/documents使用場景&#xff1a;當你在多層目錄中迷失時快速定位當前位置ls (List)常用選項&…

npm設置了鏡像 pnpm還需要設置鏡像嗎

npm配置鏡像后是否需要為pnpm單獨設置鏡像&#xff1f; 是的&#xff0c;即使您已經為npm設置了鏡像源&#xff08;如淘寶鏡像&#xff09;&#xff0c;仍然需要單獨為pnpm配置鏡像源。這是因為npm和pnpm是兩個獨立的包管理工具&#xff0c;它們的配置系統和環境變量是分離的&a…

Linux管道

預備知識&#xff1a;進程通信進程需要某種協同&#xff0c;協同的前提條件是通信。有些數據是用來通知就緒的&#xff0c;有些是單純的傳輸數據&#xff0c;還有一些是控制相關信息。進程具有獨立性&#xff0c;所以通信的成本可能稍微高一點&#xff1b;進程間通信前提是讓不…

基于Spring Boot的快遞物流倉庫管理系統 商品庫存管理系統

&#x1f525;作者&#xff1a;it畢設實戰小研&#x1f525; &#x1f496;簡介&#xff1a;java、微信小程序、安卓&#xff1b;定制開發&#xff0c;遠程調試 代碼講解&#xff0c;文檔指導&#xff0c;ppt制作&#x1f496; 精彩專欄推薦訂閱&#xff1a;在下方專欄&#x1…

腳手架開發-Common封裝基礎通用工具類<基礎工具類>

書接上文 java一個腳手架搭建_redission java腳手架-CSDN博客 以微服務為基礎搭建一套腳手架開始前的介紹-CSDN博客 腳手架開發-準備配置-進行數據初始化-配置文件的準備-CSDN博客 腳手架開發-準備配置-配置文件的準備項目的一些中間件-CSDN博客 腳手架開發-Nacos集成-CSD…

軟件系統運維常見問題

系統部署常見問題 環境配置、兼容性問題。生產與測試環境的操作系統、庫版本、中間件版本不一致&#xff0c;運行環境軟件版本不匹配。新舊版本代碼/依賴不兼容。依賴缺失或沖突問題。后端包啟動失敗&#xff0c;提示類/方法/第三方依賴庫找不到或者版本沖突。配置錯誤。系統啟…

2021 IEEE【論文精讀】用GAN讓音頻隱寫術騙過AI檢測器 - 對抗深度學習的音頻信息隱藏

使用GAN生成音頻隱寫術的隱寫載體 本文為個人閱讀GAN音頻隱寫論文&#xff0c;部分內容注解&#xff0c;由于原文篇幅較長這里就不再一一粘貼&#xff0c;僅對原文部分內容做注解&#xff0c;僅供參考詳情參考原文鏈接 原文鏈接&#xff1a;https://ieeexplore.ieee.org/abstra…

PWA技術》》漸進式Web應用 Push API 和 WebSocket 、webworker 、serviceworker

PWA # 可離線 # 高性能 # 無需安裝 # 原生體驗Manifest {"name": "天氣助手", // 應用全名"short_name": "天氣", // 短名稱&#xff08;主屏幕顯示&#xff09;"start_url": "/index.html&…

數據結構——棧和隊列oj練習

225. 用隊列實現棧 - 力扣&#xff08;LeetCode&#xff09; 這一題需要我們充分理解隊列和棧的特點。 隊列&#xff1a;隊頭出數據&#xff0c;隊尾入數據。 棧&#xff1a;棧頂出數據和入數據。 我們可以用兩個隊列實現棧&#xff0c;在這過程中&#xff0c;我們總要保持其…

Java基礎 8.19

目錄 1.局部內部類的使用 總結 1.局部內部類的使用 說明&#xff1a;局部內部類是定義在外部類的局部位置&#xff0c;比如方法中&#xff0c;并且有類名可以直接訪問外部類的所有成員&#xff0c;包含私有的不能添加訪問修飾符&#xff0c;因為它的地位就是一個局部變量。局…

從父類到子類:C++ 繼承的奇妙旅程(2)

前言&#xff1a;各位代碼航海家&#xff0c;歡迎回到C繼承宇宙&#xff01;上回我們解鎖了繼承的「基礎裝備包」&#xff0c;成功馴服了public、protected和花式成員隱藏術。但——??前方高能預警&#xff1a; 繼承世界的暗流涌動遠不止于此&#xff01;今天我們將勇闖三大神…

【圖像算法 - 16】庖丁解牛:基于YOLO12與OpenCV的車輛部件級實例分割實戰(附完整代碼)

庖丁解牛&#xff1a;基于YOLO12與OpenCV的車輛部件級實例分割實戰&#xff08;附完整代碼&#xff09; 摘要&#xff1a; 告別“只見整車不見細節”&#xff01;本文將帶您深入實戰&#xff0c;利用YOLO12-seg訓練實例分割模型&#xff0c;結合OpenCV的強大圖像處理能力&…

ubuntu22.04配置遠程桌面

文章目錄前言檢查桌面類型xorg遠程桌面(xrdp)安裝xrdpxrdp添加到ssl-certwayland遠程桌面(gnome-remote-desktop)檢查安裝開啟開啟狀況檢查自動登錄奇技淫巧前言 在windows上使用遠程桌面服務&#xff0c;連接ubuntu主機的遠程桌面 檢查桌面類型 查看桌面類型、協議 echo $…

SQL Server 中子查詢、臨時表與 CTE 的選擇與對比

在 SQL Server 的實際開發過程中&#xff0c;我們常常需要將復雜的查詢邏輯分解為多個階段進行處理。實現這一目標的常見手段有 子查詢 (Subquery)、臨時表 (Temporary Table) 和 CTE (Common Table Expression)。這三者在語法、執行效率以及可維護性方面各有優勢與局限。如何選…

肖臻《區塊鏈技術與應用》第20-22講 - 以太坊難度調整、權益證明和智能合約

以太坊的“冰河時代”:詳解難度調整算法與“難度炸彈” 摘要: 為了實現遠快于比特幣的十幾秒出塊速度,以太坊必須設計一套更為靈敏和復雜的挖礦難度調整算法。本文基于北京大學肖臻老師的公開課內容,深入剖析了以太坊獨特的逐塊難度調整機制。文章首先解釋了其維持15秒平均…