【建議100個unity插件】untiy 反向動力插件- FinalIK插件的使用介紹 建立到一半

Unity Final IK 插件獲取

https://assetstore.unity.com/packages/tools/animation/final-ik-14290

免费学习版: https://pan.baidu.com/s/1ooqwjYT9E0YD-SAfgOD6GQ?pwd=sdjr 提取码: sdjr

 

Unity Final IK 簡介及關鍵腳本 FullBodyBipedIK 講解

 

預覽查看效果

  • 導入 Final IK SDK,導入人形模型
  • 給人形模型根節點新增 FullBodyBipedIK 腳本
  • 設定此腳本的左手權重為 1,在 Scene 視圖會看到藍色方塊,運行遊戲,拖曳它即可看到效果。
預覽查看效果

 

FullBodyBipedIK 屬性講解

 

全局屬性

  • FixTransform: 刷新 IK 位置(不勾選 Animator 和該選項時,人物像太空運動。)
FixTransform: 刷新 IK 位置(不勾選 Animator 和該選項時,人物像太空運動。)
  • Reference: 裡面為骨骼節點,範例作用,你可以取得該節點上的碰撞,作為槍擊判斷等。
  • Weight: 權重,此地方權重為整體權重。
  • Iterations: 更新其他節點的頻率。當你不用時就可改為0,這樣拖動手,只有手動,手臂身體等就不跟著刷新去運動了。

 

Body

Body
  • UseThighs: 使用大腿肌肉,預設勾選,動作會緩衝更柔和,不勾選和勾選效果如下。

 

  • Mapping:
    • Spine: 是腹部(胸腔)那一塊位置。權重應為 1,這樣旋轉拉伸時,胸腹會跟著身體動,胸腹不會因為其他位置變化而變形了。
    • MaintainHeadRot: 頭部預設動畫佔的權重。為 0 時,頭部不跟著其他位置動,保持原動畫。 1 時,很柔和了

 

Arm

Arm

 

  • Chain:
    • pull: 左右手,一個在前,一個在後(向前向後都到極限,類似伸直手臂狀態)。身體在中間。誰的 Pull 越大,整個身體越拉向誰(當然會跟著變形匹配動作),接近誰。
    • Reach: 左右手,一個在前,一個在後(向前向後都到極限,類似伸直手臂狀態)。胸腔部分在中間。誰的 Reach 越大,胸腔越拉向誰,接近誰。
    • Push: 左右手,一個在前,一個在後(蜷縮著手臂,類似冷,螳螂手半縮在胸前一樣)。胸腔部分在中間。誰的 Push 越大,身體就被推向後方。
Push: 左右手,一個在前,一個在後(蜷縮著手臂,類似冷,螳螂手半縮在胸前一樣)。胸腔部分在中間。誰的 Push 越大,身體就被推向後方。
  • Smoothing: 平滑運動的方式
  • BendGoal: 手肘(大臂和小臂關節處)外翻朝向。新建一個空物體,賦值給它。控制這個空物體的位置,手肘指向這個位置。
  • MappingWeight: 父骨骼權重。預設 1,當為 0 時,拖曳手,手臂不會反向計算運動,只會筆直運動,身體其他位置會計算運動。
  • MaintainHandRot: 手部預設動畫佔的權重。為 0 時,全由 IK 計算動畫,很柔和。當為 1 時,是預設動畫(前提手臂處的權重要為 0) 有點暴力。 

 

代碼控制 

  • 總權重
    GetComponent<FullBodyBipedIK>().solver.SetIKPositionWeight(1); 
  • 權重: Pull、Reach:設定左右 Arm、左右腿
    GetComponent<FullBodyBipedIK>().solver.SetChainWeights(FullBodyBipedChain.LeftArm,1, 1); 
  • 權重: Body 位置、左右手、腳、肩膀、大腿
    Thigh GetComponent<FullBodyBipedIK>().solver.SetEffectorWeights(FullBodyBipedEffector.Body,1, 1);

 

 

