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

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 Spring data rest域驱动设计发布非聚合根实体   使用ContentValues提升整数列的值(Java、Android)   Google应用程序引擎(Java)+Spring管理的PersistenceManager   java如何使用JDT获取封闭方法节点?   java在字符串中首先计算负数运算   java Android如何在单击按钮时更改底部导航项的颜色   java理解Javafx运行时错误   swing Java创建笔刷笔划动作   java在非Netty客户端中从Netty服务器获取响应   java计数将参数传递给方法   java Android AIDL gen文件导致警告?   swing Java JFrame互动程序   scjp测试中的java正则表达式测试   Java中的桌面应用   java我可以使用spring security在cookies中存储完整的用户信息吗?记住我   java中棘手的方法重载   java忽略Mockito中的方法调用   java skipUntil和具有并发1的flatMap挂起在Reactor中   为什么我要关闭java。util。扫描仪变量?