找回密碼
 注冊帳號

掃一掃,訪問微社區

AR醬 Magic Leap開發指南(9)-- 6 DOF(Unity)

0
回復
709
查看
打印 上一主題 下一主題
[ 復制鏈接 ]
排名
2299
昨日變化

34

主題

262

帖子

1514

積分

Rank: 9Rank: 9Rank: 9

UID
156756
好友
11
蠻牛幣
998
威望
0
注冊時間
2016-7-13
在線時間
527 小時
最后登錄
2019-12-2

專欄作家

馬上注冊,結交更多好友,享用更多功能,讓你輕松玩轉社區。

您需要 登錄 才可以下載或查看,沒有帳號?注冊帳號

x
本帖最后由 geekli 于 2019-9-9 20:46 編輯

本部分的教程主要是介紹Magic Leap One的6 DOF能力。我們通過一個小例子來實現這個功能:
  • 為控件初始化6自由度。
  • 接收控件的位置和方向數據。
  • 設計一個像激光束一樣的指針,從控制器開始,延伸2米。


實現效果:


Step 1: 不同版本對Unity設置

不同版本的Unity與Magic Leap 設置我們在之前的文章詳細講過()

Unity 2018.1 (SDK 0.19.0)

1.在Unity中,使用Magic Leap模板創建一個新項目。

2.要從Magic Leap Unity?包導入所有文件夾,單擊Assets > Import Package > Custom Package....包文件通常位于Magicleap\tools\unity\<sdk version>中。

3.點擊File > Build settings。

4.在Build Settings下,如下圖操作:


5.點擊Player Settings。

6.在Publishing Settings下面,設置好從Magic Leap 網站上下載好的證書。對開發人員證書不了解的,可以參考文章:Magic Leap開發指南(1)--開發前準備

Unity 2019.1 (SDK 0.20.0 and later)

在Unity中,使用3D模板創建一個新項目。你必須執行以下步驟:

1.點擊Edit > Preferences > External Tools (Windows), or Unity > Preferences > External Tools (macOS),瀏覽到Lumin SDK文件夾的位置(版本0.20或更高)。注意:這個設置是在Unity編輯器的MLTP版本的Build Settings中的。

2.確保平臺在File > Build Settings中被設置為Lumin。


3.對于NEW with 2019.x 版本,安裝XR Legacy Input Helpers package.
(1)點擊Window > Package Manager
(2)搜索legacy
(3)選擇XR Legacy Input Helpers
(4)點擊右下角對Install或Update按鈕。如下圖所示:


4.點擊File > Build Settings,然后點擊Player Settings 按鈕。

5.對于NEW with 2019.x版本, 在 Settings for PC, Mac & Linux Standalone下面設置:
(1)展開Other Settings > Rendering
(2)清除Auto Graphics APIs for Windows (Windows) or Auto Graphics API for Mac (macOS)復選框。
(3)將Color Space改為Linear
(4)按下+按鈕,如果OpenGLCore沒有出現在Windows圖形api列表下,則添加它。
(5)將OpenGLCore移到列表的頂部。


(6)在提示時重新啟動編輯器。

6.對于NEW with 2019.x版本,仍然在Player settings設置為Lumin,作出以下更改:
(1)展開XR Settings,然后選擇Virtual Reality Supported。注意:如果已選擇Virtual Reality Supported,請清除復選框并再次選擇它。


(2)在XR Settings > Virtual Reality SDKs下,通過單擊+按鈕(如果還沒有)在Virtual Reality SDKs中添加Lumin

(3)在XR Settings下,確保Stereo Rendering Mode被設置為Single Pass Instanced


(4)在Other Settings > Identification下,將Bundle標識符設置為小寫標識符,例如:com.company.test。


(5)在Other Settings > Configuration下,把Scripting Runtime Version設置成.Net 4.x Equivalent


(6)在Publishing Settings下面,設置好從Magic Leap 網站上下載好的證書。

7.點擊Assets > Import Package > Custom Package,導航到MagicLeap/Tools/unity/<v0.20.0 or later>,導入整個MagicLeap.unitypackage。

8.在主Unity窗口中單擊Magic Leap > ML Remote > Import Support Libraries。如下圖所示:


9.對于NEW with 2019.x版本,使用自定義的manifest添加特權和修改API level.模版manifest位于Assets/MagicLeap/Examples/Plugins/Lumin/manifest.xml。復制到Assets/Plugins/Lumin/。本教程中,不需要更改它。

Step 2: 應用程序的輸出姿態

發送到Unity?內置應用程序的輸出值遵循如下所示的frame definition。

其定義如下:

  • 原點位于控制觸控板表面的中心。
  • X軸沿著Touchpad表面指向右側。
  • Y軸指向“上”,垂直于X和Z。
  • Z軸從原點指向Control Bumper。它的角度低于Touchpad表面21.7度。


Step 3: 設置Camera

建議用戶使用Magic Leap Unity包的主相機核心組件。

1.在Inspector下,刪除Main Camera
2.在Assets > MagicLeap > Core > Prefabs下,找到Main Camera Core Component。
3.將Main Camera拖放到Inspector上。
Step 4: 設置Scene

在本教程的這一部分中,首先創建一個被拉伸的立方體GameObject和一個應用于它的材質。由于立方體很長很薄,我們使用一個空的GameObject作為立方體的父節點。這樣,我們就可以更容易地處理我們的立方體。

(1)右鍵單擊Unity中的場景Hierarchy。
(2)單擊Create Empty創建一個空的GameObject。
(3)命名為Beam
(4)在Hierarchy選項卡下,右鍵單擊Beam GameObject,然后單擊3D Object > Cube
(5)將以下設置應用到Cube。如下圖所示:


(6)在Project選項卡下,右鍵單擊Assets文件夾,單擊Create > Material創建材質。
(7)材質命名為Selected。
(8)選擇此材質,打開Inspector選項卡。
(9)點擊Albedo旁邊的白色矩形,選擇一個綠色。
(10)將此材質與Cube綁定,并保存你的場景。

Step 5: 編輯腳本文件

1.在Hierarchy選項卡下選擇Beam GameObject。
2.單擊Add Component > New Script
3.將腳本命名為Control6DOF,然后單擊Create和Add。
4.打開新腳本,粘貼下面的代碼,并保存文件。
[AppleScript] 純文本查看 復制代碼
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.MagicLeap;

public class Control6DOF : MonoBehaviour {
  #region Private Variables
  private MLInputController _controller;
  #endregion

  #region Unity Methods
  void Start () {
    //Start receiving input by the Control
    MLInput.Start();
    _controller = MLInput.GetController(MLInput.Hand.Left);
  }
  void OnDestroy () {
    //Stop receiving input by the Control
    MLInput.Stop();
  }  
  void Update () {
    //Attach the Beam GameObject to the Control
        transform.position = _controller.Position;
        transform.rotation = _controller.Orientation;  
  }
  #endregion
}
5.MLInputController _controller用于接收控件的輸入。
6.在Start()方法中,我們開始接收來自控件的一些輸入。
7.OnDestroy ()它停止來自控件的所有輸入。
運行測試即可。



------AR Portal(AR開發者社區)整理
關注微信公眾號:AR開發者社區  (國內領先的AR開發者交流學習社區和AR內容平臺



回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊帳號

本版積分規則

法甲球队主场名称