五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網 會員登陸 & 注冊

Blender骨骼綁定基礎教程及其原理

2022-04-01 21:19 作者:krosshj  | 我要投稿

從父子關系說起

在Blender中,任意兩個物體原本都是孤立的,它們相互不干擾,各自移動各自的,各自旋轉各自的。

那么如何使一個物體的移動跟隨(服從)另一個物體呢?其實很簡單,只需要將物體P設置成物體C的父親(parent)就可以了。

在Blender中,先選中兒子,再選中父親,按 Ctrl + P,選擇 Object 即可。可以看到兩個物體之間有一個連線,表明它們已經建好了父子關系。

另外我們可以在右側的大綱視圖中看到兩個物體已經變成上下級的層級關系了。

現在,我們就可以通過挪動Cube.P物體來操控Cube.C

父子關系是可以嵌套和組合的,父親只能有一個,但是兒子可以有很多。如下圖所示,構建了一個這樣的父子關系,可以仔細琢磨一下這個關系。

上圖的關系配合下面這個動圖看效果更佳。

運用上面這些東西,就可以創(chuàng)建一些簡單的機械臂結構了。

骨骼的引出

如上圖所示,僅使用父子關系,似乎也可以創(chuàng)造出手臂的活動結構,那為什么需要骨骼呢?在這里,其實你會發(fā)現,上述所有的活動結構都是多個孤立對象組合在一起的,換句話說,每個可以活動的部件都是一個獨立的mesh(網格體)。

那么如果整個手臂,或者整個角色是一整個mesh,怎么讓它的一部分活動起來,而另一部分不動呢?

mesh的本質就是由一堆點(vertex)構成的,如果我們可以讓其中的一部分點移動起來不就好了嗎?

那么怎么讓一個mesh中的一部分點移動起來呢?我們需要一個指導這些點如何移動的物體,沒錯,我們需要一個這些點的parent!在3D建模的世界里,頂點仿佛就是人身上的肉和皮膚,而指導這些肉如何運動的就是骨骼,這個形象的類比應該也就是骨骼這個詞在3D世界中出現的來源吧。

骨骼就是這樣的一個物體,它不是網格體,但是它是一個可以指導網格體上某些頂點移動,換句話說,骨骼就是頂點的父親。

頂點與骨骼的聯系

那么,如何建立頂點與骨骼的聯系呢?軟件怎么知道哪些頂點應該被哪個骨骼所影響呢?

這就需要使用頂點組了。頂點組顧名思義就是把一堆頂點放在一起,讓他們成為一個組。而且,某一個頂點還可以同時存在與多個組里。

這是一個普通的平面,我們對它進行幾次細分,得到下面這個情況

我們在右側的面版里,找到頂點組(Vertex Groups),點擊右側的加號,新建一個頂點組,給它安排一個名字,這里我取的是右上角的頂點組

此時此刻,它還是一個空的組,看見下面的 Assign(賦值/賦予/分配的意思)和Remove(移除)按鈕了嗎?在編輯模式下,我們選中一些點,然后點擊 Assign,就可以將選中的點賦予到這個組里面了。

這樣即使取消選擇狀態(tài),我們只需要通過頂點組,點擊Select,就可以選中這個組里面的所有頂點,非常的方便。

現在,我們來實際建立起骨骼,看看骨骼與頂點,頂點組之間是怎么聯系的。

我們先建立一個這樣的圓柱體,中間的楞細分一下。假設它是一個手臂,把它的底部移動到大致與地平面對齊。

接下來,我們在對象模式下,新建一個 Armature -> Single Bone

這個時候,你可能什么也看不見,沒關系,可能是圓柱體把骨骼擋住了,按下 Alt + Z 開啟透顯模式,就可以看見了。

在右側的屬性面板,可以看到骨骼特有的三個小面板,如下圖所示,我來說明一下我的理解,不一定對,第一個小人一樣的圖標是表示整個骨架,里面有整個骨架的屬性設置,一個骨架包含多個骨骼嘛。

第二個骨頭的圖標是指當前選中的這跟骨骼的屬性。

第三個藍色的骨頭上面纏繞了一個傳送帶的圖標,是和骨骼約束有關的屬性。

我們可以在整個骨架的屬性中,找到 Viewport Display,里面有個 In Front ,也就是始終在前面顯示,這樣,我們的骨骼永遠顯示在最前面(不會被其他物體遮擋啦,哪怕它真的被遮擋)

