SOFA Framework源代码及插件Win11编译开发环境配置

        这篇文章主要记录详细的SOFA Framework软件的源代码编译环境配置过程,开发环境基于Win系统,编译完成后,可以在插件或框架的源代码上进行开发集成。本文纯手写输入,言简意赅,以大方向和思路为准,具体需要注意的细节会有所提示,期望各位朋友看完这篇文章有所收获,将该前沿的软体弹性仿真软件推广到国内学习。


一、SOFA的基本认识

        目标:了解软件情况和基本使用方法,掌握场景仿真思路和自学方法


软件具体功能

SOFA (sofa-framework.org)https://www.sofa-framework.org/icon-default.png?t=N7T8https://www.sofa-framework.org/

        SOFA的官网如上所示,可以清晰看到主页的简单介绍-SOFA是一个用于科学研究、原型机器人开发等需求的物理仿真系统,免费使用且开放源代码,拥有大量的插件Plugin可选择使用(大部分是开源的,也有商业化付费的),也就是说:

        1.这个系统集成了多种物理引擎,可以仿真物理交互过程,比如重力、质量、弹性等

        2.可以通过高效的交互脚本调用API接口快速建模实验,免费且开源,可以深度开发

        3.可以基于现有插件基础开发新功能,并通过源代码深入学习


软件使用方法

        如图所示,软件的基本使用思路就是,先下载安装已编译好的SOFA Framework软件,然后根据具体需求,选择某些插件,将其编译好的版本下载后,进入SOFA的Plugin管理器,添加插件的DLL文件,基本的运行环境就搞定了。

        此时这个环境只是集成了显示渲染、物理引擎、碰撞算法等功能函数,而仿真环境,就是要编写一个文件,调用需要仿真的模型和设置仿真场景(比如引入一个方块,增加重力,增加平面,设置碰撞等),这个文件的编写可以使用XML、C++或Python,具体的示例在软件自带例程和插件自带例程中非常丰富,可以直接打开学习。

        当需要实现一些高级功能时,比如与具体的设备连接通信、特定的控制算法或其他深度应用时,就可以选择自行开发插件,然后在场景文件中调用。


场景建立逻辑

​        如图所示,建立场景的逻辑是以树状结构进行的,步骤如下:

        1.首先是建立一个场景的根节点,设置好仿真时间、重力场等基础环境参数

        2.导入相关的插件和函数,设置基本参数和显示界面

        3.然后根据要导入仿真的模型,建立分支,比如肝脏和心脏就可以作为两个独立分支

        4.在对应模型的分支上, 进行模型导入、加载网格,设置拓扑参数,碰撞模型及显示外观等

        5.加载场景进行仿真实验


二、源代码及插件编译环境

        目标:给出思路方法,可以根据具体系统软件情况灵活应对,通俗易懂


总体思路

SOFA – Windows (sofa-framework.org)https://www.sofa-framework.org/community/doc/getting-started/build/windows/icon-default.png?t=N7T8https://www.sofa-framework.org/community/doc/getting-started/build/windows/

        这是官网给的编译指导文档,我们将按这个过程进行

        通过Cmake配置编译环境和依赖,生成VisualStudio2022工程,然后在VS中调用编译器,编译源代码生成exe可执行文件和Dll动态链接库。


下载源代码

Release v23.06.00 · sofa-framework/sofa · GitHubhttps://github.com/sofa-framework/sofa/releases/tag/v23.06.00icon-default.png?t=N7T8https://github.com/sofa-framework/sofa/releases/tag/v23.06.00

        登录SOFA官网,找到Github链接,可以直接下载源代码,我这里演示的版本是v23.06,当你确定SOFA Framework的版本时,其他插件在配置时也会根据这个版本自动匹配下载源代码,所以不用担心插件与框架版本不一致的问题。

        然后可以设定一个工程目录,分别建立src和build两个文件夹,src存放源代码,build存放编译文件


配置编译环境

https://www.sofa-framework.org/download/WinDepPack/VS-2017/latesthttps://www.sofa-framework.org/download/WinDepPack/VS-2017/latesticon-default.png?t=N7T8https://www.sofa-framework.org/download/WinDepPack/VS-2017/latest

        通过上面链接,下载依赖包,然后将依赖包解压到源代码根目录下,里面包括了libPNG, libJPEG, libTIFF, Glew, Zlib这些库(我一开始没看说明,还自己配置了这些),这样源代码就准备好了,如图所示,可以看到完整的源代码文件,需要的可以直接用我的链接直接下载,已经共享出来,提取码:ydai 

