Hololens单击、双击

Hololens入门之手势识别(单击、双击) Hololens入门之手势识别(单击、双击) 本文使用手势识别实现识别单击及双击手势的功能,当单击Cube时改变颜色为蓝色,当双击Cube时改变颜色为绿色。本文示例在上一篇文章的基础上完成。 手势识别是HoloLens交互的重要输入方法之一。HoloLens提供了底层API和高层API,可以满足不同的手势定制需求。底层API能够获取手的位置和速度信息,高层API则借助手势识别器来识别预设的 阅读详情

1.下载导入资源:https://pan.baidu.com/s/19JMpg6-_zVFXD6K1UKh_bQ 
提取码:7d76

2.拖动Hologram下的Cursor到Hierarchy;

3.新建空物体,并命名为OrigamiCollection;

4.修改相机属性;

5.新建脚本WorldCursor,并添加到Cursor上;

using UnityEngine;

public class WorldCursor : MonoBehaviour
{
    private MeshRenderer meshRenderer;

    // Use this for initialization
    void Start()
    {
        // Grab the mesh renderer that's on the same object as this script.
        meshRenderer = this.gameObject.GetComponentInChildren<MeshRenderer>();
    }

    // Update is called once per frame
    void Update()
    {
        // Do a raycast into the world based on the user's
        // head position and orientation.
        var headPosition = Camera.main.transform.position;
        var gazeDirection = Camera.main.transform.forward;

        RaycastHit hitInfo;
        if (Physics.Raycast(headPosition, gazeDirection, out hitInfo))
        {
            // If the raycast hit a hologram...

            // Display the cursor mesh.
            meshRenderer.enabled = true;
            // Move the cursor to the point where the raycast hit.
            this.transform.position = hitInfo.point;
            // Rotate the cursor to hug the surface of the hologram.
            this.transform.rotation =
                Quaternion.FromToRotation(Vector3.up, hitInfo.normal);
        }
        else
        {
            // If the raycast did not hit a hologram, hide the cursor mesh.
            meshRenderer.enabled = false;
        }
    }
}

6.新建脚本GazeGestureManager,并添加到OrigamiCollection上;

using UnityEngine;
using UnityEngine.XR.WSA.Input;

public class GazeGestureManager : MonoBehaviour
{
    public static GazeGestureManager Instance { get; private set; }

    // Represents the hologram that is currently being gazed at.
    public GameObject FocusedObject { get; private set; }

    GestureRecognizer recognizer;

    // Use this for initialization
    void Start()
    {
        Instance = this;
        // Set up a GestureRecognizer to detect Select gestures.
        //创建GestureRecognizer实例
        recognizer = new GestureRecognizer();
        //注册指定的手势类型,本例指定单击及双击手势
        recognizer.SetRecognizableGestures(GestureSettings.Tap | GestureSettings.DoubleTap);
        //订阅手势事件
        recognizer.TappedEvent += GestureRecognizer_TappedEvent;
        //开始手势识别
        recognizer.StartCapturingGestures();
    }

    private void OnTap()
    {
        if (FocusedObject != null)
        {
            FocusedObject.SendMessage("OnTap");
        }
    }
    private void OnDoubleTap()
    {
        if (FocusedObject != null)
        {
            FocusedObject.SendMessage("OnDoubleTap");
        }
    }

    private void GestureRecognizer_TappedEvent(InteractionSourceKind source, int tapCount, Ray headRay)
    {
        if (tapCount == 1)
        {
            OnTap();
        }
        else
        {
            OnDoubleTap();
        }
    }
        void LateUpdate()
        {
        // Figure out which hologram is focused this frame.
        GameObject oldFocusObject = FocusedObject;

        // Do a raycast into the world based on the user's
        // head position and orientation.
        var headPosition = Camera.main.transform.position;
        var gazeDirection = Camera.main.transform.forward;

        RaycastHit hitInfo;
        if (Physics.Raycast(headPosition, gazeDirection, out hitInfo))
        {
            // If the raycast hit a hologram, use that as the focused object.
            FocusedObject = hitInfo.collider.gameObject;
        }
        else
        {
            // If the raycast did not hit a hologram, clear the focused object.
            FocusedObject = null;
        }

        // If the focused object changed this frame,
        // start detecting fresh gestures again.
        if (FocusedObject != oldFocusObject)
        {
            recognizer.CancelGestures();
            recognizer.StartCapturingGestures();
        }
    }
    void OnDestroy()
        {
        recognizer.StopCapturingGestures();
        recognizer.TappedEvent -= GestureRecognizer_TappedEvent;
        }
    }

