多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > Leap Motion 之Unity 開發指南(一. 基本概念與制作手預制件)

Leap Motion 之Unity 開發指南(一. 基本概念與制作手預制件)

來源:程序員人生   發布時間:2016-07-20 09:10:19 閱讀次數:4894次

LeapMotion 之Unity開發指南(1.基本概念和手的預制件)

【敘言】

最近用Leap Motion + 國產的3Glass眼鏡構建了房地產、數字礦山的1些利用,感覺這是很經濟的1個VR架構方案,比用Oculus和HTC的硬件要省錢很多,并且效果也不錯。

在行業VR利用中,其實重在培訓教育、生產安全的仿真演練上,更多地通過1些UI互動、基礎性的手勢(比如開關裝備、拾起滅火設備等)來進行交互,這些其實不1定需要非常昂貴的激光定位裝備、復雜的硬件套件才可實現,而手勢辨認在未來也是1個趨勢。

所以將1些開發積累整理下來,希望不斷地能在這個領域中學習領會,終究能為行業客戶創造1些實用的價值。  歡迎大家和我1起交換,QQ:115913892 

1.  安裝

1.      打開官網:https://developer.leapmotion.com/get-started

2.      先要下載和安裝LeapMotion的驅動程序

         

注:我買的是2代Leap Motion,所以在Win10下 不支持V2 Desktop的開發驅動,選擇左面的。(注意是開發驅動,而非App利用)

                 

我下載的最新版本是3.1.2,解壓后以下圖。


運行EXE文件,根據提示安裝驅動,實際上這將安裝了1個駐留程序在系統托盤中,并且生成1個自動啟動的系統服務Leap Service,在控制面板中可查看它,當遇到Leap Motion不工作,或托盤中圖標顯示黑色時,可檢查1下這個服務是不是正常。

驅動程序與LeapService通訊,讀取硬件層面3D攝像頭跟蹤的手勢數據,上層類的利用(如Unity,虛幻4,Java等)則與驅動程序(C++寫成)通訊。

安裝成功后,能看到LeapMotion兩個攝像頭和中間LED燈都正常亮起,表明處于工作狀態,這時候可用自動安裝的Leap App Home利用來測試1下,通過它還可下載1些官方的例子。

3.      下載準備好各類Unity包

到https://developer.leapmotion.com/unity下載所需的包。


其中CoreAssert是核心包,其他都是封裝好的各類功能包,在實戰篇中會介紹。

2.  基本概念

1.   坐標系統

Unity使用左手坐標,LeapMotion使用右手坐標(所以,Z軸是相反的)。

Unity以米為單位,LeapMotion使用毫米。LeapMotion配備的Plugin腳本內部對坐標系統進行了轉化,行將單位和坐標轉化為Unity的標準。

 

注意:在Unity中,1定要從LeapServiceProvider中取得Frame對象,否則在幀中的數據(TrackingData)將還使用Leap的坐標系統。LeapServiceProvider解析了Scaling,Rotation,Translation的變換.

2.   手勢跟蹤

LeapMotion使用了光學傳感器和紅外光組件。傳感器的FOV為150度。頂部0.03~0.06米為有效的跟蹤范圍。


最好的工作環境是可產生清晰的、高對照度對象輪廓的光照環境。

 

HMD模式下(頭盔綁定的模式 ),跟蹤算法被優化成對不同的視角下辨認手勢(大概的意思多是,你頭盔多動動,辨認得更好1些),比放在桌面固定不動要更好1些。

 

3.   手(Hand Assert)

(1)表示方法

在預制件目錄下,分成圖形(圖元)和物理兩組腳本和預制件,可以用其中各1來組合表示手。這1處1定要理解,官方的Unity包里給了1些場景例子,可以研習1下。

從概念上手被辨別成Graphic和Physic兩種組件構成,前1即是圖元,主要是顯現手的外觀,后1主要表現手的物理特性(如剛體、碰撞)。

也能夠沒有物理組件,這樣就不能產生物理特點了。

(2)創建手的方法

有幾種創建手的方法:

  •  單獨創建手的不同部位,比如手掌、胳膊、手指;
  •  創建綁骨骼的Mesh,驅動關節和骨骼來表示手的動作;
  •  用腳本編寫來表示手的圖形(即完全用腳本來繪制)。