DEVELOP.zip_免费高速下载|百度网盘-分享无限制 (baidu.com)https://pan.baidu.com/s/1ojFQ5v5W3yfEWu6Wy8Swiw?pwd=ydaiicon-default.png?t=N7T8https://pan.baidu.com/s/1ojFQ5v5W3yfEWu6Wy8Swiw?pwd=ydai

        这时,大家的源码准备好,就差环境和编译相关工具了,需要一步步来,一下环境配置中,已完成配置的就可以直接跳过,没有完成的要记得配置,不然Cmake配置的时候也会提醒。


Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器 (microsoft.com)https://visualstudio.microsoft.com/zh-hans/icon-default.png?t=N7T8https://visualstudio.microsoft.com/zh-hans/

1.上面链接下载安装Visual Studio 2022,选择C++开发套件,勾选C++ ATL and C++ MFC


Welcome to Python.orghttps://www.python.org/icon-default.png?t=N7T8https://www.python.org/

2.上面链接下载安装Python开发环境,版本建议选择3.8.0,要记得勾选pip工具并添加到系统路径,后面安装一些依赖库的时候会需要各种pip install命令


Download CMakehttps://cmake.org/download/icon-default.png?t=N7T8https://cmake.org/download/

3.上面链接下载安装Cmake工具,下最新的版本即可,这个工具是用来根据源代码配置Makefile的,然后生成指定的工程文件,也要Add CMake to the system PATH for all users


Index of /archive/qt/5.12https://download.qt.io/archive/qt/5.12/icon-default.png?t=N7T8https://download.qt.io/archive/qt/5.12/

4.需要安装QT环境,现在官网在线安装新版本要注册账号,不是完全免费的了,大家安装5.12.0及以后的版本就可以,这里我安装的是5.12.12,组件全部安装即可


Boost C++ Libraries - Browse /boost-binaries at SourceForge.nethttps://sourceforge.net/projects/boost/files/boost-binaries/icon-default.png?t=N7T8https://sourceforge.net/projects/boost/files/boost-binaries/

5.在上面链接下载安装Boost库,要求版本大于1.65.1,针对VS2022下载后的文件应该是如下格式boost_1_80_0-msvc-14.3-64.exe,安装到指定位置即可,记得添加到系统环境,我这边安装的是1.80.0版本


Eigenhttps://eigen.tuxfamily.org/index.php?title=Main_Pageicon-default.png?t=N7T8https://eigen.tuxfamily.org/index.php?title=Main_Page

EIGEN_免费高速下载|百度网盘-分享无限制 (baidu.com)https://pan.baidu.com/s/1h7varzazJK35_xuXwhY3tQ?pwd=xzau#list/path=%2Ficon-default.png?t=N7T8https://pan.baidu.com/s/1h7varzazJK35_xuXwhY3tQ?pwd=xzau#list/path=%2F

6.下载安装Eigen库,版本要大于3.2.10,我下载的是3.4.0,图片所示为该软件库的源代码,使用的话需要自行编译一下,过程很简单,先并列建立build和install两个文件夹,打开Cmake Gui然后选择源文件夹和目标build文件夹,开始配置,选择VS2022环境,然后再更改Install路径,再次点配置生成项目,进入build找到sln项目,打开后选择批生成,ALLBUILD,选择debug和release,INSTALL,也选择debug和release,然后就可以找到图片所示的文件夹。如果觉得麻烦的话,可以直接下载我编译好的拿去用,百度网盘已分享,提取码:xzau


CUDA | 支持的GPU | GeForce (nvidia.cn)https://www.nvidia.cn/geforce/technologies/cuda/supported-gpus/icon-default.png?t=N7T8https://www.nvidia.cn/geforce/technologies/cuda/supported-gpus/

​7.我的源代码中增加了插件源代码编译,还需要下载对应显卡的CUDA支持环境,全部组件安装,完成后文件目录如上所示,其他插件同理,当你需要安装某插件时,在Cmake GUI里面勾选,SOFA源代码会自动匹配相同版本的插件源码并下载下来,不同的插件依赖环境会有所区别,所以要看Cmake里面缺什么就安装什么。


8.我的环境中还需要配置Pybind11,这个很简单,直接命令行pip install pybind11就可以,其他Python库的依赖安装方式同理


目前为止,环境就基本都配置好了,可以继续下一步,就是Cmake的相关过程


三、Cmake配置及生成VS工程

        目标:希望让大家了解Cmake配置过程,以及了解缺失依赖库时的处理方法,最后生成工程


Cmake配置过程

        打开Cmake GUI,然后进入如下界面

