Leap Motion 探究 【第二篇】

标签: leap motion
456人阅读 评论(1) 收藏 举报
分类:

       昨晚捣鼓完Leap的数据输出,一看时间还早,写完前一篇博文,后手就开始写这个东西。团队是做飞行模拟设备的,我就直接拿微软模拟飞行来做个例子(模拟器接口部分不放开,主要看怎么整合Leap应用到外围)。测试视频链接:http://player.youku.com/player.php/sid/XMTU1MTkwNzU4MA==/v.swf

public partial class Form1 : Form
    {
        FListener MyListener = new FListener();
        Controller MyController = new Controller();

        short PitchFS;//模拟器中的Pitch值
        short RollFS;//模拟器中的Roll值
        short YawFS;//模拟器中的Yaw值
        public Form1()
        {
            InitializeComponent();
        }

        private void ConnectToLeap_Click(object sender, EventArgs e)
        {
            MyController.AddListener(MyListener);
            try
            {
                //FSX 通道预位
                DisConnectToLeap.Enabled = true;
                ConnectToLeap.Enabled = false;
                timer1.Enabled = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void DisConnectToLeap_Click(object sender, EventArgs e)
        {
            MyController.RemoveListener(MyListener);
            MyController.Dispose();
            DisConnectToLeap.Enabled =false;
            ConnectToLeap.Enabled = true;
            timer1.Enabled = false;
            //FSX 通道关闭
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            PitchFS = (short)(MyListener.PitchRaw / 90 * 16383);
            RollFS = (short)(MyListener.RollRaw / 90 * 16383);
            YawFS = (short)(MyListener.YawRaw / 90 * 16383);
            textPitch.Text = ((short)(MyListener.PitchRaw / 90 * 16383)).ToString();
            textRoll.Text = ((short)(MyListener.RollRaw / 90 * 16383)).ToString();
            textYaw.Text = ((short)(MyListener.YawRaw / 90 * 16383)).ToString();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
        }
    }
以上是Form类中的代码,与Leap提供的example几乎一致。后面看一下Listener的代码,我只取得了我需要的数据,剩下不需要的统统不要。

public class FListener : Listener
    {
        public float PitchRaw, RollRaw, YawRaw;
        public override void OnInit(Controller arg0)
        {
            Console.WriteLine("Initialized.");
        }

        public override void OnConnect(Controller arg0)
        {
            Console.WriteLine("Connected.");
            arg0.EnableGesture(Gesture.GestureType.TYPE_CIRCLE);
            arg0.EnableGesture(Gesture.GestureType.TYPE_KEY_TAP);
            arg0.EnableGesture(Gesture.GestureType.TYPE_SCREEN_TAP);
            arg0.EnableGesture(Gesture.GestureType.TYPE_SWIPE);
        }

        public override void OnDisconnect(Controller arg0)
        {
            Console.WriteLine("Disconnected.");
        }

        public override void OnExit(Controller arg0)
        {
            Console.WriteLine("Exited");
        }

        public override void OnFrame(Controller arg0)
        {
            Frame frame = arg0.Frame();
            foreach (Hand hand in frame.Hands)
            {
                Vector normal = hand.PalmNormal;
                Vector direction = hand.Direction;
                Console.WriteLine("Hand pitch: " + direction.Pitch * 180.0f / (float)Math.PI + "   "
                            + "roll: " + normal.Roll * 180.0f / (float)Math.PI + "   "
                            + "yaw: " + direction.Yaw * 180.0f / (float)Math.PI + "   ");
                PitchRaw = direction.Pitch * 180.0f / (float)Math.PI;
                RollRaw = normal.Roll * 180.0f / (float)Math.PI;
                YawRaw = direction.Yaw * 180.0f / (float)Math.PI;
            }
        }
    }

这篇写的比较简单,没有创新什么东西,只是将第一篇的东西做了一个“东西”出来,后面将测试几个手势。

查看评论

leap motion原理

这就是 Motion Visualizer,它将由 Leap 传感器捕捉到的手部运动信息映射出来: <img src="https://pic1.zhimg.com/...
  • qq_34113388
  • qq_34113388
  • 2017-04-10 15:26:48
  • 868

[资料汇总]Leap Motion官方开发文档翻译

对应博客地址:http://52coding.com/leap-motion-official-doc-translation 此文中所有连接都是链接到我的52coding.com上去的,你也可以在...
  • guoming0000
  • guoming0000
  • 2013-09-30 02:16:26
  • 7981

C# Leap Motion样例

  • 2016年12月16日 12:04
  • 523KB
  • 下载

Leap Motion

  • 2014年03月02日 21:50
  • 47.72MB
  • 下载

leap motion 系统简介

从leap motion官网的介绍文章leap motion overview中,提取出个人认为有价值的东西,做下笔记,也是分享,希望能给大家带来帮助。原文地址 https://developer.l...
  • smilingeyes
  • smilingeyes
  • 2013-10-30 21:12:53
  • 4936

初识Leap motion

Leap motion
  • shiwq13
  • shiwq13
  • 2016-04-26 21:11:49
  • 663

Leap Motion开发第一步环境配置

到leap官网下载好sdk, 找到自己sdk安装的位置, 我的是直接放在桌面上的,记住图中红线位置,等下配置环境变量会用到 找到系统的 “环境配置” 新建一个为 leapsdk的用...
  • u013169722
  • u013169722
  • 2013-12-16 18:45:28
  • 5082

Leap Motion概述

这是C++语言下的Leap Motion引导文章,原文地址:https://developer.leapmotion.com/documentation/Languages/C++/Guides/Le...
  • guoming0000
  • guoming0000
  • 2013-07-21 19:12:16
  • 8554

Leap Motion C++开发笔记(三)获取深度值及距离估算

一、写在前面 由于Leap Motion只能获取8U的图像,所以无法取得到像Kinect那样精度较高的深度值。 Leap Motion SDK中之所以能做到如此高精度的空间定位,是通过其...
  • cocoaqin
  • cocoaqin
  • 2017-09-04 10:16:18
  • 604

Leap Motion 教你玩转手势

刚尝试手势的时候我差点选择放弃,现在想想还是自己不好好看SDK,小心使得万年船啊。         五一不想断更的,实在是没办法,出去的急忘了带笔记本,只好断更。下午才回来,毕竟这种万年没休的也习惯...
  • qq_26399665
  • qq_26399665
  • 2016-06-02 20:49:32
  • 5383
    个人资料
    等级:
    访问量: 1万+
    积分: 332
    排名: 23万+
    文章分类
    文章存档
    最新评论