包含三维三角网格模型的八叉树结构
pyoctree的Python项目详细描述
包含三维三角形网格模型的八叉树结构。用于 光线跟踪/阴影投射。
用C++编写,用于速度,但使用Python使用Cython进行曝光。
详细信息
PyOctree使用自适应结构,因此它将自动划分 分支以确保每个叶不超过200个对象。
要求
- python 2.7或python>;=3.5
可选
- vtk>;=v6.2.0或>;=v7.0(用于输出vtk文件以在paraview中查看八叉树结构)
- 一个C++编译器,用于从提供的CPP文件(已经CythoN化)构建扩展模块。建议的编译器是:
如果在Windows上使用Python 2,则使用Python 2.7 EME>的微软C++编译器
-如果在Windows上使用Python 3,微软Visual C++ 2015(14)< EEM>
-gcc在Linux上
-mingw32在Windows或Linux上
Cython & gt;= V0.20和C++编译器,从源 编译
注意,如果使用提供的python控制盘进行安装,则不需要编译器。
安装
交集测试通过openmp使用并行处理。使用超过 单处理器,使用提供的python轮或使用 支持OpenMP的编译器。则设置环境变量的值 omp_num_线程到所需处理器的数目。
请注意,anaconda python发行版提供的编译器不支持openmp。
一。从源头建设
要在不使用openmp的情况下编译,请打开命令提示符,浏览到包含setup.py文件的基本目录并键入:
python setup.py install
要使用openmp编译,请打开命令提示符,浏览到包含setup.py文件的基本目录并键入:
python setup.py install --openmp
2.使用python wheel安装
从releases即下载python控制盘。 PyOctree-0.2.10-cp36-cp36m-win_amd64.whl,用于Windows 64位上的Python 3.6。然后,打开命令 提示,浏览到下载目录并键入:
pip install pyoctree-0.2.10-cp36-cp36m-win_amd64.whl
请注意,python控制盘是用openmp构建的。
用法
一。创建三维三角形网格模型的八叉树表示
frompyoctreeimportpyoctreeasottree=ot.PyOctree(pointCoords,connectivity)
其中:
- pointcoords是一个nx3 numpy浮点数组(dtype=float),表示 网格点的三维坐标
- 连接性是nx3 numpy整数数组(dtype=np.int32) 表示网格中每个三元的点连接性
2.寻找网格对象与光线的交集
八叉树可用于快速查找对象之间的交集 还有一束光线。例如:
importnumpyasnpstartPoint=[0.0,0.0,0.0]endPoint=[0.0,0.0,1.0]rayList=np.array([[startPoint,endPoint]],dtype=np.float32)intersectionFound=tree.rayIntersection(rayList)
示例
一些jupyter笔记本在examples目录中提供了如何 使用pyoctree。
帮助
如果需要帮助,请在github上创建一个问题。