​        在这里,选择你的源代码Src位置和Build目录,然后点击Configure

        这里选择VS2022,默认x64版本,具体的结合自己的开发环境调整,使用默认的native编译器

        在这个过程中呢,遇到这种红框不要担心,只是没配置依赖库的路径,如图所示,这是提示缺少了Eigen3,也就是上面自行编译安装的那个库,然后将这个空缺的路径填写好就可以识别了,具体这些依赖库的路径我放下面了,需要的话可以对照看,另外,还有一些配置的技巧,比如添加CMAKE_PREFIX_PATH路径,也就是可以自动在当前路径下寻找依赖库的位置,我这边对应的路径都在Cmakecache.txt文件了,可以百度云下载,贴上来的话太长了,提取码:zsm0 

CMakeCache.txt_免费高速下载|百度网盘-分享无限制 (baidu.com)https://pan.baidu.com/s/1u35ok-ejUfruntpXKCvG-A?pwd=zsm0icon-default.png?t=N7T8https://pan.baidu.com/s/1u35ok-ejUfruntpXKCvG-A?pwd=zsm0

        配置完成后,即Configure显示ok,这个时候再点击Generate,即可在Build目录得到sln后缀的工程文件,使用VS2022打开即可


VS2022工程编译过程

        进入工程后,配置编译方式,我这边直接用Release x64,然后点击开始即可,编译完成后,可以进入对应的Release目录打开runSofa.exe,就可以启动软件了,路径为\bin\Release\runSofa.exe

        这里需要注意的是,当你编译报错时,可能是编码的影响,这个时候要在系统的语言区域设置里打开Unicode UTF-8全球语言支持,重启后再编译


四、总结一下

        截止目前,整个关于SOFA Framework软件的编译过程已经结束, 具体的源代码和工具都已罗列在上面,俗话说授人以鱼不如授人以渔,方法路线就是这样的,主要是分享一个过程,希望大家看完这篇文章可以很清晰的明确自己每一步具体在做什么,也知道如何处理其他编译过程中的问题,触类旁通,所有图片文字都是我截图一个个码出来的,写了近5000字也实属不易,如果大家觉得这篇文章对你有帮助或有问题讨论,欢迎下方评论留言,也感谢点赞和关注!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/295371.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

torch.meshgrid和np.meshgrid的区别

numpy中meshgrid: 把数组a当作一行,再根据数组b的长度扩充行。 把数组b当作一列,再根据数组a的长度扩充列。 torch中meshgrid: 把数组a当作一列,再根据数组b的长度扩充列。 把数组b当作一行,再根据数组a的…

前端 js 基础对象 (3)

js 对象定义 <!DOCTYPE html> <html> <body><h1>JavaScript 对象创建</h1><p id"demo1"></p> <p>new</p> <p id"demo"></p><script> // 创建对象&#xff1a; var persona {fi…

C++ 释放指针

在C中&#xff0c;释放指针通常使用delete或delete[]操作符&#xff1b; 如果指针指向的是单个对象&#xff0c;可以使用delete操作符进行释放&#xff1b; 在释放完内存后&#xff0c;最好将指针置为nullptr&#xff0c;以避免出现悬空指针&#xff08;dangling pointer&#…

LeGO-LOAM 几个特有函数的分析(2)

接上回LeGO-LOAM 几个特有函数的分析&#xff08;1&#xff09; 二、广度优先遍历 广度优先遍历&#xff08;Breadth-First Search, BFS&#xff09;是一种用于遍历或搜索树或图的算法。这种算法从树的根&#xff08;或图的某一指定节点&#xff09;开始&#xff0c;然后探索…

「小明赠书活动」2024第二期《实战AI大模型》

⭐️ 赠书 - 《实战AI大模型》 从基本概念到实践技巧的&#xff0c;全方位解读AI大模型&#xff0c;手把手教你训练和部署BERT、GPT-3、ChatGPT&#xff01; 人工智能领域资深专家尤洋老师倾力打造&#xff0c;获得了 李开复、周鸿祎、颜水成 三位大咖鼎力推荐&#xff0c;一经…

【前端】[vue3] vue-router使用

提示&#xff1a;我这边用的是typeScript语法&#xff0c;所以js文件的后缀都是ts。 安装vue-router&#xff1a; &#xff08;注意&#xff1a;vue2引用vue-router3 vue3才引用vue-router4&#xff09; npm install vue-router4src文件夹下面创建 router/index.ts&#xff08;…

安科瑞微机综合保护测控装置在某电厂10.5kV厂用电系统改造中的应用——安科瑞 顾烊宇