Unity Final IK 腳貼合平面 GrounderFBBIK 介紹

 

本節目標

讓人物腳貼合地面,下方是本節的效果示範。

讓人物腳貼合地面,下方是本節的效果示範。

 

GrounderFBBIK 原理介紹

此腳本利用射線檢測,判斷前方障礙物高度,若腳能放上去(放上去的高度參數自行設定),則匹配高度。

 

實現步驟

此腳本利用射線檢測,判斷前方障礙物高度,若腳在碰撞、運動條件等事先配置好的前提下,先給人物加入 FullBodyBipedIK ,再加入 GrounderFBBIK。

能放上去(放上去的高度參數自行設定),則匹配高度。

此腳本利用射線檢測,判斷前方障礙物高度,若腳在碰撞、運動條件等事先配置好的前提下,先給人物加入 FullBodyBipedIK ,再加入 GrounderFBBIK。

 

相關屬性講解

相關屬性講解

 

Solver屬性欄:

  • Layers:偵測障礙物的層級。
  • MaxStep:腳能抬到障礙物的最大高度(低於這個高度,腳往上抬。高於,則不抬)。
  • HeightOffset: 腳抬到障礙物上後,再向上偏移的距離。
  • FootSpeed: 腳到達障礙物上方的速度。
  • FootRadius: 腳的碰撞偵測大小。該腳本是利用該圓球碰撞器發射射線,以偵測障礙物。
  • Prediction: 腳跨越的效果。值低的話會有穿模效果,高則沒有。
Prediction: 腳跨越的效果。值低的話會有穿模效果,高則沒有。
  • FootRotationWeight:腳在斜面上時旋轉偏移權重。
  • FootRotationSpeed:腳適配到那個斜面時的速度。
  • MaxFootRotation:在斜面時最大旋轉角度。
MaxFootRotation:在斜面時最大旋轉角度。
  • RotateSolver:人物在斜面走的能力。 (原先我們只在地面走,現在是遊戲中人物在牆上走,腳貼合斜面)
人物在斜面走的能力。 (原先我們只在地面走,現在是遊戲中人物在牆上走,腳貼合斜面)
  • PelvisSpeed:盆骨上下位移的速度。因為當腳移動時,盆骨也會跟著上下移動。
  • PelvisDamper:盆骨位移緩衝值,上下移動會柔和。
  • RootSphereCast:腳射線偵測的距離。若專案中無法偵測到前方障礙物,可設定的大一點。
  • Quality:設定 GrounderFBBIK 的質量
  • Spine:設定腳部運動,對身體其他部位的影響,使運動看起來更自然。

 

 

Unity Final IK 匹配目標 FullBodyBipedIK 與瞄準目標 AimIK

 

匹配目標 FullBodyBipedIK

 

FullBodyBipedIK的作用

實現將身體某部位,配對到某個位置。

例如手持槍 Idle 動畫,原先動畫手沒有握到槍托,現在我們透過這個腳本,讓手匹配到槍托位置。

 

要修改的原動畫

原動畫手和槍匹配的太好了,我們就把槍旋轉一下吧,忽略右手,做下左手匹配到當前槍的位置。

原動畫手和槍匹配的太好了,我們就把槍旋轉一下吧,忽略右手,做下左手匹配到當前槍的位置。

 

實現步驟

人物添加 FullBodyBipedIK 。

  • 左手要放在武器上的位置,(槍物體下方)創造一個空物體。
  • 將 FullBodyBipedIK 的左手權重調至 1,將空物體賦值給 Target,調整空物體的位置,即可看到手跟著過去了。

    將 FullBodyBipedIK 的左手權重調至 1,將空物體賦值給 Target,調整空物體的位置,即可看到手跟著過去了。

 

瞄準目標 AimIK

 

AimIK的作用

讓某部位,瞄準某位置。

例如,讓拿槍的人,瞄準前面的敵人。

 