另外,我們把 Names 也勾上,這樣就可以看到每個骨骼的名字了!這會非常的有用。

接下來選中骨骼,然后進入編輯模式,擠出一段骨骼,變成下面的樣子。順便,我們把名字也改一下,下面的叫BoneA,上面的叫BoneB。我希望用兩個骨骼來控制整個圓柱體模型,就像手臂一樣。

我們先來查看一下圓柱體的頂點組,你會看到,它是空的,沒有任何頂點組

接下來就是神奇的時刻,我們先選中圓柱體對象,按住shift,再選中骨架,按 Ctrl + P,選擇 With Automatic Weights(自動權重),執(zhí)行了這一步之后,骨骼已經可以控制我們的網格體了(就是整個圓柱)

姿勢模式(Pose Mode)

在對象模式下,僅點擊整個骨架對象,然后按Ctrl + Tab進入姿勢模式,也可以在左上角的模式切換欄那里改。因為骨骼對象,只有對象模式,編輯模式,姿勢模式,三個模式,按tab是進入編輯模式,所以按Ctrl+Tab就直接進入姿勢模式了,而普通的網格體有更多的模式,按Ctrl+Tab則是彈出輪盤讓我們選擇。

進入姿勢模式后,我們就可以擺弄我們的骨骼了。

自動權重為網格體創(chuàng)建了與骨骼同名的頂點組

這時,我們選中圓柱體,看看它的頂點組信息,你會發(fā)現,里面有兩個和骨骼名字一摸一樣的頂點組。一個叫BoneA,一個叫BoneB。

選擇一下這些頂點組,看看它們都包含了哪些頂點。可以看到,BoneA 是包含了下半部分的,BoneB 則是包含了上半部分的頂點,這剛好與骨骼的位置相關。

這就是自動權重所做的工作,如果我們是一個完整的人體模型加上完整的人體骨骼,比如有50個骨骼,自動權重后,就有50個與骨骼名字相同的頂點組。這就是骨骼操作頂點組的秘密了。


何為權重

我們知道骨骼操縱頂點的原理了,那骨骼具體是怎么影響頂點的位置的呢?影響多少呢?這就需要權重信息來幫助完成這項工作。

先看下圖,這里有4個頂點,分別命名為1,2,3,4,有兩個骨骼分別是A,B,頂點們被分配到兩個頂點組A,B


很顯然,屬于頂點組A的頂點當然會被骨骼A影響,也就是1,2會被影響,3和4肯定是不受影響的。這是有和無的區(qū)別。

雖然1和2都在A里面,但是它們收到影響的程度都一樣大嗎?還不一定,這就是權重起的作用,權重就是一個0~1之間的數值,類似0.23,0.654之類的,表示受影響的程度,也就是權重二字的本意了。

就拿上圖來說,如果頂點1和2的權重都是1,那么它們是100%受骨骼A影響,如果頂點1和2的權重都是0,那么雖然它們在這個組里,但是受影響的程度都是0,不管怎么動骨骼,它們也不會動。

在Blender中,可以使用Ctrl+Tab,選擇Weights Paint模式來查看權重。當前選中那個頂點組,就會顯示這個頂點組每個頂點的權重信息,約靠近紅色,表示約接近1,約靠近藍色,表示約接近0.

我們可以使用筆刷來修改權重,滿足我們的需求。

我們把BoneB的權重修改到只有上面一點點

然后在姿勢模式中擺動它,如我們所料,只有頂部那一些頂點會隨著移動了。

后記

寫這篇文章主要是想解釋一下骨骼操控網格體背后的原理,其實并不復雜,很佩服當初設計出這些技術方案的先驅者們。也希望本文能對你有所幫助:)



Blender骨骼綁定基礎教程及其原理的評論 (共 條)

分享到微博請遵守國家法律
鸡东县| 南汇区| 潜山县| 四会市| 岳池县| 德阳市| 黄骅市| 紫金县| 思茅市| 铜梁县| 涿鹿县| 阜城县| 霸州市| 和硕县| 安西县| 青海省| 剑河县| 芦溪县| 恩平市| 莱芜市| 文成县| 宁阳县| 友谊县| 苗栗市| 连平县| 安塞县| 弋阳县| 惠安县| 游戏| 合江县| 贡山| 增城市| 准格尔旗| 隆林| 泗水县| 谷城县| 邢台市| 普安县| 高邮市| 板桥市| 江西省|