7.新建脚本CubeScript,并添加到Cube上,实现单击为蓝色,双击为红色;

using UnityEngine;
using System.Collections;

public class CubeScript : MonoBehaviour
{

    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }

    private void OnTap()
    {
        gameObject.GetComponent<MeshRenderer>().material.color = Color.blue;
    }

    private void OnDoubleTap()
    {
        gameObject.GetComponent<MeshRenderer>().material.color = Color.green;
    }
}

8.发布Hololens进行测试。

9.完整工程下载:https://download.youkuaiyun.com/download/exclaiming/10692685

Hololens开发手记 - 移动全息对象(Manipulation) 本文将以官方案例来说明如何实现移动全息对象操作(211 - chapter4)。此案例主要涉及到了语音、手势识别。实现思路: * 通过添加的关键字来初始化KeywordRecognizer; * 创建一个GestureRecognizer用于实现Manipulation Holographic; * 通过语音识别调用对应的函数操作实现选择不同的GestureRecognizer; * 通过不 阅读详情

相关推荐

Hololens入门之手势识别(使用Manipulation gesture控制物体平移)

Hololens入门之手势识别(使用Manipulation gesture控制物体平移) 本例在 Hololens入门之手势识别(手检测反馈) 的基础上进行修改 Manipulation gesture:使用长按手势进行移动 1、修改HandsManager.cs,添加InteractionManager.SourcePressed,InteractionManager.Sourc

sun_t89的专栏 1万+

使用UE4基于Hololens开发MR应用

本篇文章讲解如何 基于UE4开发hololens的MR应用 同时也可以参考视频: 使用UE4基于Hololens开发MR应用 1.设备讲解和基本设置 首先要假定您已经体验了机身自自带的入门软件“使用技巧” 还可以在Microsoft Store 里 下载一款名为 Designing Holograms 的应用, 应用1.5G 这是微软开发的一款非常惊艳免费应用,他可以让你快速了解UX设计的基础知识, 涵盖 头部追踪和眼球追踪,手部追踪,空间意识,全息框架,空间扫面,...

董国政的博客 4065

Hololens学习

Air-tap类似于鼠标点击,一般用于确认功能 Bloom则一般用来取消或回到主界面

qq_39824951的博客 609

开发 ue4_利用UE4,你已经可以开发HoloLens 2应用啦

6月4日消息,Epic宣布UE4虚幻引擎加入对HoloLens 2的原生支持,抢先体验版安装包现已支持下载,正式版(UE4.23)将于未来几个月内上线。尽管现在HoloLens 2还未正式发售,但开发者现在可以在PC端用UE4开发HoloLens 2应用,在拿到头显的时候就可以直接运行和测试。据青亭网了解,UE4对HoloLens 2的原生支持安装包采用UE4的XR框架,也就是说开发者在电脑上完成...

weixin_29189003的博客 971

新手村任务:Hololens打包及调试流程

Hololens打包及调试流程,适合新手学习和查看,介绍Hololens的开发,调试,部署的完整过程,并使用目前本人使用过的的软件和系统版本。

Open FPV VTX与Betaflight的MSP协议配置详解:从硬件连接到OSD显示

本文详细解析了如何通过MSP协议将Open FPV VTX与Betaflight飞控进行深度集成,实现飞行数据在OSD上的稳定显示。内容涵盖从硬件连接、Betaflight端口MSP服务启用,到VTX侧配置与OSD元素布局调校的全流程,并提供了常见问题的排查思路,帮助FPV玩家构建可靠的数据叠加系统。

weixin_29201933的博客 454

Hololens简单手势识别

gestureRecognizer = new GestureRecognizer();   //注册点击|按住|按住并滑动             gestureRecognizer.SetRecognizableGestures(GestureSettings.Tap                 | GestureSettings.Hold                 | Ge

afteryunlei的专栏 1887

从开通VPS到搭建宝塔面板全教程

你在输入域名(此时我们可能没有类似aaa.com这样的域名,所以要输入VPS的IP地址)的时候,下面的根目录也会跟着变动,等输入完成后,你可以把根目录再改回成/www/wwwroot/dq。这时,在你的浏览器中,输入外网面板地址的URL,输入username和password,即可登陆宝塔面板。第一次登陆,需要绑定你的宝塔账号,你可以到宝塔的注册界面,用手机注册一个,然后绑定,首先看一下你的VPS操作系统是什么类型的(其实你在选择VPS的时候,就已经选定了,我选择的事Centos系统)。

kxltsuperr的专栏 3734

