在虛擬裝配應用中,用數據手套實(shí)現擰螺絲動(dòng)作
遇到有客戶(hù)在使用Wiseglove數據手套開(kāi)發(fā)機械裝配相關(guān)應用時(shí),要實(shí)現數據手套擰螺絲的動(dòng)作,客戶(hù)認為wiseglove7s+手套擰了一個(gè)角度,但是螺絲并沒(méi)有按照預想的方向旋轉。我們經(jīng)過(guò)研究后,認為實(shí)現該功能需要具備以下條件:
1. 手模型與螺絲有碰撞觸發(fā)
2. 數據手套有抓取動(dòng)作
3.數據手套有釋放動(dòng)作
使用了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; }
當然如果需要螺絲沿著(zhù)平面的法向隨著(zhù)旋轉有位移,似乎也不難~~
這里主要的技巧就是: Vector3.ProjectOnPlane( Vector3 vector,Vector3 planeNormal) 得到投影向量 為vector到以planeNormal為法向量的平面上。求的是一向量與一平面的夾角。這也是讓物體沿著(zhù)指定軸旋轉的關(guān)鍵所在。
怎么樣,小伙伴們會(huì )了嗎? 感謝關(guān)注Wiseglove, 我們將一如既往地把我們?yōu)榭蛻?hù)解決的技術(shù)問(wèn)題發(fā)布到我們的官網(wǎng),來(lái)分享關(guān)于數據手套的技術(shù)和心得。
- 上一篇:Intel RealSense D435i深度相機開(kāi)發(fā)基礎 2019/7/2
- 下一篇:UNITY3D 相機特寫(xiě)鏡頭的方位設置 2019/6/13