W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
關(guān)鍵幀軌道(KeyframeTrack)是關(guān)鍵幀(keyframes)的定時序列, 它由時間和相關(guān)值的列表組成, 用來讓一個對象的某個特定屬性動起來。
在使用手冊的“下一步”章節(jié)中,“動畫系統(tǒng)”一文對three.js動畫系統(tǒng)中的不同元素作出了概述
和JSON model format的動畫層級相反, 關(guān)鍵幀軌道(KeyframeTrack)不會將單幀作為對象存儲在“key”數(shù)組(一個存有每一幀的時間和值的地方)中。
關(guān)鍵幀軌道(KeyframeTrack)中總是存在兩個數(shù)組:times數(shù)組按順序存儲該軌道的所有關(guān)鍵幀的時間值,而values數(shù)組包含動畫屬性的相應(yīng)更改值。
值數(shù)組中的每一個成員,屬于某一特定時間點,不僅可以是一個簡單的數(shù)字,還可以是(比如)一個向量(如果是位置動畫)或者是一個四元數(shù)(如果是旋轉(zhuǎn)動畫)。 因此,值數(shù)組(也是一個平面陣列)的長度可能是時間數(shù)組的三四倍。
與不同類型的動畫值對應(yīng),存在若干關(guān)鍵幀軌道(KeyframeTrack)的子類,繼承了它大多數(shù)屬性和方法:
可以在AnimationClipCreator文件中找到用不同類型的關(guān)鍵幀軌道創(chuàng)建動畫剪輯(AnimationClips)的示例。
由于顯式值僅針對存儲在時間數(shù)組中的離散時間點指定,因此必須在兩個時間點之間進(jìn)行插值
軌道的名稱對于這個軌道與動畫節(jié)點的特定屬性的連接(由PropertyBinding完成)很重要。
name - 關(guān)鍵幀軌道(KeyframeTrack)的標(biāo)識符.times - 關(guān)鍵幀的時間數(shù)組, 被內(nèi)部轉(zhuǎn)化為 Float32Array.values - 與時間數(shù)組中的時間點相關(guān)的值組成的數(shù)組, 被內(nèi)部轉(zhuǎn)化為 Float32Array.interpolation - 使用的插值類型。 參見 Animation Constants for possible values. Default is InterpolateLinear.
軌道的名稱可以指動畫對象中的變形目標(biāo)(morph targets)、骨骼(bones)或可能的其他值 查看PropertyBinding.parseTrackName可獲知哪些形式的字符串可以解析出綁定的屬性:
可以使用節(jié)點名稱或uuid(盡管它需要位于傳遞到混合器的場景圖節(jié)點的子樹中)引用到某節(jié)點?;蛘?, 如果軌道名稱的首字符是點, 該軌道會應(yīng)用到傳入到混合器的根節(jié)點上。
通常,在該節(jié)點之后會直接指定一個屬性。 但是也可以再指定一個子屬性, 例如 如果只是想通過浮動軌道使X組件旋轉(zhuǎn),可使用 .rotation[x]。
還可以使用對象名稱來指定骨骼或多材質(zhì),例如:.bones[R_hand].scale;再比如,材料數(shù)組中的第四個材料的漫反射顏色的紅通道可以通過 .materials[3].diffuse[r]訪問到。
屬性綁定也會解析變形目標(biāo)名稱, 例如: .morphTargetInfluences[run]
說明: 軌道名稱不一定得唯一。 多個軌道可驅(qū)動統(tǒng)一屬性, 此時結(jié)果應(yīng)該基于多個軌道之間根據(jù)其各自動作的權(quán)重的加權(quán)混合。
一個Float32Array類型的值,由傳入構(gòu)造器中時間數(shù)組參數(shù)轉(zhuǎn)化而來。
一個Float32Array類型的值, 由傳入構(gòu)造器中值數(shù)組參數(shù)轉(zhuǎn)化而來
默認(rèn)的參數(shù)插值類型: InterpolateLinear.
Float32Array, 內(nèi)部用于時間數(shù)組的緩沖區(qū)的類型
Float32Array, 內(nèi)部用于值數(shù)組的緩沖區(qū)的類型
根據(jù)傳入構(gòu)造器中的插值類型參數(shù),創(chuàng)建線性插值(LinearInterpolant),立方插值(CubicInterpolant)或離散插值 (DiscreteInterpolant)
返回插值類型
返回每個值的大小(即values數(shù)組的長度除以times數(shù)組的長度
根據(jù)時間(times)和值(values)創(chuàng)建一個新的離散插值(DiscreteInterpolant)。 可傳入一個Float32Array類型的變量來接收結(jié)果, 否則會自動創(chuàng)建一個長度適宜的新數(shù)組。
根據(jù)時間(times)和值(values)創(chuàng)建一個新的線性插值(LinearInterpolant)。 可傳入一個Float32Array類型的變量來接收結(jié)果, 否則會自動創(chuàng)建一個長度適宜的新數(shù)組。
根據(jù)時間(times)和值(values)創(chuàng)建一個新的立方插值(CubicInterpolant)。 可傳入一個Float32Array類型的變量來接收結(jié)果, 否則會自動創(chuàng)建一個長度適宜的新數(shù)組。
刪除等效的順序鍵,這些鍵在變形目標(biāo)序列中很常見。
縮放所有關(guān)鍵幀的時間。說明: 這個方法很有用,例如, 可用于轉(zhuǎn)化為某一特定幀率(正如animationClip.CreateFromMorphTargetSequence內(nèi)部所做的一樣)。
設(shè)置插值類型。 參閱Animation Constants以供選擇。
及時刪除之前或之后的所有關(guān)鍵幀。
刪除開始時間(startTime)之前以及結(jié)束時間(endTime)之后的關(guān)鍵幀,不改變[startTime, endTime]范圍內(nèi)的任何值。
在軌道上執(zhí)行最小驗證,有效則返回true
如果出現(xiàn)以下情況,該方法會在控制臺輸出錯誤日志: 軌道為空; value size值不可靠; times數(shù)組或values數(shù)組中的元素不是數(shù)字;times數(shù)組中的元素亂序。
將該軌道轉(zhuǎn)化為JSON
src/animation/KeyframeTrack.js
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: