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字也实属不易,如果大家觉得这篇文章对你有帮助或有问题讨论,欢迎下方评论留言,也感谢点赞和关注!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是Alibaba Cloud Linux?完全兼容CentOS,详细介绍

Alibaba Cloud Linux是基于龙蜥社区OpenAnolis龙蜥操作系统Anolis OS的阿里云发行版,针对阿里云服务器ECS做了大量深度优化,Alibaba Cloud Linux由阿里云官方免费提供长期支持和维护LTS,Alibaba Cloud Linux完全兼容CentOS/RHEL生态和操作方式…

Ubuntu22.04系统安装软件、显卡驱动、cuda、cudnn、pytorch

Ubuntu22.04系统安装软件、显卡驱动、cuda、cudnn、pytorch 安装 Nvidia 显卡驱动安装 CUDA安装 cuDNN安装 VSCode安装 Anaconda 并更换源在虚拟环境中安装 GPU 版本的 PyTorchReference 这篇博文主要介绍的是 Ubuntu22.04 系统中软件、显卡驱动、cuda、cudnn、pytorch 等软件和…

ubuntu 安装 anaconda

ubuntu 安装 anaconda 下载 wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh安装 bash Anaconda3-2023.09-0-Linux-x86_64.sh2.1 回车继续 2.2 许可协议 输入 q 退出阅读许可协议 2.3 输入 yes 接受 许可协议 2.4 设置 anaconda 安装位置 如不需…

轻松获取CHATGPT API:免费、无验证、带实例

免费获取和使用ChatGPT API的方法 快速开始:视频教程 章节一:GPT-API-Free开源项目介绍 GPT-API-Free 是一个开源项目,它提供了一个中转API KEY,使用户能够调用多个GPT模型,包括gpt-3.5-turbo、embedding和gpt-4。这…

C#中的值和引用笔记

文章目录 1. 简单介绍2. 如何判断值类型和引用类型3. 语句块4. 变量的生命周期5. 结构体中的值和引用6. 数组中的存储规则7. 结构体继承接口 1. 简单介绍 2. 如何判断值类型和引用类型 在代码中直接转到内部F12 如string类型 值类型int 3. 语句块 4. 变量的生命周期 5. 结构…

实现网页跟随系统主题切换

如何实现网页跟随系统主题切换?想必大家都是用过媒体查询media (prefers-color-scheme: dark) 实现亮/暗主题的切换,那如何让其跟随系统自动切换呢?在window对象上,有matchMedia这个API可以帮助我们解决这个问题。它和css中的媒体…

聚类分析 | Matlab实现基于RIME-DBSCAN的数据聚类可视化

聚类分析 | Matlab实现基于RIME-DBSCAN的数据聚类可视化 目录 聚类分析 | Matlab实现基于RIME-DBSCAN的数据聚类可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.聚类分析 | Matlab实现基于RIME-DBSCAN的数据聚类可视化(完整源码和数据) 2.多特征输入&…

Ubuntu 本地部署 ChatGPT-Next-Web

Ubuntu 本地部署 ChatGPT-Next-Web 文章目录 Ubuntu 本地部署 ChatGPT-Next-Web ChatGPT-Next-Web 项目地址:https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web 本文主要演示如何在 Ubuntu 本地(默认是端口 3000)部署 ChatGPT-Next-Web&am…

【unity小技巧】FPS游戏实现相机的震动、后坐力和偏移

最终效果 文章目录 最终效果前言相机的震动实现后坐力和偏移相机震动相机震动脚本换弹节点震动 武器射击后退效果完结 前言 关于后坐力之前其实已经分享了一个:FPS游戏后坐力制作思路 但是实现起来比较复杂,如果你只是想要简单的实现,可以看…

tolist()读取Excel列数据,(Excel列数据去重后,重新保存到新的Excel里)

从Excel列数据去重后,重新保存到新的Excel里 import pandas as pd# 读取Excel文件 file r"D:\\pythonXangmu\\quchong\\quchong.xlsx" # 使用原始字符串以避免转义字符 df pd.read_excel(file, sheet_namenameSheet)# 删除重复值 df2 df.drop_duplica…

大一,如何成为一名fpga工程师?

​ 1、数电(必须掌握的基础),然后进阶学模电(选学), 2、掌握HDL(HDLverilogVHDL)可以选择verilog或者VHDL,建议verilog就行。 3、掌握FPGA设计流程/原理(推…

多平台多账号一站式短视频管理矩阵营销系统

矩阵营销系统多平台多账号一站式管理,一键发布作品。智能标题,关键词优化,排名查询, 混剪生成原创视频,账号分组,意向客户自动采集,智能回复,多账号评论聚合回复, 免切…

windows 在指定目录下打开 cmd,不用层层进入

一、进入需要打开的目录下 二、在选中的状态下,输入 cmd,然后回车即可

MATLAB习题操作实战

2.1创建一个有7个元素的一维数组,并做如下处理:直接寻访一维数组的第6个元素;寻访一维数组的第1、3、5个元素;寻访一维数组中第4个至最后1个元素;寻访一维数组中大于70的元素。 % 创建一维数组 array [50, 60, 70, 80, 90, 100, 110];% 直接寻访一维数组的第6个元…

如何充值GPT会员账号?

详情点击链接:如何充值GPT会员账号? 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析,AI画图,图像识别,文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Claude2二定制自己的…

书生·浦语大模型全链路开源体系(陈恺|上海人工智能实验室 青年科学家)-听课笔记

大模型重要性 大模型确实已成为发展通用人工智能(AGI)的重要途径。它们通过整合和处理大量数据,学习语言、图像、声音等多种模式的表示,以此来模拟人类的学习和思维方式。通过不断地学习和优化,这些模型能够在各种任…

用户管理第2节课--idea 2023.2 后端--实现基本数据库操作(操作user表) -- 自动生成 --【本人】

一、插件安装 1.1 搜索插件 mybatis 安装 1.2 接受安装 1.3 再次进入,说明安装好了 1.4 与鱼皮不同点 1)mybatis 版本不一致 鱼皮: 本人: 2)鱼皮需重启安装 本人不需要 1.5 【需完成 三、步骤,再来看】 …

系列七、Ribbon

一、Ribbon 1.1、概述 Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具,是Netflix发布的一款开源项目,其主要功能是提供客户端的软件负载均衡算法和服务调用,Ribbon客户端组件提供一系列完善的配置项,例如&#xff1a…

linux用户态与内核态通过字符设备交互

linux用户态与内核态通过字符设备交互 简述 Linux设备分为三类,字符设备、块设备、网络接口设备。字符设备只能一个字节一个字节读取,常见外设基本都是字符设备。块设备一般用于存储设备,一块一块的读取。网络设备,Linux将对网络…

异常控制流ECF

大家好,我叫徐锦桐,个人博客地址为www.xujintong.com,github地址为https://github.com/jintongxu。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家访问。 一、异常控制流(ECF) 现代…