游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

首页   >   博客   >   ID丶sunshine

Tango

个人分类: AR | 2018-1-10 15:20
0 个评论 | 阅读 358 | 收藏 | 举报

添加预制

  1. TangoPrefabs文件夹中,找到“ 探戈相机”预制,然后将其拖动到“ 层次”面板。

  2. 使用Tango Point Cloud预制也是一样。

Tango Point Cloud预制具有与点云相关的有用功能,包括查找底层,将点云转换为Unity全局空间,并呈现调试点。它还包含一个函数FindPlane() ,它 根据触摸事件为你找到一个飞机。FindPlane()在本教程中扮演重要角色。

配置探戈经理

在“ 层次结构”面板中,选择“ 探戈管理器”,然后在“ 检查器”面板中,确保选择以下选项:

  • 自动连接到服务
  • 启用移动跟踪自动复位
  • 启用深度
  • 使用Method = Texture(ITangoCameraTexture)启用视频叠加

创建一个UI控制器gameObject

  1. GameObject菜单上,单击Create Empty

  2. 在这个新的gameObject 的“ 检查器”面板中,将名称更改为“UI Controller”。

将脚本添加到UI Controller gameObject中

  1. 在“ 检查器”面板中,单击“ 添加组件”

  2. 组件下拉菜单中,单击新建脚本。(您可能需要向下滚动才能看到它。)

  3. 在“ 新建脚本”对话框中,将名称更改为“KittyUIController”。

  4. 单击创建和添加

该脚本(KittyUIController.cs)将处理触摸事件,调用该 FindPlane()功能,并将您的小猫放入现场。

添加KittyUIController脚本的代码

  1. KittyUIController(脚本)组件中,单击齿轮图标以查看上下文菜单,然后选择编辑脚本

  2. 在脚本编辑器中,使用下面的代码替换现有脚本。要将代码复制到剪贴板,请将指针移动到代码上,然后在代码部分的右上角单击“ 单击复制” 按钮。

    using UnityEngine;
    using System.Collections;

    public class KittyUIController : MonoBehaviour
    {
       
    public GameObject m_kitten;
       
    private TangoPointCloud m_pointCloud;

       
    void Start()
       
    {
            m_pointCloud
    = FindObjectOfType<TangoPointCloud>();
       
    }

       
    void Update ()
       
    {
           
    if (Input.touchCount == 1)
           
    {
               
    // Trigger place kitten function when single touch ended.
               
    Touch t = Input.GetTouch(0);
               
    if (t.phase == TouchPhase.Ended)
               
    {
                   
    PlaceKitten(t.position);
               
    }
           
    }
       
    }

       
    void PlaceKitten(Vector2 touchPosition)
       
    {
           
    // Find the plane.
           
    Camera cam = Camera.main;
           
    Vector3 planeCenter;
           
    Plane plane;
           
    if (!m_pointCloud.FindPlane(cam, touchPosition, out planeCenter, out plane))
           
    {
               
    Debug.Log("cannot find plane.");
               
    return;
           
    }

           
    // Place kitten on the surface, and make it always face the camera.
           
    if (Vector3.Angle(plane.normal, Vector3.up) < 30.0f)
           
    {
               
    Vector3 up = plane.normal;
               
    Vector3 right = Vector3.Cross(plane.normal, cam.transform.forward).normalized;
               
    Vector3 forward = Vector3.Cross(right, plane.normal).normalized;
               
    Instantiate(m_kitten, planeCenter, Quaternion.LookRotation(forward, up));
           
    }
           
    else
           
    {
               
    Debug.Log("surface is too steep for kitten to stand on.");
           
    }
       
    }
    }

代码细节

声明一个名为的gameObject m_kitten

    public GameObject m_kitten;

在该Start()功能中,创建TangoPointCloud gameObject上的TangoPointCloud脚本的引用。你可以用它来调用这个FindPlane() 方法。

        m_pointCloud = FindObjectOfType<TangoPointCloud>();

Update()功能中,检查触摸计数及其状态。如果触摸已经结束,放置小猫。

if (Input.touchCount == 1)
       
{
           
// Trigger place kitten function when single touch ended.
           
Touch t = Input.GetTouch(0);
           
if (t.phase == TouchPhase.Ended)
           
{
               
PlaceKitten(t.position);
           
}
       
}

PlaceKitten()功能中,将小猫放在3D空间中。

    void PlaceKitten(Vector2 touchPosition)
   
{
       
// Code to query the AR Camera's location, and then call FindPlane()
       
// based on the AR Camera's position and the touch position.
       
// FindPlane() returns an estimated plane from the touch point,
       
// and then places the kitten on the plane if it's not too steep.

   
}
  • 完成检查脚本后,保存,然后返回到Unity编辑器。

导入你的小猫模型

  1. 下载kitty.unitypackage,其中包括一个小猫模型与一些简单的动画。

  2. 双击您下载的kitty.unitypackage将其导入到项目中。在导入Unity包对话框中,确保选中所有项目。导入的Kitty文件夹将显示在“ 资产”下的“ 项目”面板中。

  3. 确保UIController是当前选择的gameObject。

  4. Kitty文件夹中,找到Kitty预制,然后将其拖动到Kitty UI控制器(脚本)组件中的 Kitten字段中。

构建并运行您的项目

  1. 文件菜单上,单击构建和运行

  2. 在“ 构建设置”对话框中,单击“ 构建和运行”

  3. Build 对话框中,在“ 另存为” 字段中输入应用程序的名称,然后单击“ 保存”

试用你的应用程序

  1. 将设备指向环境中的表面,然后在表面边界内触摸设备的屏幕。一只小猫出现在表面。

  2. 要使更多的小猫出现,请触摸其他表面。请注意,小猫实际调整其尺寸(距离表面越远,小猫越小)

0 0

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册帐号

个人分类

标签

阅读排行

评论排行

推荐博客

最新博客

返回顶部