日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

來源:程序員人生   發(fā)布時間:2016-07-20 09:10:19 閱讀次數(shù):4912次

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

【敘言】

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

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

所以將1些開發(fā)積累整理下來,希望不斷地能在這個領(lǐng)域中學(xué)習(xí)領(lǐng)會,終究能為行業(yè)客戶創(chuàng)造1些實用的價值。  歡迎大家和我1起交換,QQ:115913892 

1.  安裝

1.      打開官網(wǎng):https://developer.leapmotion.com/get-started

2.      先要下載和安裝LeapMotion的驅(qū)動程序

         

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

                 

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


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

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

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

3.      下載準備好各類Unity包

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


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

2.  基本概念

1.   坐標系統(tǒng)

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

Unity以米為單位,LeapMotion使用毫米。LeapMotion配備的Plugin腳本內(nèi)部對坐標系統(tǒng)進行了轉(zhuǎn)化,行將單位和坐標轉(zhuǎn)化為Unity的標準。

 

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

2.   手勢跟蹤

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


最好的工作環(huán)境是可產(chǎn)生清晰的、高對照度對象輪廓的光照環(huán)境。

 

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

 

3.   手(Hand Assert)

(1)表示方法

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

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

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

(2)創(chuàng)建手的方法

有幾種創(chuàng)建手的方法:

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

(3)1個例子

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


3.  創(chuàng)建你自己的手Prefab

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

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

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


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


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

創(chuàng)建手指Prefab

1.     創(chuàng)建1個場景.

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

3.     創(chuàng)建骨頭

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

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

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

4)     設(shè)置X Rotation90

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

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

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

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

7)     復(fù)制Metacarpal,命名ProximalTube Y-Scale設(shè)置為0.02

8)     再復(fù)制Metacarpal,命名IntermediateTubeY-Scale設(shè)置為0.01

9)     再次復(fù)制Metacarpal,命名DistalTubeY-Scale0.007

4.     創(chuàng)建關(guān)節(jié)

記住:你沒必要都需要骨頭和關(guān)節(jié)

1)     新建空對象到KnobbyFinger,取名MetacarpophalangealJoint(掌指關(guān)節(jié))

2)     新建1個圓到關(guān)節(jié),取名Knob.

3)     移除碰撞體。

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

5)     復(fù)制MetacarpophalangealJoint更名為ProximalinterphalangealJoint.

6)     復(fù)制MetacarpophalangealJoint更名為DistalinterphalangealJoint.

6.     增加SkeletalFinger 腳本組件到KnobbyFinger

7.     拖動每一個關(guān)節(jié)和骨頭到腳本中的相應(yīng)變量處。

具體以下:

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做成預(yù)制件。

創(chuàng)建手Prefab

(創(chuàng)建好手指Prefab后)

1.     創(chuàng)建空對象,取名KnobbyHand.

2.     增加SkeletalHand 腳本到 KnobbyHand.

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

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

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

6.     拖動手指到KnobbyHand 的SkeletalHand 腳本中相應(yīng)的Fingers變量上.

Finger element order:

o  0 - Thumb

o  1 - Index

o  2 - Middle

o  3 - Ring

o  4 - Pinky

7.     拇指是特殊的,沒有Metacarpal. 因此,編輯Thumb,在bone數(shù)組中移除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)    設(shè)置Disc scale (.085, .0015, .085)..

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

9.     增加手段:

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

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

3)    移除Collider.

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

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

10.  增加胳膊

1)    增加1個空對象Arm.

2)    增加1個CylinderRod.

3)    移除Collider.

4)    設(shè)置Rodx rotation為: 90.

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

6)    拖動 ArmSkeletalHand腳本的Forearm

12. KnobbyHand創(chuàng)建為prefab.

KnobbyHand的結(jié)構(gòu)應(yīng)為下圖所示:


測試你的手

1.     新建1個LeapHandController prefab到場景中,以便交互區(qū)域是在攝影機的FOV內(nèi)。

2.     設(shè)置以下層次結(jié)構(gòu)


3.     LeapHandControllerHandPool中設(shè)置:

.

4.     運行關(guān)卡,視察你的手

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

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

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

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 成人午夜毛片 | 嫩草在线视频 | 日产精品久久久久久久 | 国产欧美日韩综合精品一区二区 | 成人黄色片在线观看 | 久久99精品久久久久久久久久久久 | 国产精品久久久久久久免费大片 | 亚州精品天堂中文字幕 | 日韩欧美自拍 | 91在线播放综合 | 国产真人真事毛片视频 | 黄色在线免费看 | 久久日韩| 日韩国产 | 国产精品国产三级国产aⅴ无密码 | 欧美在线一区二区三区 | 国产一区二区三区免费观看视频 | 国产日韩欧美激情 | 黄色片看| 久久久精品久久久久 | 天堂成人网 | 夜夜穞天天穞狠狠穞 | 日本免费啪啪 | 国产精品久久久久久久7电影 | 日韩av手机在线 | 亚洲 欧美 国产 制服 动漫 | 午夜毛片 | 在线一区| 91精品久久久久久久久久入口 | 国产综合视频在线观看 | 黄色大片免费看 | 亚洲黄色一区 | 精品国产高清一区二区三区 | 日韩在线观看一区 | 国产精品国产成人国产三级 | 亚洲专区中文字幕 | 免费看成人吃奶视频在线 | 国产视频一区二区在线观看 | 天天爽夜夜爽夜夜爽精品视频 | 久久中文字幕一区二区 | 久久91精品国产91久久跳 |