數字人C4D角色動畫研究之四:約束Constraint - 4

上面幾節研究父子、PSR、鏡像、目標約束,感覺是不是有點簡單?

下面研究“向上”約束,這個約束理解有點困難。做好準備喲

“向上”約束英文是UP VECTOR (上行矢量)約束

一、什么是矢量呢?我們知道描述客觀物體的量分為標量和矢量兩種:標量是只有大小沒有方向,比如時間(時分秒),質量(千克),長度米等;矢量是既有方向又有大小,比如說速度,力,位移、加速度等,你在用這些有方向的量的時候,不僅要回答大小還有回答方向。矢量在數學上用一個帶箭頭的線表示,箭頭方向為矢量方向,線段的長度為矢量大小。

在三維計算機圖形學中,廣泛使用矢量計算。用矢量大大提高計算效率。在笛卡爾XYZ三維坐標系,描述一個物體從A點(X1,Y1,Z1)移動到B點(X2,Y2,Z2),需要兩組標量坐標,共6個數據,而如果用矢量描述一個矢量足夠“矢量AB”。用標量描述從A到B,你必須關心中間過程,而用矢量不管中間過程,只考慮起點和終點。另外對于在空間三維物體旋轉縮放,如果用矢量描述,建立數組,用矢量矩陣就可以計算完成,非常快捷。

有點跑題了?

二、什么是上行矢量呢?那一定是個有方向的量。

看左圖,ABC三點在空間構成了一個三角面。(三點共面)AB假如為轉動軸--軸向。C點就可以決定這個平面的在空間的朝向,(伸出你的右手,食指尖為A,伸出的大拇指為C,手掌形成一個面)圖中紅色的垂直于AB軸的矢量就是"上行矢量”。

如果C點在YZ平面移動(或上行矢量和AB軸形成的面),三角面ABC方向不會發生變化。

但是,C點如果在其他方向上XY ,XZ平面方向上移動,那么由ABC三點決定的平面就會發生轉動。想象這個面是個“鐵制”三角旗子。

三、如何使用向上約束?

1、?在場景中建立一個“角錐”為A,再建立一個“圓錐”為B,大小和方向調整如下。

2、我們想用B約束A,想讓B的轉動帶著A轉動(A沿著自身Y軸轉動)。為A添加一個約束,改為“向上”約束。

3、把B拖入目標欄,用B的+Z方向(藍色坐標,紅色模型尖頭方向)為上行矢量方向。

4、角錐A的+Y方向為軸向。

5、在軸向選擇 Y+(當然是A的Y+方向了-)。

6、在YZ平面移動紅色的B,發現角錐A不轉動。

7、在非YZ平面移動紅色的A物體,發現黃色的B跟隨A,沿著自身的Y軸轉動,并對著B。

8、在約束章節結束的時候,我們將制作類似下面的一個機械手。機械手手臂用骨骼連接控制,也可以用(父子和XPRESSO控制),機械手轉動“帶動”地盤跟隨轉動,要用到“向上”約束。

四、“目標標簽”和“約束向上標簽”有哪些相同和不同點?

在模型對象右鍵添加--C4D標簽--目標標簽。在那里也有一個上行矢量,如何理解?

還是舉例子說明吧:

1、在場景中建立如下模型,都是基元模型。不是太懶,而是說明問題就行了。

2、控制角錐,為其添加--目標標簽。把頭上的球體拖入目標對象中。

3、角錐立即會用它的+Z(藍色坐標)對著目標--球體。如果球體移動,角錐通過自身轉動,始終用+Z對著球體。這就是是目標標簽最重要的用途。

4、把膠囊拖入上行矢量中。

5、你會發現角錐用+Y(綠色坐標)對著紅色的膠囊,依然用+Z對著球體。

6、你可以這樣想:假設球體不動,由角錐和球體構成一個軸,再通過紅色膠囊組成一個繞著“軸”轉動的虛擬面。而這個虛擬的面是否能轉動,取決于紅色的膠囊的位置。

7、如果紅色的膠囊只在他自己的YZ平面移動,那么這個虛擬平面不會轉動,直接表現為白色的角錐不會轉動。

8、如果紅色的膠囊在其他位置移動(不在YZ平面),那么這個虛擬的面就會轉動,直接表現為白色角錐用+Y對著紅色膠囊。

小結:目標標簽與約束-上行約束標簽之間,有什么共同點和區別點,你自己能否總結出來?

目標標簽應該是向上約束的簡化版,向上約束添加的受控對象會更多,會隨意指定控制軸。

【感悟】

天氣太熱了,不喜歡編寫了.......

每天就喜歡在樹林里“發呆”。

古人說:“急中生智、靜極生慧、寧靜致遠”,沒錯!

如果你每天有一段時間通過靜坐--發呆(進入氣功狀態--處于“無”的境界),像老牛一樣“反芻”,思路反而會泉涌,過去想不明白的事,你會豁然開朗。不信你就試一試!

藝術是“閑”出來的,而“錢”是忙出來的。

我們人類通過“物質文明”提高了效率,節省出來大量”閑暇的時間“;而又通過“精神文明”消耗掉這些“閑暇的時間”。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容