Unity3d Final IK 插件的使用


本篇簡單介紹Unity3d 插件 Final IK的使用

Final IK簡介

Final IK是一個反向動力控制插件。(unity版本為5.1及以上版本)

反向動力控制:通俗的將就是通過子骨骼,推導出其所在骨骼鏈上n級父骨骼位置,從而確定整條骨骼鏈的方法。所以你只需要控制子骨骼進行運動操作。

Final IKIK類型

Final IK為我們提供了很多IK類型供選擇,主要的IK類型。

  • Aim IK:是CCD算法的改進版本。可以設置一個目標,使關節末端始終瞄准該目標,可以用於武器的瞄准。它可以消除單一的向前瞄准,甚至可以瞄准角色的背后

  • Biped IK:它可以自動檢測兩足動物的骨骼,而且包括一個頭部IK控制。可以使人物的姿勢更加的自然。

  • CCD IK:將每個關節和末端對齊,使得最后一個骨骼迭代更接近末端。可以用來制作尾巴、機械臂(工業機器人)。

  • FABR IK:類似於CCD IK,但是相較來說每個關節不需要和末端對齊。所以更加的自由。可以用來制作繩索。

  • Limb IK:主要是用於3段手和腿或是其他肢體類型。

  • Look At IK:主要用於旋轉一系列骨骼面向目標物體。

Final IK的使用

手動添加CCD IK

以CCD IK為例

  • 首先我們在3Dmax創建一個簡單的機械臂。

outPut

  • 我們給Axis1添加一個CCDIK 你可以在插件的 RootMotion --> FinalIK --> IK Components 位置找到。然后依次添加三個Bones

outPut

ps: 你也可以通過添加不同的限制屬性來限制每個軸的運動。

outPut

如圖我們給Axis2添加了一個角度限制,限制它只能在熒光區域進行旋轉。

outPut

  • 最后我們創建一個腳本來控制IK。

using UnityEngine;
using System.Collections;
using RootMotion.FinalIK;

public class CCD : MonoBehaviour {

	CCDIK ccdIK;

    // 獲取ccdIK 
	void Start () {
		ccdIK = GetComponent<CCDIK> ();
	}
	
	// 設置ccdIK解算器的x 坐標為 -10
	void LateUpdate () {
		ccdIK.solver.IKPosition.x = -10;
	}
}


綁定並運行,我們發現棍子可恥的彎了。

outPut

上面的那個就是IK解算器

運行時添加CCD IK

  • 我們創建一個腳本

然后綁定到我們的棍子上,然后運行它又彎了。


using UnityEngine;
using System.Collections;
using RootMotion.FinalIK;

public class CCD2 : MonoBehaviour {

	Transform obj1;
	Transform obj2;
	CCDIK ccdIK;

	void Start () {
	
	    //給綁定的物體添加一個`CCDIK`
		gameObject.AddComponent<CCDIK>();

        //獲取要添加的其他兩個`bones`
	    obj1 = GameObject.Find ("Axis_2_2").transform;
		obj2 = GameObject.Find ("Axis_2_2/Axis_2_3").transform;
		
		Transform[] tran = new Transform[] {gameObject.transform, obj1, obj2 };
	
		ccdIK = gameObject.GetComponent<CCDIK> ();
		
		// 使用`ccdIK.solver.SetChain()`綁定骨骼
		ccdIK.solver.SetChain (tran,gameObject.transform);
	}

	void Update () {
		ccdIK.solver.IKPosition.x = -2;
	}
}


outPut


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM