使用pip
命令安装项目:
pip install PyPeridyno
推荐使用管理员权限安装在真实环境中。
复制测试代码到新文件GL_GlfwGUI.py:
import PyPeridyno as dyno
scn = dyno.SceneGraph()
app = dyno.GLfwApp()
app.set_scenegraph(scn)
app.initialize(1920, 1080, True)
app.set_window_title("Empty GUI")
app.main_loop()
使用shell运行文件:python -u "/path/GL_GlfwGUI.py"
运行结果如下图所示,说明安装正常:
使用前先导入PyPeridyno包:import PyPeridyno as dyno
使用方法:
python中创建类使用PyPeridyno包中的类即可,python会调用C++代码。类名与C++中的类名相同。例如:C++代码:std::shared_ptr<SceneGraph> scn = std::make_shared<SceneGraph>();
,更改为python代码:scn = dyno.SceneGraph()
。
对于C++中使用了泛型的类,python中改为类名+泛型简写的形式,例如:C++中CodimensionalPD<DataType3f>
在python中为CodimensionalPD3f
。
python中所有方法名称均与C++方法相同,只是从驼峰命名更改为下划线命名。引用运算符(.和->),统一更改为python中的点运算符(.),例如:C++代码:scn->setLowerBound();
,更改为python:scn.set_lower_bound()
。
python中的dyno.Vector3f()
与C++中的dyno::Vec3f()
功能相同,但python中输入数据需要使用列表[],如果数据相同,不可以使用C++中的简写形式,例如:C++:dyno::Vec3f(1)
,更改为python:dyno.Vector3f([1,1,1])
。
使用PyPeridyno时,不支持C++方法中的默认参数,需要完整的写出参数。例如:C++代码:CodimensionalPD<DataType3f>(0.15, 120, 0.001, 0.0001)
,改为python代码为:CodimensionalPD3f(0.15, 120, 0.001, 0.0001, "default")
,需要添加"default"默认参数。
python使用C++中的枚举类型,命名与C++完全相同,调用时需要写出枚举类型名称,例如:GLPointVisualModule::PER_OBJECT_SHADER
,更改为python:dyno.GLPointVisualModule().ColorMapMode.PER_OBJECT_SHADER
。
python中导入文件的路径书写方法与C++相同,需要添加dyno.get_asset_path()
+相对路径,绝对路径也可接受。默认路径为C:\ProgramData\Peridyno\data
,这是在pip安装的时候创建的,不包含源码安装中的数据,有需要可以在data下载。
其余使用方法与C++代码相同。
问题1:为什么要使用管理员权限?
答:pip执行安装过程中,会复制环境变量CUDA_PATH中的cufft64_11.dll文件到环境变量中的python路径下,如果不使用管理员权限,可能会导致复制脚本执行失败,虽然也可以正常安装,不会有报错,但是缺少cufft64_11.dll,会导致无法正常运行。如果没有管理员权限,可以手动复制cufft64_11.dll到python安装路径下。
问题2:python程序运行过程中报错:ImportError: DLL load failed while importing PyPeridyno: 找不到指定的模块。
答:这是cufft64_11.dll文件不兼容或者导入失败导致的,可以看一下自己的CUDA_PATH路径,检查一下CUDA版本是否哦为12.2,可以手动复制CUDA版本为12.2等的cufft64_11.dll到python目录。也有可能是python版本导致的,请使用python3.12
问题3:如何重新安装?
答:执行
pip uninstall PyPeridyno
,之后清除pip缓存pip cache purge
,再重新安装pip install PyPeridyno
。