[洪流学堂]Hololens开发高级篇2:手势(Gesture)

本教程基于Unity2017.2及Visual Studio 2017 本教程编写时间:2017年12月7日 本文内容提要 当跟踪到用户的手时提供反馈 使用导航手势旋转hologram 当用户的手要离开视线时提供反馈 使用操作事件(manipulation events)让用户使用手势移动hologram 预备知识 开发环境 已完成入门篇的学习 已完成高级篇1凝

大智_Unity探路者 3134

SAP SD RRB实战:从DIP参数文件到DP90/DP91开票的完整链路解析

本文详细解析了SAP SD模块中RRB(Resource-related Billing)业务场景的完整链路,从DIP参数文件配置到DP90/DP91开票操作。通过实战案例分享DIP参数文件的核心配置技巧、特性设置及物料决定要点,帮助用户掌握动态开票的关键技术,提升SAP SD RRB的实施效率。

weixin_26833939的博客 378

保姆级教程:用Simulink从零搭建新能源汽车VCU蠕行控制模型(附模型下载)

本文提供了一份详细的Simulink建模教程,指导读者从零开始搭建新能源汽车VCU蠕行控制模型。内容涵盖环境配置、信号定义、蠕行模式使能条件、扭矩控制算法实现及模型验证等关键步骤,特别适合需要将控制算法转化为可执行模型的初学者。教程还包含实用代码示例和常见问题解决方案,帮助开发者快速掌握VCU蠕行控制的Simulink实现技巧。

547

Hololens 开发笔记(8)——Audio Source

音频资源 Unity中的音频文件分为两类:原生的音频或者是压缩的音频。 压缩音频:通过从编辑器导入设置选择compressed选项,音频数据将很小,但在播放时会消耗CPU周期来解码。 原生音频:对于短音效使用未压缩音频(WAV,AIFF)。音频数据将较大,但是声音在播放是不需要解码。 Unity 支持导入以下格式:.aif、.wav、.mp3、.ogg 格式 MAC/PC上使用...

Jitwxs 1133

病理WSI配准库valis教程

病理WSI配准库valis教程

azrealq的博客 2598

Hololens开发笔记之Gesture手势识别(单击,双击)

本文使用手势识别实现识别单击及双击手势的功能,当单击Cube时改变颜色为蓝色,当双击Cube时改变颜色为绿色。 手势识别是HoloLens交互的重要输入方法之一。HoloLens提供了底层API和高层API,可以满足不同的手势定制需求。底层API能够获取手的位置和速度信息,高层API则借助手势识别器来识别预设的手势( 包括,单击、双击、长按、平移等等) 。 本部分为高级API使用,通...

anbd0604的博客 294

用Matlab和CVX搞定原子范数最小化:一个信号处理小白的避坑实践

本文详细介绍了如何使用Matlab和CVX实现原子范数最小化(Atomic norm minimization),特别适合信号处理初学者。从CVX安装配置、核心代码解析到实战中的典型问题与解决方案,提供了全面的避坑指南。通过具体案例展示了原子范数在频率估计和DOA估计中的优势,并给出性能优化策略和可视化方法。

weixin_28731231的博客 232

conda install出现CondaValueError: Malformed version string invalid character(s)解决方案

本文主要介绍了conda install出现Solving environment:failed、CondaValueError: Malformed version string invalid character(s),希望能对新手有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 步骤一 2.2 步骤二 2.3 步骤三

weixin_43178406的博客 6万+

hololens凝视物体、单击双击、语音控制、蓝牙

1、用unity开发 2、在HoloLens toolkit中找到TextToSpeech添加到场景中 3、添加KeywordManager.cs到场景中 using orange; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.Events; using UnityEngine.Windows.Speech; /// <summary> /// 语音控制类,需

1386的博客 849

uniapp - 实现 App 端 “半屏幕“ 连续扫码功能,页面只有半个屏幕是扫码框并且可持续连续扫码获取数据(不使用官方 uni.scanCode API,因为无法连续扫码!)详细示例源码插件教程

uniapp app端实现半屏幕扫码,uniapp 扫一扫半个屏幕,uniapp 扫一扫,uniapp持续扫码实现,uniapp怎么自定义扫码和连续扫码,uni-app App端半屏连续扫码,uniapp 扫一扫半个屏幕,uniapp自定义扫码页面样式,实现连续扫码功能(uniapp),uniapp - 实现 App 端 "半屏幕" 连续扫码功能,页面只有半个屏幕是扫码框并且可持续连续扫码获取数据(不使用官方 uni.scanCode API,因为无法连续扫码!)详细示例源码插件教程。