原效果展示及目標效果

球代表了敵人。

目標1:希望在球移動過程中,人物的槍不斷瞄準球。

目標2:希望一隻手瞄準,一隻手做別的。

球代表了敵人。

 

AimIK 屬性講解

AimIK 屬性講解

 

  • Target:要瞄準的目標
  • PoleTarget:人物的左右傾斜,(放在人物物體裡面)實現讓人物左右傾斜
  • AimTransform:一個物體的方向,比如說槍口指向的方向
  • Axis:用 AimTransform 的哪個軸對準目標。哪個軸對準,哪個值就設定為 1。

軸的方向顏色與 Scene 視圖右上角軸方向顏色一致,這樣你就知道物體哪個軸是哪個方向了

  • PoleAxis:作用類似Axis,控制的是PoleTarget
  • ClamWeight:瞄準權重。建議值0.5,這樣當人物旋轉180度時,瞄準就不會跟過去了,也可自己調這個值。

因為身體不會轉動,計算手跟過去也轉不過去;實際項目上會增加當目標旋轉 45 度時,我們身子就跟過去了。

  • ClamSmoothing:瞄準移動的緩衝值。
  • 2D:也就是 2D 遊戲,這時瞄準就只旋轉 Y、Z 軸了。
  • Tolerance:瞄準偏差值。當小於這個值時,位置計算就停止了。值大時節省性能。
  • MaxIterations:最大迭代,值小一點節省效能。

 

實現步驟

 

目標 1:希望在球移動過程中,人物的槍不斷瞄準球。 

為人物添加 AimIK(此目標不依賴 FullBodyBipedIK )。

  • 按圖示配置:

    • 目標點。
    • PoleTarget。
    • 指向方向。
  • 將盆骨到胸腔的三根骨骼配置到 Bones。

我這邊是 Hips下的 Spine_01、02、03。這三根骨骼剛好在胸腹位置。 Hips 也是骨骼,但位置太靠下了。

將骨骼填進去後,會自動出現這條線。 (當然,也可以把手臂手的骨骼配置進去,這樣瞄準會比較自然)

我這邊是 Hips下的 Spine_01、02、03。這三根骨骼剛好在胸腹位置。 Hips 也是骨骼,但位置太靠下了。
  • 運行效果。

    運行效果。

 

目標 2: 希望一隻手瞄準,一隻手做別的。

  • 為人物添加 AimIK(不依賴 FullBodyBipedIK )。
  • 給 AimIK 配置好目標點、PoleTarget、指向方向。

骨骼只配置肩膀到手的骨骼。

  • 這時拖曳球,就看到只有右手去瞄準了,左手就可以幹別的了;例如配合 FullBodyBipedIK ,左手去實現別的功能。

上面我們用 FullBodyBipedIK 實現了左手匹配槍位置,這兒不需要了,別忘了在這裡 FullBodyBipedIK 左手權重改為 0。

 

 

Unity Final IK 手指位置適配 HandPoser

 

本節目標

讓手指擺出不同的動作,比如握槍柄。

不同位置,不同樣子的槍柄。

 

腳本功能講解

 

HandPoser

HandPoser

 

  • PoseRoot: 賦值的為參考的部分。根據該參考的部位,調整自身對應部分。

通俗點講,自身物體為 A,複製一份自身物體為 B(不含 HandPoser),將 B 賦值到 A 的 PoseRoot。 

B 以後的狀態,就是 A 的參考狀態了。 

改變 B 的屬性,例如旋轉,A 對應物體的屬性,也會跟著改變。 (現在只測試出改變 B 的旋轉可以,位移不行)

 

InteractionTarget

畫出手部骨骼節點,方便你的調整。

 

開始適應手指位置

 

我們的目標位置

我們的目標是將下面的右手位置適配到把手上面去。

我們的目標是將下面的右手位置適配到把手上面去。

 

