Sofa framework (1) ----- Getting Started

1 Build

1.1 Linux

1.1.1 Linux的准备工作

1.1.1.1 编译器

SOFA至少需要GCC 4.8或Clang 3.4。
使用以下命令安装标准编译工具包(GCC + Make):

sudo apt-get install build-essential

1.1.1.2 CMake:Makefile生成器

SOFA至少需要CMake 3.1。要获取CMake,请执行常用命令:

sudo apt-get install cmake cmake-qt-gui

如果您的配置是Ubuntu 14.04(或类似),则关联的存储库仅提供CMake 2.8.7。幸运的是,一些PPA中提供了更新版本的CMake,例如ppa:george-edison55 / cmake-3.x

sudo add-apt-repository ppa:george-edison55 / cmake-3.x
sudo apt-get update
sudo apt-get install cmake cmake-qt-gui

1.1.1.3 [可选]Ninja:构建系统

Ninja是Make的替代品。它可以更好地处理增量构建。

sudo apt-get install ninja-build

要使用Ninja,请不要忘记将CMake生成器设置为“Codeblocks - Ninja”(如使用CMake生成Makefile中所述)。
如果您已经配置或生成了项目,只需在CMake GUI中设置CMAKE_MAKE_PROGRAM = / usr / bin / ninja即可。

1.1.1.4 [可选] Clang(编译器)

Clang是GCC的替代品。它的编译速度大约快了两倍!

sudo apt-get install clang

要告诉CMake你正在使用Clang,在第一次配置/生成期间使用“指定本机编译器”选项,然后将C编译器设置为/ usr / bin / clang,将C ++编译器设置为/ usr / bin / clang ++。

如果您已经配置或生成了项目,只需在CMake GUI中设置CMAKE_C_COMPILER = / usr / bin / clang和CMAKE_CXX_COMPILER = / usr / bin / clang ++。

如果您更喜欢使用命令行:

cmake -DCMAKE_C_COMPILER = / usr / bin / clang -DCMAKE_CXX_COMPILER = / usr / bin / clang ++ ../../src/

警告:Clang不编译CUDA主机代码,更喜欢GCC(即设置CUDA_HOST_COMPILER = / usr / bin / gcc)

1.1.1.5 [可选] CCache(缓存系统)

如果你在Linux上工作,我们建议你使用ccache。它绝不是强制性的,但如果您对SOFA进行更改,它将显着缩短编译时间。正如ccache网站上所解释的那样:

扫描二维码关注公众号,回复: 3360298 查看本文章
“ccache是​​一个编译器缓存。它通过缓存以前的编译并检测何时再次进行相同的编译来加速重新编译。”

要获取ccache,请执行常用命令:

sudo apt-get install ccache

1.1.1.6 必需的依赖项

最后,SOFA需要一些库:

  • Qt(> = 5.5.0)
    我们建议使用统一安装程序在您的用户目录中安装Qt。
  • Boost(> = 1.54.0)
sudo apt-get install libboost-atomic-dev libboost-chrono-dev libboost -date-time-dev libboost-filesystem-dev libboost-locale-dev libboost -regex-dev libboost-system-dev libboost-thread-dev libboost-program -options-dev
  • Python 2.7
sudo apt-get install python2.7-dev python-numpy python-scipy
  • 其他库:libPNG,libJPEG,libTIFF,Zlib,Glew
sudo apt-get install libpng-dev libjpeg-dev libtiff-dev zlib1g-dev libglew-dev

某些插件依赖于存储库中可用的库。您可能并不需要它们,但您可能会发现安装它们很方便,以后不用担心:

sudo apt-get install libxml2-dev libcgal-dev libblas-dev liblapack-dev libsuitesparse-dev libassimp-dev

1.1.2 建立在Linux上

1.1.2.1 设置源和构建目录

要设置干净的存储库,我们建议按如下方式安排SOFA目录:

sofa/
│───src/
└───build/ 
    │───v17.12/
    └───master/

用于开发目的

如果您希望以开发人员的身份为SOFA代码库做出贡献,请先备份存储库。

然后在master分支上获取开发不稳定版本:

git clone -b master https://github.com/your-username/sofa.git sofa/src/

(不要忘记相应地替换“你的用户名”。)

除此以外

首先从Git存储库下载源代码:

获取v17.12分支上的当前稳定版本:

git clone -b v17.12 https://github.com/sofa-framework/sofa.git sofa/src/

或者在master分支上获得开发不稳定版本:

git clone -b master https://github.com/sofa-framework/sofa.git sofa/src/

1.1.2.2 使用CMake生成Makefile

如果您还没有这样做,请创建一个关于目录排列的构建/文件夹。

运行CMake-GUI并使用Browse Build将Browse文件夹和build文件夹设置为源文件夹。

接下来,运行Configure。弹出窗口将要求您指定项目的生成器。
如果您安装了Ninja,请选择“Codeblocks - Ninja”。否则,请选择“Codeblocks - Makefile”。
选中“使用默认本机编译器”,然后按“完成”。

您需要运行两次配置,因为SOFA需要两次传递来管理模块依赖项。然后,您可以自定义您的SOFA版本,激活或停用插件和功能。

准备好后,按Generate。如果您选择其他生成器,这将创建您的Visual Studio解决方案或您的makefile。

1.1.2.3 故障排除

Qt检测错误

要解决Qt检测错误,请单击Add Entry并添加CMAKE_PREFIX_PATH,其路径/ home / YOUR_USERNAME / Qt / QT_VERSION / COMPILER与您的Qt体系结构相匹配。
示例:CMAKE_PREFIX_PATH = / home / bob / Qt / 5.7 / gcc_64
再次配置。

可能会出现进一步的开发警告:

CMake Warning (dev) at YOUR_QT_PATH/lib/cmake/Qt5Core/Qt5CoreMacros.cmake:224 (configure_file):
configure_file called with unknown argument(s):

COPY_ONLY

Call Stack (most recent call first):
applications/projects/Modeler/exec/CMakeLists.txt:14 (qt5_add_resources)

这只是Qt5CoreMacros.cmake文件的拼写错误。它使用COPY_ONLY而不是COPYONLY。只需编辑Qt5CoreMacros.cmake,将COPY_ONLY替换为COPYONLY并再次配置。

1.1.2.4 编译

要在终端中编译,请转到构建目录并运行make或ninja,具体取决于您在CMake配置期间选择的生成器。
不要忘记使用所有CPU内核的-j选项。

喝咖啡的时间!

1.1.2.5 设置QtCreator

以下说明假定您已按上一节中的说明设置了两个构建目录。

在QtCreator中,打开项目CMakeLists.txt。选择build-release作为构建目录,然后单击Finish。 QtCreator已准备好进行编译,并且构建配置名为“all”,但它对应于Release。

单击左侧的Project按钮,然后将配置从“all”重命名为“Release”。

现在单击add / Build以创建名为“Debug”的新配置。选择build-debug作为构建目录并运行Cmake。如果在上一节中讨论的cmake命令行中设置-G“CodeBlocks - Unix Makefiles”选项,则甚至不需要运行CMake。

您现在可以在QtCreator中在Debug和Release之间切换。编译将使用ccache(如果已安装)完成。您可以通过在左侧的Projects选项卡中将VERBOSE = 1设置为Make的附加参数来进行检查。此外,您可能希望通过设置运行并行编译,例如,-j10是开启10个并行编译,作为Make的附加参数。

1.2 Mac OS X

1.2.1 OS X的准备工作

1.2.1.1 编译器

SOFA至少需要GCC 4.8或Clang 3.4。要确保您具有正确的版本,请执行常用命令:

gcc --version
clang --version

1.2.1.2 LLVM与GCC

MacOS上的默认编译器现在是LLVM(即clang)。 SOFA与Clang兼容,但如果你想使用gcc / g ++,则有必要告诉CMake。

您可以通过设置这些环境变量来执行此操作:CC = gcc和CXX = g ++。这些设置存储在cmake缓存中。设置后,您可以重新使用cmake或cmake-gui,gcc设置不会丢失。

警告:如果您使用的是MacOS 10.8 Mountain Lion,则gcc是clang的别名。要真正使用gcc,请使用CC = llvm-gcc和CXX = llvm-g ++。

1.2.1.3 CMake:Makefile生成器

SOFA至少需要CMake 3.1。要安装CMake,请从下载页面下载最新的DMG软件包。

1.2.1.4 [可选]Ninja:构建系统

Ninja是Make的替代品。它可以更好地处理增量构建。

brew install ninja

要使用Ninja,请不要忘记将CMake生成器设置为“Codeblocks - Ninja”(如使用CMake生成Makefile中所述)。

1.2.1.5 必需的依赖项

要编译SOFA,您需要使用Homebrew安装多个依赖项

  • Qt(> = 5.5.0)
    我们建议使用统一安装程序在您的用户目录中安装Qt。
  • Boost(> = 1.54.0)
brew install boost
  • 其他库:libPNG,libTIFF,libJPEG,Zlib,Glew
brew install libpng libjpeg libtiff glew

1.2.2 在OS X上构建

1.2.2.1 设置源和构建目录

要设置干净的存储库,我们建议按如下方式安排SOFA目录:

sofa/
│───src/
└───build/ 
    │───v17.12/
    └───master/

首先,从Git存储库下载源代码:

获取v17.12分支上的当前稳定版本:

git clone -b v17.12 https://github.com/sofa-framework/sofa.git sofa/src

或者在master分支上获得开发不稳定版本:

git clone -b master https://github.com/sofa-framework/sofa.git sofa/src

1.2.2.2 使用CMake生成Makefile

如果您还没有这样做,请创建一个关于目录排列的构建/文件夹。

运行CMake-GUI并使用Browse Build将Browse文件夹和build文件夹设置为源文件夹。

接下来,运行Configure。弹出窗口将要求您指定项目的生成器。
如果您安装了Ninja,请选择“Codeblocks - Ninja”。否则,请选择“Codeblocks - Makefile”。
选中“使用默认本机编译器”,然后按“完成”。

您需要运行两次配置,因为SOFA需要两次传递来管理模块依赖项。然后,您可以自定义您的SOFA版本,激活或停用插件和功能。

准备好后,按Generate。如果您选择其他生成器,这将创建您的Visual Studio解决方案或您的makefile。

1.2.2.3 故障排除

Qt检测错误

要解决Qt检测错误,请单击Add Entry并添加CMAKE_PREFIX_PATH,其路径/ Users / YOUR_USERNAME / Qt / QT_VERSION / COMPILER与您的Qt体系结构相匹配。
示例:CMAKE_PREFIX_PATH = / Users / bob / Qt / 5.7 / clang_64
再次配置。

可能会出现进一步的开发警告:

CMake Warning (dev) at YOUR_QT_PATH/lib/cmake/Qt5Core/Qt5CoreMacros.cmake:224 (configure_file):
configure_file called with unknown argument(s):

COPY_ONLY

Call Stack (most recent call first):
applications/projects/Modeler/exec/CMakeLists.txt:14 (qt5_add_resources)

这只是Qt5CoreMacros.cmake文件的拼写错误。它使用COPY_ONLY而不是COPYONLY。只需编辑Qt5CoreMacros.cmake,将COPY_ONLY替换为COPYONLY并再次配置。

1.2.2.4 编译

要在终端中编译,请转到构建目录并运行make或ninja,具体取决于您在CMake配置期间选择的生成器。
不要忘记使用所有CPU内核的-j选项。

喝咖啡的时间!

1.2.2.5 设置QtCreator

以下说明假定您已按上一节中的说明设置了两个构建目录。

在QtCreator中,打开项目CMakeLists.txt。选择build-release作为构建目录,然后单击Finish。 QtCreator已准备好进行编译,并且构建配置名为“all”,但它对应于Release。

单击左侧的Project按钮,然后将配置从“all”重命名为“Release”。

现在单击add / Build以创建名为“Debug”的新配置。选择build-debug作为构建目录并运行Cmake。如果在上一节中讨论的cmake命令行中设置-G“CodeBlocks - Unix Makefiles”选项,则甚至不需要运行CMake。

