在Ventuz中配置Leapmotion环境

Ventuz版本6.4

Leapmotion版本3.2.0(可以从官网https://developer.leapmotion.com/releases/?category=orion上下载)

1、解压Leapmotion压缩包,先安装驱动

2、进入LeapSDK文件夹,在lib文件夹下找到LeapCSharp.NET3.5.dll文件,通过gacutil.exe将LeapCSharp.NET3.5.dll添加到程序集缓存中去。(gacutil.exe文件正常是找不到的,需要默认安装Visual Studio后,在C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin路径下能找到)

3、

a.右键电脑右下方开始按钮,点击运行按钮,在运行中输入cmd,点击确认

b.在命令窗口输入cd C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin,键盘按下Enter键;然后输入gacutil -i "LeapCSharp.NET3.5.dll所在的路径"

出现Assembly successfully added to the cache,表示添加成功。

重点提示!!!!!!:我的Leapmotion2.0硬件不支持Leapmotion SDK 3.0.0之前的SDK,请确认你的硬件是1.0还是2.0.

还有就是如果你下载下来的SDK中没有找到LeapCSharp.NET3.5.dll文件,请下载和我一样的版本。

4、在LeapSDK\lib下,选择X86或者X62(根据你的系统选择)下的Leap.dll和LeapC.dll复制到你的Ventuz安装根目录下,就可以了。

5、下面是Ventuz下的C#脚本

using System;
using Ventuz.Kernel;
using System.Threading;
using Leap;
using System.EnterpriseServices.Internal;

public class Script : ScriptBase, System.IDisposable
{
	//Leap Motion Listener and controller
	SampleListener listener = new SampleListener ();
	Controller controller = new Controller();
	// This member is used by the Validate() method to indicate
	// whether the Generate() method should return true or false
	// during its next execution.
	private bool changed;
    
	// This Method is called if the component is loaded/created.
	public Script()
	{
		controller.Connect += listener.OnServiceConnect;
		controller.Device += listener.OnConnect;
		controller.FrameReady += listener.OnFrame;
	}
    
	// This Method is called if the component is unloaded/disposed
	public virtual void Dispose()
	{
		controller.Connect -= listener.OnServiceConnect;
		controller.Device -= listener.OnConnect;
		controller.FrameReady -= listener.OnFrame;
		controller.Dispose();
	}
    
	// This Method is called if an input property has changed its value
	public override void Validate()
	{
		// Remember: set changed to true if any of the output 
		// properties has been changed, see Generate()
	}
    
	// This Method is called every time before a frame is rendered.
	// Return value: if true, Ventuz will notify all nodes bound to this
	//               script node that one of the script's outputs has a
	//               new value and they therefore need to validate. For
	//               performance reasons, only return true if output
	//               values really have been changed.
	public override bool Generate()
	{
		if(listener.IsChanged)
		{
			CircleCCW();
		}else{
			
		}
		return false;
	}
}

//Sample Listener Class
public class SampleListener 
{
	public bool IsChanged;
	
	public void OnServiceConnect(object sender, ConnectionEventArgs args)
	{
		Console.WriteLine("Service Connected");
	}

	public void OnConnect(object sender, DeviceEventArgs args)
	{
		Console.WriteLine("Connected");
	}


	public void OnFrame(object sender, FrameEventArgs args)
	{
		// Get the most recent frame and report some basic information
		Frame frame = args.frame;
		if(frame.Hands.Count > 0){
			IsChanged = true;
		}
		else{
			IsChanged = false;
		}

	}
}

测试是可以用的,自己调这个花了三天时间,希望给刚接触的人一点帮助。若有疑问邮箱联系1281551269@qq.com.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值