包含4節(jié)視頻教程
關注4.3萬次
講解face robot運動捕捉表情動畫的綁定教程。face robot是xsi的獨立模塊,專門制作高精度電影級表情動畫。
朱峰社區(qū)評論:大家好,歡迎在朱峰社區(qū)學習,今天我們介紹一下UDK的曲線編輯器的使用和物理約束的參考。希望大家學過后能很好的應用到制作中。
UnrealEnginge3(虛幻引擎3)利用其曲線編輯器,實現(xiàn)對適時修改屬性的精確控制。它當前應用于Matinee?和Cascade工具中。
下圖是正在運行的曲線編輯器截圖:
1 | 使窗口符合軌跡的可視部分的寬度 |
2 | 使窗口符合軌跡的可視部分的高度 |
3 | 平移/編輯模式 |
4 | 縮放模式 |
5 | 自生成曲線模式 |
6 | 用戶設置曲線模式 |
7 | 曲線切斷模式(拐角) |
8 | 線性模式 |
9 | 常數(shù)值模式 |
10 | 曲線名稱 |
11 | 顯示/隱藏曲線按鈕 |
12 | 曲線切線控制柄 |
曲線編輯器使用的控件與UnrealEnginge3(虛幻引擎3)中其他工具相似:
在平移/編輯模式下:
Click-drag on background(點擊拖動背景) | 平移查看 |
Mouse wheel(鼠標滑輪) | 放大和縮小 |
Click on key(點擊按鍵) | 選擇點 |
Ctrl-click on point(Ctrl-點擊點) | 點的選中與否 |
Ctrl-click on curve(Ctrl-點擊曲線) | 在點擊處添加新的關鍵點 |
Ctrl-drag(Ctrl-拖動) | 移動當前選擇 |
Ctrl-Alt-drag(Ctrl-Alt-拖動) | 方框選擇 |
Ctrl-Alt-Shift-drag(Ctrl-Alt-Shift-拖動) | 方框選擇(添加至當前選擇) |
Delete(刪除) | 刪除已選定的點 |
Ctrl-Z | 取消 |
Ctrl-Y | 重做 |
Z | 進入縮放模式 |
在縮放模式下:
Left-click, drag vertically(左擊,垂直拖動) | 縮放Y軸 (輸出) |
Right-click, drag horizontally(右擊,水平拖動) | 縮放X軸 (輸入) |
注: 并非所有使用曲線編輯器的工具均可支持Undo/Redo(取消/重做)。
插值模式按鈕(在示意圖中的編號為5至9)控制著曲線上每一點抵達另一點所使用的方法。如果您選用一種曲線模式(自動、用戶或折斷),那么您將會發(fā)現(xiàn)白色控制柄(在示意圖中的編號為12),您可以點擊拖動,幫助更好地控制點與點之間的曲線。如果您選擇自動曲線模式下的一個按鍵,并利用白色控制柄(編號12)調(diào)節(jié)其切線,它將自動轉(zhuǎn)換為手動曲線模式。
曲線編輯器現(xiàn)在支持預置曲線——一組簡易的自動生成曲或是保存和重新使用用戶創(chuàng)建的曲線。
注: 值得注意的是預置曲線僅僅提供一個在CurveEditor(曲線編輯器)中可用的曲線模板。它們解決了反復創(chuàng)建相同曲線的問題,有效地節(jié)約了時間。CurveEdPresetCurve(曲線編輯器預置曲線)是一種簡易的儲存器對象,用于存儲與用戶所存的預置曲線相關的數(shù)據(jù)。它們不能“共享”不同對象間的曲線。
為了使用由引擎提供的自動生成曲線,僅需右擊您希望添加到曲線編輯器左欄中的曲線,并選擇“Preset Curves(預置曲線)”,將顯示下列對話框,含有按照曲線顯示的分配類型而啟動的可選子曲線:
圖1:預置曲線對話框
在預置下拉組合框中,可選擇下列選項:
選定Cos Wave(余弦波)或Sine Wave(正弦波)預置后,將顯示下列設置參數(shù):
下圖顯示了一個頻率為2.0,比例為0.5,偏移為1.0的Cos Wave(余弦波)。
圖2: 一個生成的Cos Wave(余弦波)實例
選定Linear Decay預置后,將顯示下列設置參數(shù):
下圖顯示了一個StartDecay為0.2,StartValue為0.9,EndDecay為0.8且EndValue為0.25的Linear Decay(線性衰減):
圖3: 一個生成的Linear Decay(線性衰減)實例
注意此情況下的曲線需要一些調(diào)整。默認情況下,所有自動生成的曲線采用AutoSet(自動設置)曲線插值方法。在Linear Decay(線性衰減)的情況下,選點并設置插值的方法將“修正”這條曲線。
為了使用用戶設置曲線,您必須首先在一個數(shù)據(jù)包中創(chuàng)建一個CurveEdPresetCurve(曲線編輯器預置曲線)實例。右擊綜合瀏覽器,并選擇“New CurveEdPresetCurve(新建曲線編輯器預置曲線)”,即可完成該操作。您可以根據(jù)自己的喜好來為曲線命名,但在當時不得使用。否則,該對象將不會公開顯示任何參數(shù)。
完成上述操作后,右擊您希望在曲線編輯器左欄中保存的曲線標簽,并選擇“Save Preset Curve(保存預置曲線)”,即可將一條曲線保存到這個對象中。它還會打開PresetCurve(預置曲線)對話框,但此時,僅有下列可用選項:
選定用戶設置后,將顯示下列對話框:
圖4:用戶設置屬性窗口
在您希望保存曲線的綜合瀏覽器中,選擇相關曲線,點擊屬性窗口上的“Use Current Object(使用當前對象)”按鈕。點擊OK按鈕,您將會把這條曲線保存到已選定曲線對象的目錄中。
現(xiàn)在用戶可以通過選擇用戶設置(User-Set)選項,并從綜合瀏覽器中選擇要使用的曲線來使用這條預置曲線了。
使用說明1:有時,您通過預置組合框中的鼠標點擊來選擇一條選項時,它并未正確更新對話框。出現(xiàn)這種情況時,僅需選擇組合框,使用上行和下行箭頭,選擇一個預置曲線選項。
使用說明2:目前,預置曲線還不適用于VectorUniformCurve(矢量平均曲線)分部。這個問題將會盡快修正。
好了,關于曲線編輯器的使用內(nèi)容就到這了,我們來學習下面的內(nèi)容,物理約束參考。
物理約束的參考我們主要從概況,設置,示例來介紹。
約束實際上是關節(jié)的另一個名稱。它使您能夠?qū)蓚剛性物體連接在一起,并應用限制或者力。虛幻引擎3有非常靈活的數(shù)據(jù)驅(qū)動約束系統(tǒng),允許設計者簡單地更改一些選項就可以制作許多不同類型的關節(jié)。該引擎有一些默認的關節(jié)類型(球窩、hinge(鉸鏈)、Prismatic(棱柱))而它們僅僅在設置上有所不同。您應該可以從任意類型的關節(jié)入手,通過設置自己的配置進行實驗。
這些設置被分為2部分——某個關節(jié)的所有實例所共享的設置,以及特別針對各個實例的設置。例如,一個關節(jié)限制對該關節(jié)的所有實例都是相同的,但是在各個實例中各種運動設置不盡相同。共享屬性被存儲在RB_ConstraintSetup對象中,而每個實例的屬性被存儲在RB_ConstraintInstance對象中。在PhAT中您可以通過按下鍵盤上的“I”鍵(或者按下工具欄上的“i”按鈕)選定關節(jié),在這些設置間切換。
您可在約束中的幾處設置一個“硬度”與“阻尼”參數(shù)以控制彈簧行為。您可以在一個由彈簧與油缸活塞制成的汽車懸架環(huán)境中考慮這些設置。彈簧控制力量產(chǎn)生的大小,將物體帶回其默認位置或者平衡位置;而阻尼就像用于阻礙任意運動的油。如果您有硬度而沒有阻尼,那么運動將前后擺動且從不停止。如果您將阻尼設置得很大,會花費很長時間到達平衡狀態(tài)。
ConstraintBone1 | 在一個PhysicsAsset(物理資源)中,關節(jié)應該連接的第一塊骨骼的名稱。 |
ConstraintBone2 | 在一個PhysicsAsset(物理資源)中,關節(jié)應該連接的第二塊骨骼的名稱。 |
有3個LinearSetup(線性設置)結(jié)構(gòu)——分別對著X,Y與Z方向。每個都有如下設置
bLimited | 是否對此程度的自由度存在限制。如果為假,線性運動沒有絲毫限制。 |
LimitSize | 如果bLimited為真,在此方向上允許的運動量。將此設置為0會完全“鎖定”此自由度 。 |
注意線性限制實際上是球狀的——所以如果方向沒有被限制為0(“鎖定的”)那么它將使用最大的3 LimitSize值。所以如果X為0,Y為10且Z為20,它將被限制在在YZ平面上一個半徑為20的圓內(nèi)。如果X為0,Y為0且Z為20,它將被限制在沿著Z軸從+20到–20的線段上。
bLinearLimitSoft | 默認情況下線性約束是“hard(硬)”。如果您將此設置為真,它們將被作為彈簧性的處理,而您可以“推”進它們內(nèi)部。 |
LinearLimitStiffness | 如果bLinearLimitSoft為真,它控制限制彈簧的硬度。 |
LinearLimitDamping | 如果bLinearLimitSoft為真,它控制限制彈簧的阻尼。 |
bLinearBreakable | 如果為真,通過在關節(jié)上作用一個線性力,該關節(jié)會損壞(主要將關節(jié)拉斷)。 |
LinearBreakThreshold | 如果bLinearBreakable為真,這就是破壞關節(jié)所需要的力。 |
關節(jié)的角度部分在條件“swing(擺動)”與“twist(扭曲)”中指定。您可以認為擺動是沿X軸的圓錐體,而twist(扭曲)是繞該軸的旋轉(zhuǎn)。在UE3中,錐形約束由兩個角度描述,因此可以是一個橢圓錐體。
bSwingLimited | 如果為真,兩個體之間的夾角為一個圓錐體。 |
bTwistLimited | 如果為真,兩個體之間的twist(扭曲)被限制。 |
bSwingLimitSoft | 默認情況下擺動錐的限制為“硬”。如果此被設置為真,它變?yōu)閺椈尚郧夷鼙煌迫搿? |
bTwistLimitSoft | 默認情況下twist(扭曲)限制為“硬”。它變?yōu)閺椈尚郧夷鼙煌迫搿? |
Swing1LimitAngle | 用角度定義擺動限制錐的一維。 |
Swing2LimitAngle | 用角度定義擺動限制錐的另一維。 |
TwistLimitAngle | 定義在兩個受約束體之間允許的twist(扭曲)的數(shù)量。 |
SwingLimitStiffness | 如果bSwingLimitSoft為真,它控制錐體的硬度 。 |
SwingLimitDamping | 如果bSwingLimitSoft為真,它控制錐體的阻尼。 |
TwistLimitStiffness | 如果bTwistLimitSoft為真,它控制twist(扭曲)限制的硬度。 |
TwistLimitDamping | 如果bTwistLimitSoft為真,它控制twist(扭曲)限制的阻尼。 |
bAngularBreakable | 如果為真,在其上作用扭矩時候,此關節(jié)可以被破壞(主要扭斷關節(jié))。 |
AngularBreakThreshold | 如果bAngularBreakable為真,這就是破壞關節(jié)所需要的扭矩。 |
滑輪是一種特殊的關節(jié),如同一個體上的某一點通過繩索連接到另一個體上的一點,而該繩索在空間上也穿過這兩個點。當使用這種關節(jié)時,大部分其它關節(jié)設置將沒有效果。
bIsPulley | 如果為真,該關節(jié)將被作為滑輪類型處理。 |
bMaintainMinDistance | 如果為真,在“rope(繩索)”中不允許有“slack(松弛)”,它們反而有點像支桿那樣別處理,所以您可以推上一個物體而另一個將被推下。 |
PulleyRatio | 滑輪上的齒輪傳動比。如果它不為1.0,拉一端將會導致另一端運動較少,但是力量更多。 |
虛幻引擎3提供2種方法驅(qū)動一個關節(jié)——位置及速度驅(qū)動。位置驅(qū)動的作用力像彈簧,在此關節(jié)試圖使用您指定的硬度及阻尼屬性到達一個給定位置。速度的作用如同一個馬達,在此您指定您想要的速度以及用于達到此速度的最大的力。
bLinearXPositionDrive | 在線性X軸上允許位置驅(qū)動。 |
bLinearXVelocityDrive | 在線性X軸上允許速度驅(qū)動。 |
bLinearYPositionDrive | 在線性Y軸上允許位置驅(qū)動。 |
bLinearYVelocityDrive | 在線性Y軸上允許速度驅(qū)動。 |
bLinearZPositionDrive | 在線性Z軸上允許位置驅(qū)動。 |
bLinearZVelocityDrive | 在線性Z軸上允許速度驅(qū)動。 |
LinearPositionTarget | 如果允許線性位置驅(qū)動,這是關節(jié)試圖達到的目標相對位置。 |
LinearVelocityTarget | 如果允許線性速度驅(qū)動,這是關節(jié)試圖達到的目標相對速度。 |
LinearDriveSpring | 如果線性位置驅(qū)動被激活,這是驅(qū)動彈簧的硬度。 |
LinearDriveDamping | 如果線性位置驅(qū)動被激活,這是驅(qū)動彈簧的阻尼。 |
LinearDriveForceLimit | 如果線性速度驅(qū)動被允許,這是用于獲得LinearVelocityTarget的最大的力。 |
bSwingPositionDrive | 在擺動軸上允許位置驅(qū)動。 |
bSwingVelocityDrive | 在擺動軸上允許速度驅(qū)動。 |
bTwistPositionDrive | 圍繞twist(扭曲)軸允許位置驅(qū)動。 |
bTwistVelocityDrive | 圍繞twist(扭曲)軸允許速度驅(qū)動。 |
bAngularSlerpDrive | 高級選項。指定將驅(qū)動作用于關節(jié)的方法。 |
AngularPositionTarget | 如果角度位置驅(qū)動被激活,這是關節(jié)試圖達到的目標相關四元數(shù)。 |
AngularVelocityTarget | 如果角度速度驅(qū)動被激活,這是關節(jié)試圖達到的目標相對角速度。 |
AngularDriveSpring | 如果角度位置驅(qū)動被激活,這是驅(qū)動彈簧的硬度。 |
AngularDriveDamping | 如果角度位置驅(qū)動被激活,這是驅(qū)動彈簧的阻尼。 |
AngularDriveForceLimit | 如果角度速度驅(qū)動被激活,這是用于獲得AngularVelocityTarget的最大扭矩。 |
球窩結(jié)合是一種簡單的關節(jié),它所有的線性部分被鎖定且所有角度部分都是自由的。
與球窩結(jié)合一樣,一個hinge(鉸鏈)的所有線性部分是鎖定的,但是其擺動部分也被鎖定,故它能繞著它的twist(扭曲)軸旋轉(zhuǎn)。
Prismatic(棱柱)關節(jié)3個線性自由度中有2個被鎖定,且其所有角度自由度也被鎖定。這允許沿著一個“軌道”滑動但不能旋轉(zhuǎn)。
您可以使用驅(qū)動設置模擬關節(jié)摩擦。打開目標速度為零的速度驅(qū)動,并使用LinearDriveForceLimit與AngularDriveForceLimit設置控制該關節(jié)阻礙運動的強度。
您應該首先創(chuàng)建一個球窩關節(jié),用一個關節(jié)來模擬像Punchbag(沙袋)的東西(一個球位于垂直桿頂部,該垂直桿可以被敲擊)。然后打開swing(擺動)位置驅(qū)動并調(diào)節(jié)AngularDriveSpring與AngularDriveDamping,直到被推動時順利底繞著垂直位置擺動。您可以設置擺動限制,以確保它不會過度彎曲。
朱峰社區(qū)網(wǎng)頁版(手機掃描-分享-添加到屏幕)
朱峰社區(qū)微信公眾號(微信掃一掃-關注)
未知用戶
2005-2025 朱峰社區(qū) 版權(quán)所有 遼ICP備2021001865號-1
2005-2025 ZhuFeng Community All Rights Reserved
VIP