摘要&#xff1a;某电厂8号机10.5kV厂用电二次系统设备大多为常规电磁式继电器、电量变送器等。通过对厂用电二次系统从设备选型、设计、施工调试等方面进行的改造&#xff0c;尤其微机综合保护测控装置的应用&#xff0c;集控制、保护、测量、信号报警、开关量采集、通讯功能于…

Python+Appium自动化测试的使用步骤

这篇文章主要介绍了PythonAppium实现自动化测试的使用步骤&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧 一、环境准备 1.脚本语言&#xff1a;Python3.x IDE&am…

IIS回收应用

前言 作为Windows的一个可选包,Internet Information Services (IIS)管理器经常被用于Windows Server系列服务器内的Web管理。IIS采用应用程序池方式管理Web的工作进程,同时采用了页面输出缓存的缓存加载机制。当网络出现瞬间访问异常时,部分IIS管理的web页面可能会发生长…

vue登录 滑动验证,记住密码及AES加密解密

相关依赖 npm install js-cookie //js-cookie npm install crypto-js //AES加密解密 npm install -S vue-puzzle-vcode //滑动验证 vue2 <template><div class"login"><div class"login-box"><div class"imgbox">&…

BOM介绍

文章目录 1、简介主要作用 2、BOM的组成2.1 窗口对象window2.1.1 window对象特点2.1.2 window作用域2.1.3 window对象常见方法**第一类&#xff1a;系统对话框**第二类&#xff1a;控制浏览器窗口方法第三类&#xff1a;与定时器有关的方法 1、简介 BOM&#xff08;Browser Ob…

面试算法98:路径的数目

题目 一个机器人从mn的格子的左上角出发&#xff0c;它每步要么向下要么向右&#xff0c;直到抵达格子的右下角。请计算机器人从左上角到达右下角的路径的数目。例如&#xff0c;如果格子的大小是33&#xff0c;那么机器人从左上角到达右下角有6条符合条件的不同路径。 分析…

教学/直播/会议触摸一体机定制_基于展锐T820安卓核心板方案

触控一体机是一种集先进的触摸屏、工控和计算机技术于一体的设备。它取代了传统的键盘鼠标输入功能&#xff0c;广泛应用于教学、培训、工业、会议、直播、高新科技展示等领域。触摸一体机的应用提升了教学、会议和展示的互动性和信息交流。 触摸一体机方案基于国产6nm旗舰芯片…

鸿蒙问题之本地模拟器无法识别

今天按例打开本地模拟器&#xff0c;发现DevEco Studio不能检测到我的本地模拟器了。 重启了DevEco Studio和模拟器多次都无果。果断删除模拟器 然后创建一个新的&#xff0c;就可以成功检测到了。这应该是idea的一个bug

外包干了5个月,技术明显退步了...

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年12月份&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测…

《知识扫盲》ROS和ROS2对比

文章摘选自&#xff1a;ROS与ROS2对比 1.ROS问题举例 ROS的设计目标是简化机器人的开发&#xff0c;如何简化呢&#xff1f;ROS为此设计了一整套通信机制&#xff08;话题、服务、参数、动作&#xff09;。 通过这些通信机制&#xff0c;ROS实现了将机器人的各个组件给的连接…

基于springboot的java读取文档内容(超简单)

读取一个word文档里面的内容&#xff0c;并取出来。 代码&#xff1a; SneakyThrowsGetMapping(value "/readWordDoc")ApiOperationSupport(order 1)ApiOperation(value "文档读取 ", notes "文档读取 ")public R ReadWordDoc () {System.o…

如何在 ChatGPT 上使用 Wolfram 插件回答数学问题

这里写自定义目录标题 写在最前面Wolfram是什么&#xff1f;ChatGPT 如何与 Wolfram 相结合&#xff0c;为什么有效&#xff1f;如何在 ChatGPT 上安装 Wolfram 插件&#xff1f; 写在最前面 参考&#xff1a;https://clickthis.blog/zh-CN/how-to-answer-math-questions-usin…

Codeium在IDEA里的3个坑

转载自Codeium在IDEA里的3个坑&#xff1a;无法log in&#xff0c;downloading language server和中文乱码_downloading codeium language server...-CSDN博客文章浏览阅读1.7w次&#xff0c;点赞26次&#xff0c;收藏47次。Codeium安装IDEA插件的3个常见坑_downloading codeiu…

arr.prototype 数组的方法

1.forEach 作用:遍历这个数组 代码&#xff1a; let arr [10, 20, 30, 40, 50];arr.forEach((item) > {console.log(item);}); 返回值:没有返回值 2.fiflter 作用:过滤数组 代码&#xff1a; let arr [10, 20, 30, 40, 50];let newArr arr.filter((item) > {retu…