日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

游戏引擎架构----动画

發(fā)布時(shí)間:2024/1/8 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 游戏引擎架构----动画 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.角色動(dòng)畫(huà)類型 ? 賽璐璐動(dòng)畫(huà)(cel animation):基于幀的,電子版本為精靈動(dòng)畫(huà)(sprite animation),可以設(shè)計(jì)成循環(huán)動(dòng)畫(huà)(looping animation)? ? 剛性層階式動(dòng)畫(huà)(rigid hierarchical animation):可能在關(guān)節(jié)處產(chǎn)生裂縫 ? 每頂點(diǎn)動(dòng)畫(huà)(per-vertex animation):網(wǎng)格添加動(dòng)畫(huà),數(shù)據(jù)密集 ? 變形目標(biāo)動(dòng)畫(huà)(morph target animation):極端的網(wǎng)格姿勢(shì)+混合 ? 蒙皮動(dòng)畫(huà)(skinned animation):骨骼+皮膚
2.骨骼: 剛性 關(guān)節(jié)(joint)的樹(shù)形層級(jí)結(jié)構(gòu)構(gòu)成。骨骼只是關(guān)節(jié)間的空位,關(guān)節(jié)是動(dòng)畫(huà)師控制的 內(nèi)存中存儲(chǔ):關(guān)節(jié)名字,父關(guān)節(jié)索引,關(guān)節(jié)綁定姿勢(shì)的逆變換矩陣(蒙皮綁定時(shí)關(guān)節(jié)的姿勢(shì))
3. 姿勢(shì): 關(guān)節(jié)相對(duì)模型參考系的位置、定向和縮放。用矩陣或者 SQT數(shù)據(jù)結(jié)構(gòu)表示(縮放scale、四元數(shù)旋轉(zhuǎn)quaternion、平移translation) 綁定姿勢(shì):參考姿勢(shì)、放松姿勢(shì)、T姿勢(shì) 局部姿勢(shì):相對(duì)父關(guān)節(jié)的姿勢(shì),SQT表示。每個(gè)關(guān)節(jié)定義了一個(gè)坐標(biāo)空間。把關(guān)節(jié)姿勢(shì)變換Pj施于關(guān)節(jié)j坐標(biāo)系表示的點(diǎn)時(shí),得到的是父關(guān)節(jié)空間表示該點(diǎn)。即從子關(guān)節(jié)空間變換到父關(guān)節(jié)空間。Pj=P(j->parent(j)) 全局姿勢(shì):在模型空間的姿勢(shì)。從關(guān)節(jié)到根關(guān)節(jié),乘以局部姿勢(shì)得到。P2->m = P2->1*P1->0*P0->m
4. 動(dòng)畫(huà)片段(animation clip) 互動(dòng):動(dòng)畫(huà) 非互動(dòng):游戲內(nèi)置電影(in-game cinematics IGC)、非交互連續(xù)鏡頭(non interactive sequence NIS)、全動(dòng)視頻(full motion video FMV) 半互動(dòng): 快速反應(yīng)事件(quick time event QTE) 動(dòng)畫(huà)片段的采樣定義了連續(xù)函數(shù)。動(dòng)畫(huà)片段是 SQT組成的通道函數(shù)(channel funciton),通道函數(shù)是連續(xù)的。游戲引擎使用分段線性逼近的方法插值。 4.1 局部時(shí)間線: 時(shí)間:0-T 關(guān)鍵姿勢(shì)(key pose)、關(guān)鍵幀+插值。t是實(shí)數(shù),不一定是整數(shù) 時(shí)間比例(time scale):負(fù)值則動(dòng)畫(huà)倒轉(zhuǎn) 幀:有時(shí)指一段時(shí)間,有時(shí)指一個(gè)時(shí)間點(diǎn) 采樣(sample):代表時(shí)間點(diǎn),那相應(yīng)的時(shí)間可以指幀了。非循環(huán)動(dòng)畫(huà):N幀有N+1個(gè)采樣、循環(huán)動(dòng)畫(huà):N幀有N個(gè)采樣 相位(phase):歸一化的時(shí)間,0表示開(kāi)始,1表示結(jié)束 4.2 全局時(shí)間線: 播放動(dòng)畫(huà):局部時(shí)間映射到全局時(shí)間。循環(huán)就使用模除。起始時(shí)間、播放速率/時(shí)間比例、循環(huán)次數(shù)、持續(xù)時(shí)間 同步動(dòng)畫(huà)時(shí),由于通信系統(tǒng)的時(shí)間延遲,造成動(dòng)畫(huà)不同步。使用全局時(shí)鐘可以同步動(dòng)畫(huà),將動(dòng)畫(huà)的全局開(kāi)始時(shí)間匹配即可。 4.3 動(dòng)畫(huà)重訂目標(biāo)(retarget): 動(dòng)畫(huà)通常只兼容特定骨骼,此技術(shù)可以讓動(dòng)畫(huà)適用于不同骨骼 4.4 元通道(metachannel): 非關(guān)節(jié)通道,如事件觸發(fā)器通道,定位器通道。 定位器用于記錄游戲中物體的位置和方向,也是一個(gè)仿射變換??梢栽O(shè)置攝像機(jī)的位置和角度
5. 蒙皮 網(wǎng)格每個(gè)頂點(diǎn)可以綁定至一個(gè)或者多個(gè)關(guān)節(jié),再加權(quán)平均 蒙皮矩陣(skinning matrix):把網(wǎng)格頂點(diǎn)從綁定姿勢(shì)的位置變換至骨骼的當(dāng)前姿勢(shì)的位置。蒙皮頂點(diǎn)的位置在模型空間定義的,所以變換前后的位置都在模型空間。 頂點(diǎn)在綁定至關(guān)節(jié)的位置時(shí),在關(guān)節(jié)空間是不變的:頂點(diǎn)在模型空間的位置->頂點(diǎn)在關(guān)節(jié)空間的位置->關(guān)節(jié)變換->頂點(diǎn)回到模型空間 假設(shè)只有一個(gè)關(guān)節(jié):則綁定姿勢(shì)的網(wǎng)格位置VmB, 關(guān)節(jié)在模型空間中的綁定姿勢(shì)B,關(guān)節(jié)在模型空間中的當(dāng)前姿勢(shì)C可得到:VmB * B^-1 * C = VmC ? ? ?==> ?蒙皮矩陣:B^-1 * C:綁定姿勢(shì)的逆矩陣*目標(biāo)姿勢(shì)的變換矩陣? 矩陣調(diào)色板(matrix palette): 一系列矩陣,每個(gè)矩陣對(duì)應(yīng)了關(guān)節(jié)j的蒙皮矩陣。將網(wǎng)格頂點(diǎn)關(guān)聯(lián)的蒙皮矩陣取出,加權(quán)求和后,將頂點(diǎn)從綁定姿勢(shì)位置變成目標(biāo)姿勢(shì)位置,由于C是每幀變化的,B^-1會(huì)緩存起來(lái) 將模型空間變化到世界空間:乘以矩陣Mm->w,可以預(yù)處理將B^-1*Mm->w緩存 動(dòng)畫(huà)實(shí)例(animation instancing):多個(gè)角色同時(shí)播放單個(gè)動(dòng)畫(huà)。此時(shí)不應(yīng)該將B^-1*Mm->w緩存
6.動(dòng)畫(huà)混合(animation blending) 將多個(gè)動(dòng)畫(huà)片段混合,對(duì)角色最終姿勢(shì)起作用 6.0 無(wú)需混合 核心姿勢(shì):站立、蹲下 確保每個(gè)動(dòng)畫(huà)片段都以某個(gè)核心姿勢(shì)開(kāi)始核心姿勢(shì)結(jié)束,就無(wú)需混合 6.1 線性插值混合 linear interpolation(LERP),混合百分比、混合因子=[0,1] 姿勢(shì)混合通常在局部進(jìn)行 應(yīng)用: 時(shí)間混合 動(dòng)作連續(xù)性(淡入淡出):混合因子隨時(shí)間按三次函數(shù)變化:緩出曲線(ease out curve)、緩入曲線(ease in curve) 圓滑過(guò)渡:兩個(gè)片段的混合因子都同時(shí)變換,同時(shí)播放 凍結(jié)過(guò)渡:一個(gè)片段凍結(jié),另一個(gè)片段一遍播放一遍增加混合因子 方向性運(yùn)動(dòng): 軸轉(zhuǎn)移動(dòng)(pivotal movement):按軸旋轉(zhuǎn) 靶向移動(dòng)(targeted movement):面朝著一個(gè)方向,身體朝不同地方移動(dòng)。制作三個(gè)基本動(dòng)畫(huà):朝前、朝左、朝右做一個(gè)半圓,按照移動(dòng)方向和靶向的角度選擇混合因子 復(fù)雜的線性插值混合: 一維線性插值混合:多個(gè)片段的一維混合 二維線性插值混合:三個(gè)一維混合可得:x軸方向兩個(gè),求出中間姿勢(shì),y軸方向使用前面的兩個(gè)中間結(jié)果得到。 三角形的二維線性插值混合:a,b, 1-a-b的加權(quán)混合 泛化的二維插值混合:利用Delaunay三角剖分求出一組三角形,再找到對(duì)應(yīng)的姿勢(shì)所在的三角形,最后用三角形的二維線插值混合得到結(jié)果 6.2 骨骼分部混合: 達(dá)到一只手做A一只手做B的效果 通過(guò)允許不同關(guān)節(jié)有不同的混合百分比實(shí)現(xiàn)。 混合因子為0,1時(shí)可以實(shí)現(xiàn) 混合遮罩(blend mask) 6.3 加法混合(additive blending): 區(qū)別片段(difference clip) 來(lái)源片段(source clip) + 區(qū)別片段 = 參考片段 目標(biāo)片段 : 任何動(dòng)畫(huà),+ 區(qū)別片段 = 其他片段,也是加法混合的意義 來(lái)源于矩陣的乘法,除法 加法混合的應(yīng)用 移動(dòng)噪聲 瞄準(zhǔn)及注釋:對(duì)最左最上最右制作區(qū)別動(dòng)畫(huà),混合至向前動(dòng)畫(huà)就可以得到其他的瞄準(zhǔn)動(dòng)畫(huà)。(可以利用時(shí)間軸lerp)
7. 后期處理 布娃娃 逆運(yùn)動(dòng)學(xué)(inverse kinematics IK): 輸入是全局姿勢(shì),稱為末端受動(dòng)器,根據(jù)誤差最小化求出局部姿勢(shì) 正向運(yùn)動(dòng)學(xué)(forward kinematics FK):輸入是一組局部姿勢(shì),輸出是一個(gè)全局姿勢(shì)以及每個(gè)關(guān)節(jié)的蒙皮矩陣。
8. 壓縮技術(shù) 通道省略:移除平移通道,減少存儲(chǔ)姿勢(shì) 量化:減少存儲(chǔ)為數(shù)。浮點(diǎn)數(shù)轉(zhuǎn)化為n整數(shù)表示 采樣頻率減少 選擇性載入
9. 動(dòng)畫(huà)系統(tǒng) 9.1 動(dòng)畫(huà)系統(tǒng)架構(gòu) 動(dòng)畫(huà)管道(animation pipeline):動(dòng)畫(huà)片段和混合因子作為輸入局部骨骼姿勢(shì)作為輸出 動(dòng)作狀態(tài)機(jī)(action state machine ASM) 動(dòng)畫(huà)控制器(animation controller):每個(gè)控制器通常父子一個(gè)類型的角色行為,如掩護(hù)、跑步。能提供高層次的動(dòng)畫(huà)管理接口 9.2 動(dòng)畫(huà)管道 片段解壓以及姿勢(shì)提取->姿勢(shì)混合->全局姿勢(shì)生成->后期處理->重新計(jì)算全局姿勢(shì)->矩陣調(diào)色板生成 數(shù)據(jù)結(jié)構(gòu): 共享資源數(shù)據(jù)(shared resource data):骨骼、蒙皮網(wǎng)格、動(dòng)畫(huà)片段。骨骼是中心,蒙皮綁定至骨骼,動(dòng)畫(huà)應(yīng)用于骨骼 每實(shí)體狀態(tài)信息(per-instance data structure):動(dòng)畫(huà)片段的狀態(tài)(局部時(shí)鐘、播放速率)、混合方法、混合權(quán)重、局部姿勢(shì)、全局姿勢(shì)、矩陣調(diào)色板 混合方法: 加權(quán)平均法 混合樹(shù):將6變成樹(shù)的結(jié)構(gòu),就是加法混和必須為一個(gè)葉子節(jié)點(diǎn),而其他的混合可以而且是葉子節(jié)點(diǎn)和內(nèi)節(jié)點(diǎn)。 淡入淡出: 加權(quán)平均法:調(diào)整片段權(quán)重、將片段邏輯分組,調(diào)節(jié)組權(quán)重 混合樹(shù):加入一個(gè)二叉混合節(jié)點(diǎn),混合原來(lái)的樹(shù)和新的樹(shù) 9.3 動(dòng)作狀態(tài)機(jī) 每個(gè)狀態(tài)對(duì)應(yīng)一個(gè)任意復(fù)雜的動(dòng)畫(huà)片段集合,在混合樹(shù)架構(gòu)中狀態(tài)對(duì)應(yīng)一棵樹(shù)、加權(quán)平均法中狀態(tài)對(duì)應(yīng)一系列權(quán)重何一組片段 過(guò)渡:定義狀態(tài)間的過(guò)渡矩陣 過(guò)渡方法:跳轉(zhuǎn)、淡入淡出(引入過(guò)渡狀態(tài)節(jié)點(diǎn) transitional state) 狀態(tài)層: 預(yù)備動(dòng)作(anticipation):由一個(gè)部位引領(lǐng)其他部位的動(dòng)作,即要獨(dú)立操控不同部位,同時(shí)有多個(gè)狀態(tài)出現(xiàn) 引入狀態(tài)層:每層在某一刻只有一個(gè)狀態(tài),不同層之間狀態(tài)是獨(dú)立的 9.4 約束 依附:依附點(diǎn)/ 定位器(locator):特殊的關(guān)節(jié),僅僅為依附中的父子關(guān)系加入額外的變換 對(duì)準(zhǔn):多個(gè)角色參與一個(gè)動(dòng)畫(huà) 利用定位器,使多個(gè)角色的動(dòng)畫(huà)中的定位器在世界空間內(nèi)重合 解決滑步的方法:
  • 動(dòng)作提取:從動(dòng)畫(huà)中提取出每幀角色重心到局部空間原點(diǎn)的距離(利用元通道),作為速度參數(shù)來(lái)移動(dòng)角色。同時(shí)將局部空間原點(diǎn)移動(dòng)到此幀的角色重心處
  • 2. 腳步IK:腳接觸地面時(shí),記下其在世界空間的位置,我們用IK去調(diào)整腿的姿勢(shì),令腳能固定于正確位置 注視 掩護(hù)對(duì)準(zhǔn)




    總結(jié)

    以上是生活随笔為你收集整理的游戏引擎架构----动画的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。