由于CHAI3D使用C++实现,因此想要在unity3d中使用它,很自然的想到使用c++编写动态链接库,在c#代码中导入外部函数来使用CHAI3D。根据CHAI3D官方提供的文档,自己进行尝试进行了dll的编写。官方文档的地址将会在文章结尾展示。还在摸索,不断扩展dll功能

几点说明

  1. 添加CHAI3D的依赖项,至于GL就不需要配置了,因为使用unity进行渲染。;
  2. 添加include依赖,这里至少需要添加CHAI3D的src路径和Eigen的路径;
  3. 添加库依赖,添加lib下相应平台的路径;
  4. 在依赖项中添加chai3d.lib;
  5. Configuration Properties / Linker / System之后的设置可以跳过;

头文件

#pragma once
#ifndef  HEADER_H
#define  HEADER_H#ifndef EXPORT_DLL
#define EXPORT_DLL _declspec(dllexport)
#endif // !EXPORT_DLLextern "C" {EXPORT_DLL int myfunction();
}#endif // ! HEADER_H

cpp文件

#include "chai3d.h"
#include "Header.h"
#include <stdlib.h>
#include <iostream>
using namespace std;
using namespace chai3d;
extern "C" {int myfunction() {// a haptic device handlercHapticDeviceHandler* handler;// a pointer to the current haptic devicecGenericHapticDevicePtr hapticDevice;// create a haptic device handlerhandler = new cHapticDeviceHandler();// get a handle to the first haptic device//如果获得设备就返回0,否则返回1if (handler->getDevice(hapticDevice, 0)) return 0;else return 1;}
}

C#中使用

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;public class test : MonoBehaviour
{[DllImport("mydll")]public static extern int myfunction();// Start is called before the first frame updatevoid Start(){int a = myfunction();print(a);}}

简单运行结果


暂时没有连接设备

官方文档

[1]: how to create an application

unity3d中使用CHAI3D相关推荐

  1. Unity3D 中 2D_Toolkit插件下载 和 导入方法

    Unity3D 中 2D_Toolkit插件下载 和 导入方法 1.你把下载来的包放到 安装目录:Editor\Standard Packages里面. 2.然后按ctrl+9,进入asset sto ...

  2. Unity3D中暂停时的动画及粒子效果实现

    暂停是游戏中经常出现的功能,而Unity3D中对于暂停的处理并不是很理想.一般的做法是将Time.timeScale设置为0.Unity的文档中对于这种情况有以下描述: The scale at wh ...

  3. Unity3D 中的程序后台运行

    Unity3D中程序后台运行,我原本认为当Application.runInBackground=false时,Socket保持连接,但是不接受数据,经过测试并非如此,当Application.run ...

  4. 工具设置Unity3D系列教程--使用免费工具在Unity3D中开发2D游戏 第一节

    时间紧张,先记一笔,后续优化与完善. 声明:   本博客文章翻译类别的均为个人翻译,版权全部.转载请注明出处: http://blog.csdn.net/ml3947,另外本人的个人博客:http:/ ...

  5. unity3d中让物体显示和隐藏

    unity3d中让物体显示和隐藏的方法 gameObject.renderer.enabled //是控制一个物体是否在屏幕上渲染或显示  而物体实际还是存在的 仅仅是想当于隐身 而物体本身的碰撞体还 ...

  6. Unity3d中BlinnPhong光照模型注解

    /* *     版本:0.1     最后修改:2012-08-10     撰写:李现民 Unity3D中主要用到的shader(着色器)有三种,除了常规的vertex shader与fragme ...

  7. Unity3D中关于场景销毁时事件调用顺序的一点记录

    先说一下我遇到的问题,我弄了一个对象池管理多个对象,对象池绑定在一个GameObject上,每个对象在OnBecameInvisible时会进行回收(即移出屏幕就回收),但是当场景切换或停止运行程序时 ...

  8. unity3d双面材质_[转]unity3d中创建双面材质

    在其它三维软件中设置好的双面材质导入到unity3d中就失去了效果,不过我们可以通过自定义材质来在unity3d中实现双面材质的效果.步骤如下: 1.在资源库中新建一新shader:代码如下: Sha ...

  9. 如何将unity3d动画嵌入html,在Unity3D中使用精灵动画引擎制作动画的两种方法

    7月28日消息,如今的游戏玩家对于游戏角色的动作要求越来越高,给开发者提出了众多的要求,工作量也相应上升.那么如何才能简单快速地制作角色动画以提升效率呢?下面就和大家分享两个在Unity3D中使用精灵 ...

最新文章

  1. windows下live555+rtsp+ffmpeg媒体源,nginx+rtmp转发服务器,vlc播放rtmp媒体流
  2. 万达放弃A股上市,数据揭秘王思聪投资为何频繁跳水?
  3. 编译php ./configure命令enable和with有什么区别
  4. ubuntu安装linux deepin,如何在Ubuntu中安装Deepin终端 | MOS86
  5. oracle recover redo,oracle redo log日志(当前或非当前日志)损坏之后的db恢复
  6. 移动互联网数据安全蓝皮报告(2021年)
  7. phpstudy中php页面不识别php代码解决方法
  8. 计算机毕业设计之java+ssm的图书管理系统的设计与实现论文
  9. ppapi,npapi
  10. 数据结构与算法之排序篇(下)
  11. win10相机打不开,显示错误代码0xA00F4246(0x800706D9)
  12. 算法题目打卡:Ques20201004
  13. 外汇风险管理:德鲁克日志之五月十一日
  14. 百合网“免费”革命 一场饮鸩止渴的大戏
  15. 元子弹老师-吉他指弹左手技巧
  16. 基于Python实现的机器人自动走迷宫
  17. TX2(Ubuntu16.04)安装TP-link外接网卡驱动及AP热点创建
  18. arcpy实现注记合并
  19. java计算机毕业设计Vue垃圾分类指南平台设计与实现源码+数据库+系统+lw文档
  20. 2019上海埃森哲软件开发面试

热门文章

  1. Fabric-samples asset-transfer-basic 链码部署与升级(Fabric 2.4.4)
  2. sql语句中删除表 drop、truncate和delete的用法
  3. 非金融专业是否能报考CFA考试?
  4. Linux学习之旅(20)-----信号(2)
  5. Msp430 bsl program
  6. python学习好书推荐
  7. 滨州学院计算机陈志,滨州学院院系介绍
  8. linux系统修复引导方案
  9. 聊聊所谓的弹性工作制
  10. .net C# 网页播放器 支持多种格式 媒体播放器 播放器 代码