(3)1個例子

下圖是1個典型的手的例子,1個HandController下掛4個子對象,分別是圖元左右手,物理左右手。


3.  創建你自己的手Prefab

注:隨著官方例子創建1個手,可能其實不是很實用,但有助于理解手的預制件和原理組成。

你可以創建類似于已提供的Unity包里的手預制件,用你自己的圖形來表示手,同時定制自己的手的行動(基于已提供好的代碼)。

我們要創建的這類手稱為“離散手預制件Discrete Hand Prefabs”,意思是手上每一個部位都是單獨的Game Object,都有其單獨的位置和方向信息。在Core assert 包里,機器人的手即是這樣的“離散預制件”。下面介紹了通過使用Unity自帶的幾何體(圓柱、圓)來創建Prefab。


  • 每個圖形元素都放在1個空對象下。手和手指的腳本負責更新空對象的Transform。每一個圖元的Local Transform的位置和方位允從于父對象。
  • 移除圖形手上的所有碰撞體,否則將引發RigidHand的碰撞反彈。
  •  通常你不需要同時具有關節和骨頭。他們不是相互獨立的。本教程中我們同時將關節和骨頭加進模型中只是為了演示他們是如何工作的。
  • 類似的,你的模型也沒必要同時具有掌骨和手掌。掌骨是被手掌包圍的,并且不能單獨地動作。本教程同時具有2者(為了演示)。
  •  對手模型使用真實世界的尺寸。手和手指的腳本不能獨立辨認相干部位。整體的Scale被賦值成LeapHandController對象的scale(由于是必須掛在HandController下)
  • 由于采取了非常抽象和對稱的設計,所以像在本教程中,能使用一樣的Prefab表示左手和右手。但大多數的模型還是應使用不同的prefab表示左右手,這樣能更好地調劑Local Transform。


首先,我們需要創建1個手指的Prefab,并且使用它來創建手Prefab。

創建手指Prefab

1.     創建1個場景.

2.     新建1個空對象,命名KnobbyFinger

3.     創建骨頭

1)     新建1個空對象到KnobbyFinger下,命名Metacarpal  (掌骨)

2)     新建1個CylinderMetacarpal,命名Tube.在創建你自己的手時,將此Cylinder替換為你自己的圖形對象(或Obejct

3)     移除碰撞體組件,否則RigidHand碰撞體將會與它反彈。

4)     設置X Rotation90

(最好設置成Top視野來視察)

5)     Tube XZScale設置成0.0033毫米)。之所以這樣設置,是由于要使用帶皮膚的骨頭,真實的手指要更胖1些。

6)     設置Tube YScale0.03434毫米)。這個決定了手指的長度。

尺寸必須使用真實世界的,轉化為米。Y的長度應為68mm的1半,這是由于Cylinder2個單位高。所以我們要Scale縮減50%。.

7)     復制Metacarpal,命名Proximal,Tube Y-Scale設置為0.02

8)     再復制Metacarpal,命名Intermediate,TubeY-Scale設置為0.01

9)     再次復制Metacarpal,命名Distal,TubeY-Scale0.007。

4.     創建關節

記住:你沒必要都需要骨頭和關節

1)     新建空對象到KnobbyFinger,取名MetacarpophalangealJoint(掌指關節)

2)     新建1個圓到關節,取名Knob.

3)     移除碰撞體。

4)     Knob所有的Scale設置成0.011厘米).

5)     復制MetacarpophalangealJoint更名為ProximalinterphalangealJoint.

6)     復制MetacarpophalangealJoint更名為DistalinterphalangealJoint.

6.     增加SkeletalFinger 腳本組件到KnobbyFinger

7.     拖動每一個關節和骨頭到腳本中的相應變量處。

具體以下:

Bones:

o  0 -Metacarpal

o  1 - Proximal

o  2 -Intermediate

o  3 - Distal

Joints:

o  0 - MetacarpohalangealJoint

o  1 -ProximalinterphalangealJoint

o  2 -DistalphalangealJoint

8.     將KonbbyFinger做成預制件。

創建手Prefab

(創建好手指Prefab后)

1.     創建空對象,取名KnobbyHand.