您现在可以在QtCreator中在Debug和Release之间切换。编译将使用ccache(如果已安装)完成。您可以通过在左侧的Projects选项卡中将VERBOSE = 1设置为Make的附加参数来进行检查。此外,您可能希望通过设置-j10来运行并行编译,例如,对于10个并行编译,作为Make的附加参数。 Ubuntu 14.04:默认qtcreator cmake插件有问题,但你可以从这个非官方的存储库轻松安装qtcreator 3.1.1 [1](警告,它使用的是qt4而不是qt5)。

1.3 windows

1.3.1 Windows的准备工作

1.3.1.1 编译器

您需要安装Visual Studio 2015或更高版本。我们建议使用Visual Studio 2015(在我们的仪表板上测试)。

访问Visual Studio下载页面。

注意:您还可以获得VS2015的构建工具或VS2017的构建工具,以在没有所有Visual Studio软件包的情况下安装MSVC。

1.3.1.2 CMake:Makefile生成器

您需要安装CMake 3.1或更高版本。
最简单的方法是从CMake下载页面获取安装程序。

1.3.1.3 [可选]Ninja:构建系统

忍者是NMake的替代品。它可以更好地处理增量构建。
您可以从他们的GitHub存储库下载最新版本。

要使用Ninja,请不要忘记将CMake生成器设置为“Codeblocks - Ninja”(如使用CMake生成Makefile中所述)。

1.3.1.4 必需的依赖项

最后,SOFA需要一些特定的依赖项:

  • Qt(> = 5.5.0)
    我们建议从统一安装程序安装Qt。
  • Boost(> = 1.54.0)
    在此处查找Visual Studio版本的最新官方Boost安装程序。请注意Visual Studio和MSVC版本之间的对应关系(VS-2015 == MSVC-14.0,VS-2017 == MSVC-14.1)。
  • Python 2.7
    在python.org下载页面上获取Python 2.7.x(32位或64位)。
  • 其他库:libPNG,libJPEG,libTIFF,Zlib,Glew
    VS2015用户:下载VS2015的Windows依赖包。
    VS2017用户:下载VS2017的Windows依赖包。
    在克隆SOFA后,您将在SOFA源目录(例如sofa / src /)中解压缩它们(见下文)。

1.3.1.5[可选] PATH修改

要完成依赖项集成,您可以将Boost和Qt添加到PATH(它将使CMake的检测更容易)。
提升:添加/ Boost / path和/ Boost / path / libXX-msvc-XX
Qt:添加/ Qt / path / msvcXXXX_XX / bin和/ Qt / path / msvcXXXX_XX / lib

1.3.2 在Windows上构建

1.3.2.1 设置源和构建目录

要设置干净的存储库,我们建议按如下方式安排SOFA目录:

sofa/
│───src/
└───build/ 
    │───v17.12/
    └───master/

首先,从Git存储库下载源代码:

获取v17.12分支上的当前稳定版本:

git clone -b v17.12 https://github.com/sofa-framework/sofa.git sofa/src/

或者在master分支上获得开发不稳定版本:

git clone -b master https://github.com/sofa-framework/sofa.git sofa/src/

接下来,在您的sources文件夹(sofa / src /)中解压缩您之前下载的Windows的SOFA依赖项。

最后,你应该有这样的事情:

sofa_files

1.3.2.2 使用CMake生成Makefile

如果您还没有这样做,请创建一个关于目录排列的构建/文件夹。

使用Browse Build打开CMake-GUI并使用Browse Source和build文件夹设置源文件夹。

接下来,运行Configure。弹出窗口将要求您指定项目的生成器。如果您安装了Ninja,请选择“Codeblocks - Ninja”。否则,请选择您的Visual Studio版本。如果您有Visual Studio 2015和64位系统,请选择“Visual Studio 14 2015 Win64”。选中“使用默认本机编译器”,然后按“完成”。

您需要运行两次配置,因为SOFA需要两次传递来管理模块依赖项。然后,您可以自定义您的SOFA版本,激活或停用插件和功能。

准备好后,按Generate。如果您选择其他生成器,这将创建您的Visual Studio解决方案或您的makefile。

1.3.2.3 故障排除