小提示:可鎖定新增了 InteractionTarget 的 B 物體面板,Scene 視窗就一直顯示 B 的骨骼了。

 

適配的思路

要達成目標:指頭貼合到槍托,要操作的內容分為兩部分:

  • 手位置先移動到槍托那兒,旋轉到適當角度。
  • 指頭旋轉抓住槍托。

 

3 FullBodyBipedIK 確定手部的位置

手位置移動、旋轉,用 FullBodyBipedIK 去做。

 

4 完成手指抓住槍托

 

複製新的手

將要變更旋轉屬性的骨骼 A(手),複製新的為 B, 並新增 HandPoser,指定 HandPoser 的屬性 PoseRoot 為 B。

下圖展示的效果,複製的手因為在外面,所以不會跟著人物 Idle 動。

你也可以將複製的手放在和原先的手同級的位置,這樣複製的手顯示的骨骼就跟著人物動了。

將要變更旋轉屬性的骨骼 A(手),複製新的為 B, 並新增 HandPoser,指定 HandPoser 的屬性 PoseRoot 為 B。

 

 

 

以上內容來自遊民星空作者:Agent

 

 

《黑神話: 悟空》全流程攻略!全成就達成條件、戰鬥系統拆解與必點技能推薦

《黑神話: 悟空》全流程攻略!全成就達成條件、戰鬥系統拆解與必點技能推薦|不斷更新 - 亞洲電玩通

《黑神話: 悟空》全流程攻略!全成就達成條件、戰鬥系統拆解與必點技能推薦|不斷更新

 

 

《黑神話:悟空》遊戲評測

評測《黑神話:悟空》!天命人的四年之約,一場場令人驚嘆的勝利 - 亞洲電玩通

評測《黑神話:悟空》!天命人的四年之約,一場場令人驚嘆的勝利

 

 

 

 

本文原創(或整理)於亞洲電玩通,未經作者與本站同意不得隨意引用、轉載、改編或截錄。

特約作家簡介

X
A
Y
B
JamXu的頭像
JamXu
10年遊戲研發
20年遊戲玩家
30年遊戲人生

經中華網龍遊戲 企劃進入遊戲圈,然後被雷打到去學 程式前後端又學了點 設計再 帶帶幾個研發團隊,見證了 3D 渲染技術及遊戲引擎互相進步,也見證了研發代理的更迭與博弈遊戲的興起,再毅然研究起 SEO 網路行銷與 社群廣告投放,深信自研自賣才是最大贏家,期望能為台灣研發重回輝煌時光貢獻一點力量。如果你也有 遊戲夢,歡迎交流認識。


支持贊助 / DONATE

 

亞洲電玩通只是很小的力量,但仍希望為復甦台灣遊戲研發貢獻一點動能,如果您喜歡亞洲電玩通的文章,或是覺得它們對您有幫助,歡迎給予一些支持鼓勵,不論是按讚追蹤或是贊助,讓亞洲電玩通持續產出,感謝。

亞洲電玩通AsiaGameMaster - Steam 遊戲鑑賞家
亞洲電玩通AsiaGameMaster - FB 粉絲專頁
亞洲電玩通AsiaGameMaster - IG 粉絲專頁
亞洲電玩通AsiaGameMaster - Twitter
亞洲電玩通AsiaGameMaster - Yoytube 粉絲專頁
亞洲電玩通AsiaGameMaster - Tiktok

BTC

亞洲電玩通AsiaGameMaster - BTC 鏈贊助地址

bc1psp8nnerlepv56nyfha6mqwnp3yr7qqjdw44c6qt5lx5r2urma7fqykxvwj

 

ETH

亞洲電玩通AsiaGameMaster - ETH 鏈贊助地址

0xB2231557bc418201922DD7C2673ec97E67E35F83

 

TRON

tron-qrcode亞洲電玩通AsiaGameMaster - TRON 鏈贊助地址

TAomNj4L6vMJuaJmbWUdmT1uAWYPf9vDjp

延伸閱讀