2.     增加SkeletalHand 腳本到 KnobbyHand.

3.     腳本變量Handedness設置成“Either.” (如果你的手是不對稱的,設置成 “Right” or “Left”.)

4.     拖動5個KnobbyFinger Prefab得手中,命名為:Thumb, Index, Middle, Ring, and Pinky.

5.     對每一個手指,設置Finger類型為相對應的類型(SkelatalFinger腳本組件中)。

6.     拖動手指到KnobbyHand 的SkeletalHand 腳本中相應的Fingers變量上.

Finger element order:

o  0 - Thumb

o  1 - Index

o  2 - Middle

o  3 - Ring

o  4 - Pinky

7.     拇指是特殊的,沒有Metacarpal. 因此,編輯Thumb,在bone數組中移除bone( element 0 ) . 刪除Metacarpal子對象.

8.     增加手掌Add the palm:

如果沒有圖形元素,你可以在KnobbyHand的SkeletalHand腳本變量Palm,wrist,forearm先留為空白。手掌也可通過RigidHand來表示,如果你不使用palm,你可以修改RigidHand的副本,但要移除rigid body和collider。

1)    增加1個空對象到KnobbyHand.取名Palm.

2)    增加1個Cylinder Palm.取名 Disc.

3)    移除Collider.

4)    設置Disc scale (.085, .0015, .085)..

5)    拖動PalmSkeletalHand腳本的Palm變量中

9.     增加手段:

1)    增加1個空對象到KnobbyHand,取名Wrist.

2)    增加1個圓到Wrist.取名 Ball.

3)    移除Collider.

4)    設置Ball scale(.03, .03, .03).

5)    拖動WristSkeletalHand腳本WristJoint變量中.

10.  增加胳膊

1)    增加1個空對象Arm.

2)    增加1個CylinderRod.

3)    移除Collider.

4)    設置Rodx rotation為: 90.

5)    設置Rodscale(.02, .12, .02).

6)    拖動 ArmSkeletalHand腳本的Forearm

12. KnobbyHand創建為prefab.

KnobbyHand的結構應為下圖所示:


測試你的手

1.     新建1個LeapHandController prefab到場景中,以便交互區域是在攝影機的FOV內。

2.     設置以下層次結構


3.     LeapHandControllerHandPool中設置:

.

4.     運行關卡,視察你的手

如果RigidHand組件在Scene窗口中可見,但抖動或反彈,確保你移除圖元手部位的所有碰撞體。

如果手指堆疊或移動在1個手指的控制下,檢查手指SkeletalFinger 腳本的手指類型設置。

如果你的手混雜成1大團的亂糟糟模樣,那是每一個子元的Scale設置的太大了,記得Unity的單位是1米,1個典型的手寬度是8.5厘米(或表示成Unity transform的Scale是0.085)。如果想使手更大1些(在游戲里看),增大LeapHandController的Scale.

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 精品国产福利片在线观看 | 欧美jizz| 国产视频一区二 | 日本高清com | 欧美成人777 | 亚洲视频一二区 | 色综合小说网 | 亚洲成人第一 | 香蕉超级碰碰碰97视频在线观看 | 国产h视频免费观看 | 第九色激情 | 三级欧美在线 | 国产日韩亚洲欧洲一区二区三区 | www.毛片| 亚洲精品人成网在线播放影院 | 国产成人精品无缓存在线播放 | 亚洲第一页在线观看 | 亚洲福利一区二区 | 亚洲性网 | 黑人40厘米全进去xxxx猛交 | 亚洲精品久久久久久下一站 | 精品三级视频 | 亚洲好逼 | 成人一级网站 | 伊人色影院 | 男女上下爽无遮挡午夜免费视频 | 在线成h人视频网站免费观看 | 欧美 日韩 亚洲另类专区 | 国产番号 | 国内精品不卡一区二区三区 | 黑人猛交 | 亚洲天天综合 | 亚洲一区视频 | 国产欧美另类久久精品91 | 久久www免费人成_看片高清 | 一级做a爰片性色毛片2021 | 最近中文字幕资源8 | 在线成人免费观看国产精品 | 黑人双渗透 | 亚洲欧美成人综合在线 | 国产人做人爱免费视频 |