在虛擬裝配應(yīng)用中,用WISEGLOVE數(shù)據(jù)手套實現(xiàn)擰螺絲動作
2021-3-7 22:11:43??????點擊:
遇到有客戶在使用Wiseglove數(shù)據(jù)手套開發(fā)機械裝配相關(guān)應(yīng)用時,要實現(xiàn)數(shù)據(jù)手套擰螺絲的動作,客戶認為wiseglove7s+手套擰了一個角度,但是螺絲并沒有按照預(yù)想的方向旋轉(zhuǎn)。我們經(jīng)過研究后,認為實現(xiàn)該功能需要具備以下條件:
1. 手模型與螺絲有碰撞觸發(fā)
2. 數(shù)據(jù)手套有抓取動作
3.數(shù)據(jù)手套有釋放動作
使用了Unity3d的觸發(fā)器檢測手與物體的碰撞狀態(tài)。
private void OnTriggerEnter(Collider other)
{
print("Enter trigger");
Oldpos = Leftobject.transform.position;
}
private void OnTriggerStay(Collider other)
{
//手套抓取
if(wiseglove.grasp)
{
print("grasp");
float yAixsval = Vector3.Angle(Vector3.ProjectOnPlane(Leftobject.transform.position, Vector3.up),Vector3.right) - Vector3.Angle(Vector3.ProjectOnPlane(Oldpos,Vector3.up),Vector3.right);
Vector3 deltaAngles = new Vector3(0,uAxisval,0);
transform.eulerAngles +=deltaAngle;
Oldpos = Leftobject.transform.position;
}
else {
print("open hand");
Oldpos = Leftobject.transform.position;
}
}
private void OnTriggerExit(Colloder other)
{
print("Exit");
Oldpos = Leftobject.transform.position;
}
當(dāng)然如果需要螺絲沿著平面的法向隨著旋轉(zhuǎn)有位移,似乎也不難~~
這里主要的技巧就是: Vector3.ProjectOnPlane( Vector3 vector,Vector3 planeNormal) 得到投影向量 為vector到以planeNormal為法向量的平面上。求的是一向量與一平面的夾角。這也是讓物體沿著指定軸旋轉(zhuǎn)的關(guān)鍵所在。
- 上一篇:虛擬現(xiàn)實技術(shù)在通用航空飛行模擬器中的應(yīng)用 2021/3/8
- 下一篇:unity3d中利用網(wǎng)格+貼圖繪制血條/進度條 2021/3/7


