教你用c++代码制作:仙剑奇侠传,火爆人气!
仙劍奇?zhèn)b傳是中國最為經(jīng)典的武俠PRG游戲了,跌宕起伏的劇情,深入人心的人設(shè),精心制作的畫面。可以說是傳承了一代人的青春記憶。
下面是小編整理好的一套C/C++資料,加小編C/C++學(xué)習(xí)群825414254,獲取系統(tǒng)性學(xué)習(xí)C/C++的學(xué)習(xí)資料
2017年5月23日,仙劍奇?zhèn)b傳7正式立項,并采用虛幻4引擎(UE4)制作。意圖給廣大仙劍迷打造一部畫面更加震撼,運行更為流暢的作品。
炫酷的戰(zhàn)斗場面,栩栩如生的人物形象,都是用C++編寫腳本,應(yīng)用動畫系統(tǒng)實現(xiàn)的。
因為C++效率高、方便底層交互,所以目前能勝任大型3D游戲編寫的編程語言只有C++,那么我們就來聊一聊如何用C++實現(xiàn)人物的動畫效果。
一些游戲引擎會采用最簡單的直播動畫的形式(如Unity的Animation方案)僅支持簡單動畫播放和CrossFade;一些引擎會采用更高級的動畫方案。
具備動畫狀態(tài)機和混合樹的方案在如今基本是標(biāo)配,但是不同引擎的實現(xiàn)也會有功能上的差別,例如Unity的Mecanim系統(tǒng)采用的是假的層次狀態(tài)機和功能簡單混合樹(無法插入功能性節(jié)點)
△仙劍5和仙劍6皆采用U3D編寫
而UE4的Animation Blueprint就高級很多,可以在混合樹插入很多功能性節(jié)點(如IK),同時讓可視化腳本能夠很方便地控制動畫行為。
△仙劍7用虛幻4制作
骨骼動畫的想法來源于人體骨骼。例如說,人的上肢所有肌肉和皮膚都受上肢骨胳的影響,而人的踝關(guān)節(jié)則分別承受小腿骨胳和腳骨的影響。
這個概念的本質(zhì)上是記錄了以樹形結(jié)構(gòu)存儲的一系列對象的位置、旋轉(zhuǎn)、縮放隨著時間變化的動態(tài),其中的每一個對象就是一根骨骼。
在游戲引擎中,骨骼動畫通常以兩個形態(tài)存在,原始數(shù)據(jù)和轉(zhuǎn)換后數(shù)據(jù):
原始數(shù)據(jù)儲存了最適合用戶進行動畫編輯制作的數(shù)據(jù),比如3DMax導(dǎo)出的FBX格式動畫,或是Unity中使用動畫編輯工具制作的動畫。這類數(shù)據(jù)格式簡單,并且不做壓縮,比如使用單獨的Track來儲存位移、旋轉(zhuǎn)、縮放的XYZ三個通道。原始數(shù)據(jù)可以直接用于編輯和播放,但是內(nèi)存開銷和CPU開銷通常較大,所以一般不這么做。
△仙劍五中的一個3D模型
轉(zhuǎn)換后數(shù)據(jù)儲存了對原始數(shù)據(jù)進行加工后的版本,通常在游戲引擎的導(dǎo)入資源階段會進行數(shù)據(jù)轉(zhuǎn)換處理。轉(zhuǎn)換后的動畫數(shù)據(jù)通常經(jīng)過壓縮,使其內(nèi)存開銷和CPU開銷降低。轉(zhuǎn)換后數(shù)據(jù)可以直接用于動畫播放。
動畫的播放,根本上來說就是依照時間對動畫進行采樣,將Pose等采樣結(jié)果輸出。因而,要想對動畫進行播放,我們首先得定義動畫的采樣結(jié)果。
動畫的采樣結(jié)果包含如下幾個部分的信息:
Pose信息
RootMotion信息
動畫播放狀態(tài)
Rig標(biāo)識
RootMotion從字面上來說,就是“根節(jié)點的運動”,事實上它表示的是動畫驅(qū)動游戲?qū)ο筮\動。
不同的動畫系統(tǒng)對于RootMotion的實現(xiàn)方式略有不同:Unity引擎通過分析人體骨骼動畫來計算角色的運動,UE4采用角色根骨骼運動作為角色運動參考,Morpheme采用額外的Trajectory骨骼來作為角色運動的參考。
△動畫系統(tǒng)處理后的默認(rèn)動畫圖
只有默認(rèn)動畫是沒有什么實際用途的,還需要編寫一段腳本來控制人物切換動畫。
讓我們看一下效果圖
(1)
(2)
(3)
(4)
以上就是運用C++實現(xiàn)人物的行走,打斗,技能釋放等等動畫效果的一些基本知識了,不得不說,仙劍奇?zhèn)b傳作為一部火了十幾年的經(jīng)典游戲,其制作思路和制作方法都非常值得當(dāng)今的游戲開發(fā)者借鑒和學(xué)習(xí)的。
當(dāng)然,制作仙劍奇?zhèn)b傳這樣的大型游戲需要有相當(dāng)深厚的C++功底,對于初學(xué)者而言,大型3D游戲太過晦澀高深,直接去編寫這種高難度的肯定不是一個合理的選擇。
就像我們常說的不能一口吃成個胖子,當(dāng)我們還只會走的時候,就應(yīng)該努力把每一步踏的堅實,這樣才能在以后的路上健步如飛。
我們可以從一些相對簡單的游戲做起,2048就是一款十分風(fēng)靡的益智類小游戲。
在編寫過程中,我們會運用到數(shù)組、界面處理、AI算法等相關(guān)知識,能夠讓初學(xué)編程的人在游戲中就能夠練習(xí)到C++語言的知識,讓學(xué)習(xí)變得更有意思和趣味。
總結(jié)
以上是生活随笔為你收集整理的教你用c++代码制作:仙剑奇侠传,火爆人气!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬取学校教务管理系统_pyt
- 下一篇: QT加载office文件简单方法