Qt检测错误

要解决Qt检测错误,请单击Add Entry并添加CMAKE_PREFIX_PATH,其路径为C:/Qt/X.X/msvcXXXX与您的Qt MSVC文件夹匹配。
示例:CMAKE_PREFIX_PATH = C:/Qt/5.7/msvc2015_64
再次配置。

可能会出现进一步的开发警告:

CMake Warning (dev) at YOUR_QT_MSVC_PATH/lib/cmake/Qt5Core/Qt5CoreMacros.cmake:224 (configure_file):
configure_file called with unknown argument(s):

COPY_ONLY

Call Stack (most recent call first):
applications/projects/Modeler/exec/CMakeLists.txt:14 (qt5_add_resources)

这只是Qt5CoreMacros.cmake文件的拼写错误。它使用COPY_ONLY而不是COPYONLY。只需编辑Qt5CoreMacros.cmake,将COPY_ONLY替换为COPYONLY并再次配置。

检测Boost错误

要解决Boost检测错误,请单击Add Entry并添加类型为PATH的BOOST_ROOT和与Boost lib文件夹匹配的值C:/ boost / boost_1_XX_X。
示例:BOOST_ROOT = C:/ boost / boost_1_61_0
再次配置。

1.3.2.4 编译

如果您在CMake中选择了Visual Studio生成器,那么构建SOFA就像任何其他项目构建一样。只需打开生成的Sofa.sln并构建解决方案。

如果选择其他生成器,则必须从构建目录运行生成器。 Ninja示例:进入构建目录并运行ninja。

喝咖啡的时间!

1.4 Build Options

本节介绍如何修改SOFA的构建配置并尝试记录可用选项。

1.4.1 使用CMake

CMake是一个元构建系统,它为您的工具链中使用的构建系统生成文件(例如Unix Makefiles或Visual Studio解决方案)。为SOFA创建构建目录后,修改构建选项如下所示:

你使用cmake工具修改选项(cmake-gui或ccmake,见下文)
CMake使用当前选项运行项目的配置脚本(a.k.a。“CMake工具中的”配置“)
然后CMake有效地生成构建系统文件(a.k.a。“生成”在CMake工具中)

1.4.1.1 交互式配置

CMake附带了一个GUI工具(cmake-gui)和一个基于诅咒的工具(ccmake),可以交互式地修改构建选项。您可以从命令行调用它们,如下所示:

 cmake-gui <build-directory>

或者

 ccmake <build-directory>

在Windows上,只需启动CMake GUI,并在必要时将构建目录字段设置为正确的路径。使用其中一个工具,您可以编辑要更改的选项,然后运行“配置”以运行配置脚本。请注意,编写脚本是为了在更改选项时自动启用任何所需的依赖项。如果发生这种情况,您将在配置步骤结束时收到警告,您必须再次运行“配置”。同样,如果在配置步骤中发生任何错误,则必须在修复它们后再次运行“配置”。 CMake配置部分的一般规则是您必须点击“配置”,直到没有红色突出显示的部分存在。一旦您对选项感到满意,并且配置步骤成功且没有错误,请运行“生成”以生成构建文件并将其写入构建目录。然后,您可以使用常规构建工具继续编译SOFA。提示:

  • 如果在配置步骤(脚本)中修改或添加了某些选项,则会在cmake-gui中突出显示这些选项;
  • 选项列表很长;如果选中“Grouped”复选框,可能更容易找到您要查找的内容;
  • Cmake将选项存储在缓存(CMakeCache.txt)中,以便下次运行任何cmake工具。如果要从默认配置重新开始,或选择新生成器,请选择“文件”>“删除缓存”。
    Cmake-gui的典型观点

1.4.1.2 命令行配置

直接调用时,cmake会执行配置和生成步骤。如果要从命令行修改配置(例如在脚本中),可以使用-D标志将选项传递给cmake。例如,如果您知道PLUGIN_SOFAPYTHON选项启用了SofaPython插件的编译,您可以像这样启用它:

cmake -DPLUGIN_SOFAPYTHON = ON <build-directory>

1.4.2 配置选项

1.4.2.1 很高兴知道

