雕刻笔应用开发,3D Systems Openhaptics Unity Plugin插件使用心得
驱动安装:
1、根据设备型号下载对应驱动。
https://3dssupport.microsoftcrmportals.com/knowledgebase/article/KA-01460/en-us 进入官网,下载驱动:
2、如果是1394接口,安装Phantom_Device_Drivers_5.1.7_Release:
如果是USB接口,安装Touch_Device_Driver:
3、驱动安装完成后,以管理员身份打开PHANToM Configuration:
点击Add,添加一个新的名字:Default Device,然后应用。
导入插件
1、在Unity商店搜索3D Systems Openhaptics Unity Plugin,下载导入工程:
给笔添加力运行后把Haptic Plugin 脚本上的Physics Manipulation Enable勾上。(这个选项运行后会自动关闭,要用代码更改)
按钮按下事件
(国产设备两个按钮相同效果)
hapticDevice.GetComponent().Buttons [buttonID] == 1
触碰效果
通常,物体只要改成Touchable标签就有触摸阻挡效果了,如果物体加上了刚体,标签是什么都可以触碰和拿起来。但是有一点需要注意:Touchable标签的物体是根据Mesh Filter来触碰的,非Touchable标签的物体是根据碰撞体来触碰的。
遥控笔移动区域:
在HapticDeviceWithGrabber下的HapticDevice,修改其缩放,就可以改变移动区域了
Touchable标签的物体由HapticPlugin和HapticGrabber脚本检测到后才起作用的,但检测函数只在运行开始时执行一次。
如果在游戏运行之后添加Touchable标签物体,就需要手动去调用检测函数,分别为:
HapticPlugin里的setupShapes();
HapticGrabber里的disableUnityCollisions();
这两个函数是私有的,要在外面调用,可以自己新建一个公开的方法。
2D光标
在HapticDeviceWithGrabber下的HapticDevice中添加HapticMouse脚本
把光标指针挂在Haptic Mouse脚本上的Cursor处,相机也要挂上:
这个HapticMouse脚本默认是按下每帧执行一次,如果想做成只在按下瞬间执行一次,可以改成如下:
相机旋转
把相机拖到HapticDeviceWithGrabber下,新建一个游戏对象,在其身上挂上CameraRotate脚本。新建两个Image,改名为CameraLeft、CameraRight;放置于屏幕两侧。
抓取的物体
HapticGrabber脚本下
touching:仅靠刚体和碰撞器抓取的物体
grabbing:标签为Touchable的物体
HapticPlugin脚本下的(HapticGrabber脚本下的标签触碰物体是从这里获取的)
touching:可触碰物体
抓取物体时,晃动厉害,可以把物体标签改为非Touchable:
获取触控笔当前碰到的物体
触控笔圆球碰到那个物体就输出那个物体的名字,不用点击按钮,代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Now_Obj : MonoBehaviour
{
public HapticPlugin hapticPlugin;
private GameObject gameObj;//触控笔当前碰到的物体
void Start()
{
}
void Update()
{
gameObj = hapticPlugin.touching;
if(gameObj != null)
{
print ("抓取物:" + gameObj);
}
}
}