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