CMake选项字段可以是布尔值,文件路径,目录路径或基本字符串。例如,您可以在SOFA中找到:

  • PLUGIN_ *选项对应于applications / plugins /中的目录
  • APPLICATION_ *选项对应于applications / projects /中的目录
  • TUTORIAL_ *选项对应于应用程序/教程/中的目录
    例如,SofaPython插件(applications / plugins / SofaPython)由选项PLUGIN_SOFAPYTHON启用,runSofa(applications / projects / runSofa)由选项APPLICATION_RUNSOFA启用。

1.4.2.2 SOFA CMake选项

  • CMAKE_BUILD_TYPE:该字段的典型值是Release和Debug(即使有其他选项,如ReleaseDebInfo,SOFA内部开发人员也没有真正使用过,因此没有经过实际测试)。与值指示一样,Release值表示在Release模式下编译,优化速度,二进制文件的大小。调试值使其在激活调试符号的情况下进行编译,无需代码优化。

  • SOFA_EXTERNAL_DIRECTORIES:外部目录的路径,这对于使用SOFA构建外部插件特别有用。有关更多信息,请阅读有关构建插件的文档。

  • SOFA_BUILD_TUTORIALS:此选项激活位于应用程序/教程中的所有教程的构建。

  • SOFA_BUILD_TESTS:此选项激活SOFA的单元测试。有关更多信息,请转到“测试”页面。

  • SOFA_FLOATING_POINT_TYPE:当明确需要浮点类型时,此选项确定SOFA中几乎所有位置使用的类型(浮点数,双精度数或两者):SReal类型。此选项还定义将编译每个模板化组件的“版本”(float,double或两个实例化)。请注意,使用double会显着缩短编译时间,但之后您将只能使用基于double(Vec3d,Rigid3d,…)的模板参数来模拟仅包含组件的场景。从技术上讲,这将分别激活或停用代码中的宏SOFA_WITH_DOUBLE和SOFA_WITH_FLOAT。

  • SOFA_DUMP_VISITOR_INFO:启用此选项可以在模拟的每个步骤中获得更多调试信息。有关更完整的说明以及如何使用这些信息,请转到“性能分析”部分。

  • SOFA_NO_EXTERN_TEMPLATE:此选项(默认为false)允许在SOFA代码中使用“extern模板”。它将始终为Windows上的DLL激活。在某些平台上,它可以解决RTTI问题(typeid / dynamic_cast),并且可以显着加快每个平台上的编译和链接速度。更多信息:共享库机制。

  • SOFA_NO_OPENGL:此选项将从SOFA中删除任何与OpenGL相关的代码。这对于想要将SOFA用作具有不同渲染系统的库(通常是带有Windows的DirectX)的人特别有用。

  • SOFA_NO_UPDATE_BBOX:此优化标志在模拟的每个时间步骤都禁止计算边界框。

  • SOFA_OPENMP(高级):此标志允许在现有代码中使用OpenMP进行特定计算。一些组件是多线程的openmp pragma。有时超线程会产生奇怪的结果(减慢模拟速度)。要摆脱超线程核心,您必须告诉openmp仅在物理核心上运行应用程序。使用gcc编译时,环境变量GOMP_CPU_AFFINITY允许核心选择,您可以在其中仅选择物理核心。 (例如在bash:export GOMP_CPU_AFFINITY =“0-15”)。可以使用“lstopo”命令获取核心索引(sudo apt-get install hwloc)不要忘记使用OMP_NUM_THREADS环境变量限制最大核心数(导出OMP_NUM_THREADS =“16”)

  • SOFA_USE_MASK:这会激活一个优化,以运行涉及蒙版(对象的子部分)的模拟。但是,与约束算法一起使用时,此功能称为敏感功能。默认设置为false。

  • SOFA_WITH_EXPERIMENTAL_FEATURES:激活正在进行的一些实验性工作。没有给出关于代码质量或编译的保证。但是,这可以及早获得SOFA中的新功能。

2 Run Sofa

SOFA的编译产生一个二进制文件runSofa,可以在文件夹%{SOFA_BUILD_DIR} / bin中找到。二进制文件的执行 - 通过终端或双击实例 - 启动名为caduceus的默认XML场景。使用默认场景caduceus
执行runSofa

