包含三维三角网格模型的八叉树结构

pyoctree的Python项目详细描述


包含三维三角形网格模型的八叉树结构。用于 光线跟踪/阴影投射。

用C++编写,用于速度,但使用Python使用Cython进行曝光。

Latest PyPI version

详细信息

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上创建一个问题。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用ObjectOutput/InputStream从自定义位置读/写   Java队列数组只打印出打印方法中for循环中的最后一个元素   java如何使用searchManager搜索和筛选listview   java ValueAnimator更改背景颜色   java什么是AOSP工具链?   序列化Java/Serializable仅覆盖已更改的对象   java Android单例类仅在第二次刷新时更新   将文本追加到JTextPane时,JTextPane的java滚动条不可见   java行为和繁忙指示器   javaspring,Thymeleaf和CSS如何给错误着色   java如何在两个测试类之间共享外部资源?   java Druid longSum度量未填充   按下按钮时,java列表不会显示(+字符串参数“流派”不存在)   java在Hibernate中如何延迟加载子记录?   java为对象提供随机统计信息   java如何使用GWT编辑器框架编辑多值字段?