• 【Magic Leap开发指南(9)-6 DOF(Unity)】-开发者专栏-【游戏蛮牛】-游戏出海,ar增强现实,虚拟现实,yzc88޳,yzc88޳教程下载首选޳,yzc88޳官网 - Powered by Discuz!

    AR酱 Magic Leap开发指南(9)-- 6 DOF(Unity)

    0
    回复
    574
    查看
    打印 上一主题 下一主题
    [ 复制链接 ]
    排名
    2299
    昨日变化

    34

    主题

    261

    帖子

    1505

    积分

    Rank: 9Rank: 9Rank: 9

    UID
    156756
    好友
    11
    蛮牛币
    1043
    威望
    0
    注册时间
    2016-7-13
    在线时间
    518 小时
    最后登录
    2019-11-10

    专栏作家

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    您需要 登录 才可以下载或查看,没有帐号?注册帐号

    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内容平台



    您需要登录后才可以回帖 登录 | 注册帐号

    本版积分规则