2.1 启动SOFA

二进制runSofa可以使用不同的选项启动,可以通过命令行启用。您可以在命令行中使用参数’-h’显示可用的不同选项:runSofa -h我们获得以下输出:

This is a SOFA application. Here are the command line arguments (short name, long name, description, default value)
    -h, --help: this help 
    -a, --start: start the animation loop  (default: false ) 
    -c, --computationTimeSampling: Frequency of display of the computation time statistics, in number of animation steps. 0 means never.  (default: 0 ) 
    -g, --gui: choose the UI (batch|glut|glut-mt|qglviewer|qt)  (default:  ) 
    -l, --load: load given plugins  (default: ) 
    -n, --nb_iterations: (only batch) Number of iterations of the simulation  (default: 1000 ) 
    -p, --factory: print factory logs  (default: false ) 
    -r, --recent: load most recently opened file  (default: false ) 
    -s, --simu: select the type of simulation (bgl, dag, tree, smp)  (default: tree ) 
    -t, --temporary: the loaded scene won't appear in history of opened files  (default: false ) 
    -v, --verification: load verification data for the scene  (default:  ) others: file names`

开始使用runSofa时,以下选项可能对您有价值:

-a:runSofa直接启动动画(无需按动画按钮)

-c:显示有关模拟计算时间的有趣统计信息。分析模拟的性能或对为SOFA开发的插件进行基准测试非常有用。参数后面的值确定转储统计信息之前要等待的模拟步骤数(-c 10将每10个模拟步骤显示一次)

-g允许您在SOFA中开发的现有用户界面之间进行选择:-qglviewer:default interface -batch:命令行界面(仅显示统计信息)

-l允许您通过指定其名称来加载SOFA插件

-n指定关闭runSofa之前要运行的模拟步骤数。只能与“-g batch”一起使用

加载并运行特定场景

runSofa加载的默认场景名为“caduceus.scn”。此场景文件可以在%{SOFA_SOURCE_DIR} / examples / Demos中找到,以及其他演示场景。现在让我们看看如何加载其中一个场景:

在runSofa界面中,您可以通过“文件 - >打开”菜单(Ctrl + O)选择场景文件,只需按“动画”按钮即可运行它。
如果从命令行启动runSofa,还可以指定要作为参数加载的场景文件。

2.2 SOFA GUI

要开始模拟,请按“Animate” - 以每秒帧数(fps)为单位的模拟速度,以及以秒为单位的模拟时间的提前将显示在左下角。如果需要具有更低或更高细节时间的模拟,则调整参数“DT”。通过单击“步骤”可以实现逐步推进模拟与步长DT。要重新启动场景,请使用“重置场景”。可执行文件右侧可视化的摄像头由鼠标移动控制,并且:

  • 鼠标左键改变相机的旋转
  • 用鼠标右键翻译相机
  • 鼠标中键可放大和缩小。
  • 可以分别使用“保存视图”和“重置视图”按钮保存和恢复摄像机位置和方向。当点击鼠标左键并在班次时,可以通过鼠标移动来操纵运行模拟。可以在“查看器”选项卡中找到键盘的更多用途:

  • B:改变背景

  • C:切换交互模式:按键C.允许或不使用鼠标导航。
  • O:导出到.OBJ生成的文件scene-time.obj和scene-time.mtl保存在正在运行的项目目录中
  • P:保存OBJ的序列每次更新帧时,都会导出obj
  • R:画出场景轴
  • S:保存屏幕截图捕获的图像以名称格式capturexxxx.bmp保存在正在运行的项目目录中
  • T:在视角或正交相机之间进行更改
    (Shift +)V:保存视频每次更新帧时都会保存屏幕截图。屏幕截图保存在文件夹%{SOFA_DIR} / share / screenshots中。如果该文件夹不存在,则需要创建该文件夹。
  • Esc:TO QUIT :: sofa ::

3 Modeler

注意:Modeler是一个尚未维护很长时间的应用程序。 SOFA论坛报告的问题很少。在不久的将来,Modeler将会更新。

3.1 什么是Modeler?

Modeler是一个使用Qt的图形工具,旨在简化沙发场景的创建,并提供所有可用内容的信息,以及如何使用它们。它允许您在Sofa场景图中动态创建/删除/配置组件,并启动Sofa应用程序以直接查看您获得的行为。一旦您满意,您可以将场景图保存到xml文件,稍后在Sofa中使用它。

3.2 场景图

  • 加载所有.scn文件,显示其场景图,并允许您修改每个组件
  • 直接从Modeler启动当前正在Sofa中构建的场景(使用主菜单中的runSofa或CTRL + R)
  • 预设:这是最有用的功能之一,我们稍后会详细介绍,但基本上,只需3次点击,它就可以让绝对不了解沙发的人使用3D网格创建可变形/刚体!
    ModelerSceneGraph
    点击放大三个步骤:
    Modeler1
    Modeler2
    Modeler3

3.3 库

显示SOFA中可用的所有组件:在应用程序的左侧,您可以找到按组分类的组件库
使用关键字过滤组件:在过滤器区域中输入文本Triangle会将库缩减为名称中包含单词Triangle的唯一组件。

3.4 文档

  • 继承
  • 描述
  • 命名空间
  • 作者
  • 执照
  • 一些例子场景。它们显示为链接,通过单击它们,您可以在Modeler中直接打开它们:只需按CTRL + R即可测试场景。

3.5 灵活性

  • 库的每个组件都是一个按钮:通过将它们拖放到场景图的节点中,您实际上将它添加到模拟中。
    • 首先点击组件,
    • 按住鼠标按钮,将光标移动到要放置新组件的位置
    • 如果在节点上方放下(释放鼠标按钮),组件将放置在节点的所有当前Sofa组件之后
    • 如果您放在组件上方,它将被放置在此组件上方。
  • 保存场景或节点
  • 复制/粘贴节点或组件
  • 按DEL键从场景图中删除组件或节点
  • 撤销重做
  • 错误检测:自动检测模板上的错误并显示给用户。
    Modeler的目标是让你对沙发的理解变得活跃。尝试你想要的任何场景,修改组件,添加一些,删除其他,然后按CTRL + R,然后在SOFA中尝试。您不再需要了解所有组件的名称及其参数,只需将它们从库中拖放到场景图中,然后进行编辑即可。这可以通过双击场景图中的组件来完成,就像在SOFA主应用程序内部一样。

提示#1 : 添加指向Modeler中示例场景的链接
要在Modeler中链接一个示例,您必须创建一个与组件名称完全相同的.scn文件。它必须放在examples / Components和与其基类对应的子目录中(forcefield,constraint,…)

提示#2 : 特殊场景的图形文档
要弹出场景的小文档,当在Sofa中加载时,您需要创建一个与.scn文件同名的.html文件。可以在示例/ Demos / chainHybridNoGroup.scn中找到示例。

4 Tutorials

注意:教程中详述的每个场景也可以直接使用runSofa应用程序启动。

4.1 教程应用程序

SOFA Tutorials的源文件位于SOFA_DIR / examples / Tutorials文件夹中.Tutorial Application嵌入在SOFA Modeler中。要启动它,首先启动Modeler,然后转到Tutorial Menu,或者只需单击其图标即可。 ModelerTutorialLaunch
一旦启动,它看起来像:
Tutorial_launched
最初,它由两部分组成,从左到右:
+ 教程选择器:我们可以选择不同类别的教程:Step by Step,Collision,ForceFields,Mappings,…或整个SOFA教程“All Sofa Tutorials”。
+ 基于HTML的描述:对应类别的简要描述。
当选择类别(例如逐步)时,如果我们双击该类别的组件,则会出现第三部分:
+ SOFA场景图:SOFA组件的表示。您可以通过右键单击该组件来修改/删除组件。您还可以通过单击“在建模器中编辑”将另一个组件添加到场景图中。在Modeler中,您可以使用SOFA运行场景(请参阅Modeler)
ModifyComponent

猜你喜欢

转载自blog.csdn.net/mobius_strip/article/details/81268476