1. 下载与安装
下载链接:
先安装需要的库:
1 | sudo apt-get install gcc |
2. 环境配置
2.1 boost 库(手动配置)
在 HYLC 的 CMAKEList.txt
文件中需要该版本的库,建议选择 1.55.0
版本(其实在 1. 中已经安装了 boost 库) :
参考文章:
1 | wget http://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.gz |
boost库被安装在 /usr/local/lib
下面
2.3 scons(手动配置)
JsonCPP 类库需要 Scons 编译器来编译,而 Scons 需要 Python 安装了才能使用。
下载链接 :
将压缩包 scons-local-4.0.1.tar.gz
在文件目录 /arcsim-0.2.1/dependencies/jsoncpp/
下解压:
1 | sudo tar -xf scons-local-4.0.1.tar.gz |
可以手动安装 scons ,后面 make 的过程也会进行一次该步骤 test 一下:
1 | python3 scons.py platform=linux-gcc Gnu C++ |
具体查阅 /arcsim-0.2.1/dependencies/jsoncpp/README.txt
2.4 SConstruct 文件修改
python2 to python3
在 arcsim-0.2.1/dependencies/jsoncpp/SConstruct
文件中使用的 python2 代码编写,如果环境是 python3 ,则需要更改 /arcsim-0.2.1/dependencies/jsoncpp/SConstruct
一部分代码。
2.4.1 print
给所有的 print 添加括号。
2.4.2 commands
其中 commands
模块在 python3.x 被 subprocess
取代,点开:
1 | import commands |
line 28,29 换成:
1 | import subprocess |
2.4.3 name ‘apply’ is not defined
参考方案:
https://blog.csdn.net/hellenlee22/article/details/90906476
1 | apply( self.env.SrcDist, (self.env['SRCDIST_TARGET'],) + args, kw ) |
将 Line 144 代码改成:
1 | self.env.SrcDist( *(self.env['SRCDIST_TARGET'],) + args, **kw ) |
2.5 make 依赖项(/dependencies/)
在 arcsim-0.2.1/dependencies/
文件夹下进行 make :
1 | make |
当第二次 make 输出结果是如下时,说明成功:
2.6 make arcsim
2.6.1 预处理
参考文章:
修改代码文件 /arcsim-0.2.1/src/sparse.hpp
的 Line 118 :
- 将
<< file
更改为<< std::endl
将代码文件 /arcsim-0.2.1/src/sparse.hpp
的 Line 805 811 注释掉:
1 | [805] extern int isnan(double); |
修改文件 /arcsim-0.2.1/Makefile
:
- 将三个
-mt
删掉; - 在
CXXFLAGS
与LDFLAGS
添加下载的 boost 库的路径 (如果是按前面操作安装的boost,则路径为/usr/local/lib
)
Line 7,14 的代码为:
1 | CXXFLAGS := -Idependencies/include -I/opt/local/include -I/usr/local/include |
参考文章:
2.6.2 进行 make
在 /arcsim-0.2.1/
目录下进行 make ,如果是以下显示,说明 make 成功:
测试一下:
1 | ./bin/arcsim simulate conf/sphere.json |
按 s
进行 step 。
3. 使用方法
参考文章:
3.1 使用命令
在控制台输入命令:
1 | bin/arcsim <command> [<args>] |
可以做个软连接:
1 | sudo ln -s <arcsim path>/arcsim /bin/ |
这时可以全局直接调用命令:
1 | arcsim <command> [<args>] |
命 令 | |
---|---|
simulate <scene-file> [<out-dir>] |
读取 <scene-file> 中给出的 .json 文件(尝试 conf / sphere.json ,然后参见下面的 “场景文件” ),并在显示结果的同时运行模拟 OpenGL 窗口。按住 Space 键运行,或按一次 s 可向前移动一个时间步。如果给出 <out-dir> ,则模拟结果将保存在该目录中。输出的格式在 “输出文件” 中描述。 |
simulateoffline <scene-file> [<out-dir>] |
离线渲染,与 simulate 相同,但没有OpenGL显示。(并且您不必按 Space 键即可开始模拟。)对于通过SSH在远程服务器上运行非常有用。 |
resume <out-dir> <resume-frame> |
恢复 <out-dir> 中保存的未完成模拟,从给定的帧号 <resume-frame> 开始。(请注意,如果自首次运行模拟以来原始场景文件已更改,则在恢复的模拟中不会考虑这些更改。) |
resumeoffline <out-dir> <resume-frame> |
与 resume 相同,但没有 OpenGL 显示。 |
replay <out-dir> [<sshot-dir>] |
重放存储在 <out-dir> 中的模拟结果(保证该目录下存在 conf.json 文件 )。按 Space 键播放,← 和 → 在帧之间移动;Shift + → 和 Alt + → 分别跳过 10 帧和 100 帧。按空格键可以尽可能快地播放所有帧。 Home 关键点返回到第 0 帧。如果给定了 <sshot-dir> ,则播放时渲染的图像也会保存在那里。 |
merge |
|
split |
|
test |
|
tri2obj |
|
debug |
3.2 OpenGL 界面操作
操 作 | |
---|---|
Space |
开始模拟 / 播放 |
鼠标左键 |
旋转 |
鼠标中键 |
位移 |
鼠标滑轮 |
缩放 |
Esc |
退出 |
3.3 场景配置文件(.json)
场景配置文件以 JSON语法 编写。
conf/
目录中提供了许多示例场景:
conf/sphere.json
:球体交互示例,是一个很好的 “hello world” 场景,用于检查模拟器是否正在工作;- 场景文件由单个 JSON 对象组成,其中包含许多描述模拟参数和内容的 key/value 对。
conf/sphere-annotated.json
:有关所有选项的完整描述,是conf/sphere.json
的一个带有大量注释的版本,描述了所有可以使用的设置。
conf/sphere-annotated.json :
1 | { |
3.4 创建仿真网格
// TODO
3.5 输出文件
文件名 | |
---|---|
conf.json |
是用于运行模拟的场景文件的副本。用于 resume 、 replay 和一般未来参考。 |
<frame>_<i>.obj |
是指定帧数 <frame> 的 第 <i> 个布料的网格。模拟可以有多件布料,例如踢腿角色的裤子、T恤和背心。 |
obs_<j>.obj |
是第 <j> 个障碍物在其参考姿势下的几何体的副本。 |
<frame>obs<j>.txt |
是描述指定帧数 <frame> 第 <j> 个障碍的变换的 XML 片段。它仅用于在渲染时插入 Mitsuba 场景文件。在恢复( resume )和重播( replay )代码时会忽略它,而是根据 conf.json 中的规范重新构建障碍运动。 |
timing |
在模拟的每个 routine 的每个时间步花费的挂钟计算时间的转储。 |