✅ 精选推荐文章 1万+

(五)Hololens Unity 开发之 手势识别

学习源于官方文档 Gestures in Unity 笔记一部分是直接翻译官方文档,部分各人理解不一致的和一些比较浅显的保留英文原文 (五)Hololens Unity 开发之 手势识别 HoloLens 有三大输入系统,凝视点、手势和声音 ~ 本文主要记录手势识别的学习笔记 ~ 一、概述 Gestures are the second "G" in Gaze, Gesture...

weixin_30376083的博客 389

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

UITouch与手势中取消双击时的单击相应

1.对于UITouch,在执行单双击响应时,会出现双击时会响应一次单击,如下 2.UITouch解决方法 对淡季的响应设置延迟,当双击时,用object的取消执行方法取消单击响应,执行双击响应,就不会出现双击时出现一次单击响应了。 3.手势时既有单击响应,又有双击响应时也会出现双击时既响应双击有响应单击事件。解决方法如下 如图,只需要增加一个方法, [tapG

liukan58的博客 452

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

部署到HoloLens 2

为了更好地控制生成过程,我们首先需要将Unity工程导出为Visual Studio工程,在Unity菜单中,依次选择File→Build Settings,打开构建设置窗口,在构建设置窗口中添加场景,将Architecture属性设置为x64,并根据需要设置其他属性,设置完成后,单击Build按钮将其构建到一个空的目标文件夹中。确保HoloLens 2设备通过USB连接到计算机,将VS生成方式设置为Debug/Release/Master、将平台架构设置为ARM64、将部署方式设置为设备。

qq_37537702的博客 2349

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

如何使用Hololens 这些手势你都要学

微软 Hololens 全息眼镜虽然主要是面向开发者的设备,但也有一些人通过其他渠道购买到了 Hololens。如果你就是这些人中的一个,面对着刚送到家的 Hololens,不知道如何使用,那么,你首先需要学会使用下面这些手势。 使用 Hololens 和使用 Windows 以及其他任何设备都不同,你不能用光标,你需要用眼睛;你不能使用鼠标单击、双击,你需要使用手势、语音或者遥控器。

虚拟现实开发 2486

[Hololens]基于MMD4Mecanim插件的HoloLens MMD部署

Chapter0 - 前言 最近在根据微软的HoloLens教程学习HoloLens的基础,昨天突发奇想用电脑现有的mmd模型、动作数据加入Unity中然后部署到HoloLens进行基于环境的放置与跳舞操作。(老师不在实验室系列)百度了一下之后找到了日本大佬的MMD4Mecanim插件,可以将MMD模型以及音乐和动作导入到Unity中,便开始进行部署。 Chapter1 - 基本工作与环境 使用...

zyh_yexing的博客 1358

HoloLens开发指南(4)--- 开发第一个HoloLens应用

经过了前面的环境开发准备,终于我们要使用Unity来开发第一个HoloLens应用。 以下内容由公众号:AIRX社区(国内领先的AI、AR、VR技术学习与交流平台) 整理 Step 1:创建Unity项目 1.打开Unity,创建一个新项目,命名MixedRealityBase 2. 创建完成进入Unity之后,点击File>Build Settings。如下图所示: 3...

albertleebob的博客 1751

Hololens开发笔记之Gesture手势识别(基本介绍)

手势识别是HoloLens交互的重要输入方法之一。HoloLens提供了底层API和高层API,可以满足不同的手势定制需求。底层API能够获取手的位置和速度信息,高层API则借助手势识别器来识别预设的手势(包括,单击、双击、长按、平移等等)。 手势输入 Gesture Input 本部分为高级API使用,通过输入源来识别手势。每个手势对应一个SourceKind输入源,大部...

anbd0604的博客 466

Unity HoloLens2 MRTK 空间锚点 基础教程

MRTK 提供跨平台的输入系统、基础组件以及用于空间交互的通用构建基块。它可以帮助你加快面向 Microsoft HoloLens、Windows Mixed Reality 沉浸式 (VR) 头戴显示设备和许多其他 VR/AR 设备的应用程序开发。暂时先这样吧,如果有时间的话就会更新,实在看不明白就留言,看到我会回复的。后续再更新 MRTK 插件 相关使用(如果有时间的话)路漫漫其修远兮,与君共勉。

Maddie_Mo的博客 4116
上一篇: Hololens旧版本Origami实例
下一篇: OpenCV模糊处理
Exclaiming
博客等级 码龄9年 28粉丝 54原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值