1、CADMesh开源代码介绍
1.1 开源代码下载,放一个CADMesh的github链接,链接可能很慢。
gitee为搬过来的,速度快一些,同时网盘里有备份Cadmesh,链接在左下角“阅读原文”。
github链接:https://github.com/christopherpoole/CADMesh.git
gitee链接:https://gitee.com/hatiden/CADMesh.git
1.2 README讲解
下载完开源代码后,不是随便选个文件编译一下,一定是看源代码目录下的README文件。
在CADMesh根目录下的CADMesh.hh是一个单独的文件,这个文件大小为63k,如下图所示,直接拷贝到include目录就可以使用。
可以调用的格式有STL、PLY、OBJ。
这几行代码解释了一下CADMesh.hh如何使用,看起来很简单,按上图的第6行包含头文件,第8行定义一下mesh变量,第9行直接就可以转化为solid实体了,后续就是构建logicsolid,physicalsolid了
有兴趣的用户,可以自行学习ASSIMP和TETGEN的3D模型读写库的解析。
在第76行说明,在创建G4TesselatedSolid中的默认度量是1mm,setScale为缩放因子,其主要功能为英制与公制的转换。在第82行说明,如果画图的原点跟Geant4中的原点对不上,可以用mesh—>SetOffset(X,Y,Z)平移一下。
我们在CADMesh下的example文件夹下还发现有个README跟本文章有关系。按照这个README的提示,我们测试编译了一下,成功了,如下图
basic可视化,使用的OPENGL,不好看,所以,接下来我们在Geant4中中自带的例子B1,加入CADmesh,使用Qt可视化。
2、Geant4中B1加入CADMesh
2.1将geant4自带的B1例子重命名为B1-cadmesh,B1-cadmesh例程会放到网盘供大家下载
2.2我们在CADMesh根目录下的meshes文件夹内找到扩展名为.stl的bunny.stl。就是上图那只可爱的兔子,复制到B1-cadmesh根目录下,然后在CADMesh根目录下找到CADMesh.hh,复制到B1-cadmesh根目录下的include目录内,按照如下图更改CMakeLists.txt,将bunny.stl添加在(EXAMPLEB1_SCRIPTS)内,如下图所示。
2.3 在B1DetectorConstruction.cc,内加入 #inlcude CADMesh.hh,因为只想看那只兔子,方便可视化,所以将其他几何体相关代码删除。
在CADMesh根目录下的examples/basic目录下,找到basic.cc,打开后找到如下图相关代码,复制到B1DetectorConstruction.cc。修改一下第127行的world_logial为logicWorld(为B1中定义的世界体的逻辑体)。
编译一下程序,然后运行,出现了一只的三维可视化的兔子。
我们再测试其他stl,找到可爱的miku.stl(网盘下载,作者已经上传,放到B1-cadmesh内),按照上述修改bunny.stl的方法,添加miku.stl
然后在B1DetectorConstruction.cc里注释掉bunny那一行,编译一下程序,然后运行。发射点粒子看看,灯光效果还不错。
测试成功,例子在网盘里有,可以直接下载。
提取码:zjnw
更多推荐 G4教程11.2-物理过程II之物理过程和产物阈值(下) G4教程10.0 初级粒子源 G4教程9.3 几何体1-3 G4教程9.1 几何体1-2 G4教程9.1 几何体1-1