范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

点云转3D网格自动化流程Python

  在本文中,我将介绍我的 3D 表面重建过程,以便使用 Python 从点云快速创建网格。 你将能够导出、可视化结果并将结果集成到您最喜欢的 3D 软件中,而无需任何编码经验。 此外,我将为你提供一种生成多层次细节 (LoD) 的简单方法,如果想要创建实时应用程序(例如,使用 Unity 的虚拟现实),这很有用。
  推荐:使用 NSDT场景设计器 快速搭建 3D场景。
  3D 网格是几何数据结构,通常由一堆连接的三角形组成,这些三角形明确描述了一个表面。 它们用于从地理空间重建到 VFX、电影和视频游戏的广泛应用。 我经常在需要物理副本时创建它们,或者如果我需要在游戏引擎中集成环境,而在游戏引擎中,点云支持是有限的。
  它们很好地融入了大多数软件专业人员的工作中。 最重要的是,如果你想探索 3D 打印的奇迹,需要能够从你拥有的数据生成一致的网格。 本文旨在通过 5 个可自定义的步骤为你提供高效的工作流程,并在文末提供我的远程可执行脚本。 让我们开始吧! 1、搭建环境
  在上一篇文章中,我们了解了如何使用 Anaconda 轻松设置环境,以及如何使用 GUI Spyder 来管理代码。 我们将继续这种方式,只使用 2 个库。
  为了从点云中自动获取 3D 网格,我们将在我们的环境中添加另一个库 Open3D。 它是一个开源库,允许使用一组高效的数据结构和算法进行 3D 数据处理。 安装需要单击环境旁边的 ▶️ 图标。
  打开终端并运行以下命令: conda install -c open3d-admin open3d==0.8.0.0
  注意:Open3D包兼容python 2.7、3.5和3.6版本。 如果你有另一个,你可以创建一个新环境(最好),或者如果你从上一篇文章开始,通过在终端中输入 conda install python=3.5 来更改终端中的 python 版本。
  这将自动安装包及其依赖项,你可以在终端提示时输入 y 以允许此过程。 现在已经为项目做好了准备。 2、加载并准备数据
  启动你的 python 脚本工具(Spyder GUI、Jupyter 或 Google Colab),我们将在其中调用 2 个库:Numpy 和 Open3D。 import numpy as np import open3d as o3d
  然后,我们创建保存数据路径和点云数据的变量: input_path="your_path_to_file/" output_path="your_path_to_output_folder/" dataname="sample.xyz" point_cloud= np.loadtxt(input_path+dataname,skiprows=1)
  注意:至于上一篇文章,我们将使用采样点云,你可以从该存储库免费下载。 如果你想在不安装任何东西的情况下预先可视化它,你可以查看 webGL 版本。
  最后,我们将 point_cloud 变量类型从 Numpy 转换为 Open3D o3d.geometry.PointCloud 类型以进行进一步处理: pcd = o3d.geometry.PointCloud() pcd.points = o3d.utility.Vector3dVector(point_cloud[:,:3]) pcd.colors = o3d.utility.Vector3dVector(point_cloud[:,3:6]/255) pcd.normals = o3d.utility.Vector3dVector(point_cloud[:,6:9])
  注意:以下命令首先实例化Open3d点云对象,然后从原始NumPy数组中添加点、颜色和法线。
  要快速查看加载的内容,可以执行以下命令(在 Google Colab 中不起作用): o3d.visualization.draw_geometries([pcd])3、选择网格生成策略
  现在我们准备好通过对 pcd 点云进行网格化来开始表面重建过程。 我将给出我最喜欢的有效获取结果的方法,但在我们深入研究之前,需要一些浓缩的细节来掌握底层过程。 我将限制自己使用两种网格生成策略。 策略一:球旋转算法
  球旋转算法 (BPA:Ball-Pivoting Algorithm) 背后的想法是模拟使用虚拟球从点云生成网格。 我们首先假设给定的点云由从物体表面采样的点组成。 点必须严格代表一个表面(无噪声),即重建的网格。
  基于这个假设,想象一下在点云"表面"上滚动一个小球。 这个小球取决于网格的比例,应该略大于点之间的平均间距。 当你将球放到点的表面上时,球将被抓住并落在将形成种子三角形的三个点上。 从那个位置开始,球沿着由两点形成的三角形边滚动。 然后球落在一个新的位置:一个新的三角形由两个先前的顶点组成,一个新的三角形被添加到网格中。 当我们继续滚动和旋转球时,会形成新的三角形并将其添加到网格中。 球继续滚动和滚动,直到网格完全形成。
  Ball-Pivoting Algorithm 背后的想法很简单,但当然,这里最初表达的过程有很多注意事项: 球半径如何选择? 半径是根据输入点云的大小和比例凭经验获得的。 理论上,球的直径应该略大于点间的平均距离。 如果某些位置的点相距太远并且球掉落怎么办? 当球沿边缘旋转时,它可能会错过表面上的适当点,而是击中物体上的另一个点,甚至正好是它的三个旧点。 在这种情况下,我们检查新三角形 Facet 的法线是否与点的 Vertex 法线一致。 如果不是,那么我们拒绝那个三角形并创建一个洞。 如果表面有折痕或凹陷,使得表面与自身之间的距离小于球的大小怎么办? 在这种情况下,球只会滚过折痕而忽略折痕内的点。 但是,这不是理想的行为,因为重建的网格对对象不准确。 如果表面被分隔成点区域,以至于球无法在区域之间成功滚动怎么办? 虚拟球在不同位置多次落到表面上。 这可确保球捕获整个网格,即使点的间距不一致也是如此。
  策略二:泊松重建
  泊松重建更具技术/数学意义。 它的方法被称为隐式网格划分方法,我将其描述为试图将数据"包裹"在光滑的布料中。 在不涉及太多细节的情况下,我们尝试通过创建一个代表与法线链接的等值面的全新点集来从原始点集拟合水密表面。 有几个参数可以影响网格划分的结果: 怎么设置深度? 树深度用于重建。 网格越高越详细(默认值:8)。 对于嘈杂的数据,你在生成的网格中保留异常值的顶点,但算法不会检测到它们。 所以较低的值(可能在 5 到 7 之间)提供平滑效果,但您会丢失细节。 深度值越高,生成的网格的顶点数量就越高。
  怎么设置宽度? 这指定了树结构最细级别的目标宽度,称为八叉树。 别担心,我将在另一篇文章中介绍这个和 3D 的最佳数据结构,因为它扩展了本文的范围。 无论如何,如果指定了深度,则忽略此参数。 怎么设置缩放比例? 它描述了用于重建的立方体的直径与样本边界立方体的直径之间的比率。 非常抽象,默认参数通常效果很好(1.1)。
  使用哪种拟合算法? linear_fit 参数如果设置为 true,让重建器使用线性插值来估计等顶点的位置。 4、处理数据策略 1:BPA
  我们首先根据从所有点之间的距离计算出的平均距离来计算必要的半径参数: distances = pcd.compute_nearest_neighbor_distance() avg_dist = np.mean(distances) radius = 3 * avg_dist
  在一个命令行中,我们可以创建一个网格并将其存储在 bpa_mesh 变量中: bpa_mesh = o3d.geometry.TriangleMesh.create_from_point_cloud_ball_pivoting(pcd,o3d.utility.DoubleVector([radius, radius * 2]))
  在导出网格之前,我们可以将结果下采样到可接受的三角形数量,例如 100k 个三角形: dec_mesh = mesh.simplify_quadric_decimation(100000)
  此外,如果你认为网格会出现一些奇怪的伪影,可以运行以下命令来确保其一致性: dec_mesh.remove_degenerate_triangles() dec_mesh.remove_duplicated_triangles() dec_mesh.remove_duplicated_vertices() dec_mesh.remove_non_manifold_edges()策略 2:泊松重建
  注意:该策略从Open3D 0.9.0.0版本开始可用,因此目前只能远程使用。 你可以通过我在此处提供的 google colab 代码执行它。
  要获得泊松结果,非常简单。 只需调整传递给函数的参数,如上所述: poisson_mesh = o3d.geometry.TriangleMesh.create_from_point_cloud_poisson(pcd, depth=8, width=0, scale=1.1, linear_fit=False)[0]
  注意:该函数输出一个列表,该列表由一个 o3d.geometry 对象和一个 Numpy 数组组成。 你只需要选择最后证明 [0] 的 o3d.geometry。
  为了获得干净的结果,通常需要添加一个裁剪步骤来清除下图中以黄色突出显示的不需要的伪影:
  为此,我们计算包含原始点云的初始边界框,并使用它从边界框外的网格中过滤所有表面: bbox = pcd.get_axis_aligned_bounding_box() p_mesh_crop = poisson_mesh.crop(bbox)
  你现在拥有一个或多个变量,每个变量都包含网格几何体! 在应用程序中获取它的最后一步是导出它! 5、导出和可视化
  使用 write_triangle_mesh 函数导出网格数据非常简单。 我们只需在创建文件的名称中指定我们想要的 .ply、.obj、.stl 或 .gltf 扩展名,以及要导出的网格。 下面,我们将 BPA 和泊松重建导出为 .ply 文件: o3d.io.write_triangle_mesh(output_path+"bpa_mesh.ply", dec_mesh) o3d.io.write_triangle_mesh(output_path+"p_mesh_c.ply", p_mesh_crop)
  为了快速生成细节层次 (LoD),让我们编写第一个函数。 这将非常简单。 该函数将采用网格、LoD 列表(作为三角形的目标数量)、生成文件的文件格式和写入文件的路径作为参数。 该函数(写在脚本中)如下所示: def lod_mesh_export(mesh, lods, extension, path):     mesh_lods={}     for i in lods:         mesh_lod = mesh.simplify_quadric_decimation(i)         o3d.io.write_triangle_mesh(path+"lod_"+str(i)+extension, mesh_lod)         mesh_lods[i]=mesh_lod     print("generation of "+str(i)+" LoD successful")     return mesh_lods
  提示:我将在另一篇文章中介绍该函数的作用及其结构的基础知识。 此时,知道该函数将 (1) 以所需文件格式将数据导出到您选择的指定位置,以及 (2) 如果需要更多处理,则可以将结果存储在变量中,这很有用 在 python 中需要。
  该函数具有一些魔力,但一旦执行,它看起来什么也没有发生。 不用担心,你的程序现在知道 lod_mesh_export 是什么,可以直接在控制台中调用它,我们只需将参数更改为所需的值即可: my_lods = lod_mesh_export(bpa_mesh, [100000,50000,10000,1000,100], ".ply", output_path)
  非常有趣的是,现在不需要为不同的 LoD 每次都重写一堆代码。 只需要将不同的参数传递给函数: my_lods2 = lod_mesh_export(bpa_mesh, [8000,800,300], ".ply", output_path)
  如果你想在 python 中可视化一个特定的 LoD,比如说有 100 个三角形的 LoD,你可以通过以下命令访问和可视化它: o3d.visualization.draw_geometries([my_lods[100]])
  要在 python 之外进行可视化,可以使用选择的软件(例如开源 Blender、MeshLab 和 CloudCompare)并在 GUI 中加载导出的文件。 通过 WebGL 直接在 Web 上,也可以使用 Three.js 编辑器或 Flyvast 来简单地访问网格。
  最后,可以在任何 3D 打印软件中导入它,并通过在线打印服务获得关于它需要多少费用的报价。
  6、错误的法线
  在这个指南中,我们介绍了如何从点云设置自动 Python 3D 网格创建器。 这是一个非常好的工具,将在许多 3D 自动化项目中证明非常方便! 然而,我们假设点云已经没有噪声,并且法线方向正确。
  如果法线有问题,则需要一些额外的步骤,我们将在另一篇文章中介绍如何处理。
  完整代码可在此处访问:Google Colab notebook 。 7、结束语
  我们刚刚学习了如何导入、划分网格、导出和可视化由数百万个具有不同 LoD 的点组成的点云! 做得好! 但路径并没有就此结束,未来的帖子将深入探讨点云空间分析、文件格式、数据结构、可视化、动画和网格划分。 我们将特别研究如何管理下文定义的大点云数据。
  原文链接:http://www.bimant.com/blog/point-cloud-to-3d-mesh-with-python/

我还是喜欢20岁的孔雀张静初,但她到底得罪了谁?张静初,于2005年20岁,参加了顾长卫孔雀的拍摄。但是,在孔雀的拍摄中,张静初和顾长卫走得很近,还被蒋雯丽打了一巴掌。而孔雀则使张静初一鸣惊人,在柏林电影节上崭露头角。或许,作为打零工有了政策保障确保市场灵活而不凌乱来源中国经济网新闻背景近日,人社部民政部等5部门发布关于加强零工市场建设完善求职招聘服务的意见,要求建立零工求职招聘信息服务制度,将零工信息纳入公共就业信息服务范围,并从10个方面真我GT2大师探索版安卓旗舰代表作,喜欢直屏就买它,准没错7月12日下午1400,真我realme正式发布了2022年GT系列全新力作真我GT2大师探索版,凭借超高的配置以及创新式的外观,再次刷新了高端旗舰机的天花板。刚好我已经拿到并体验景甜有点婴儿肥挺美的,薄纱裙拼接抹胸蝴蝶结,看着好有少女感今天穿什么变美百科全书就要这么穿对于可爱甜美的元素,女生们还停留在粉色的印象当中吗?其实想要表现甜美的魅力,除了粉色之外,我们还可以选择黑白极简的色彩,利用经典色表现甜美的同时,又男友去世4年,55岁叶子楣斥资三千万买房,家产近亿养老不成问题5月26日,港媒曝光昔日艳星叶子楣的近况,她近日出资3600万港币(约合人民币3090万)购置新房,一次性拿出三千万买房,说明叶子楣资产颇丰,不用靠别人也过得很好。说起来,叶子楣不人民的名义公安分局一把手程度和公安厅一把手祁同伟相差几级?在影视剧人民的名义中,涌现了形形色色的官员,公安系统的官员,只有三个,分别是公安厅长祁同伟,公安局长赵东来,公安分局局长程度,前几篇文章,我们讨论了赵东来的级别,那么公安分局一把手都体马洛塔已为每一个今夏可能离队的国米球员找好替代者直播吧5月26日讯据都灵体育报报道,国米CEO马洛塔已为每一个今夏可能离队的国米球员找好了替代者。国米需要在今夏达成一定的财政目标,这意味着球队至少需要出售一名核心球员,而劳塔罗巴萧炎一直叫海波东海老,唐三后来就改口不叫沐白老大,这也能比最近看到一个非常有意思的说法,并且还这个说法还挺火的,就是拿斗破苍穹里面的主角萧炎和斗罗大陆里面的主角唐三相比。萧炎在还是斗师的时候就叫海波东海老,在成为斗皇之后还是叫海波东海老,民法典颁布两周年安徽检察机关发布相关数据央广网合肥5月26日消息(记者梁明星张宣剑)今年5月28日,民法典将迎来颁布两周年。安徽省检察院于25日召开新闻发布会,通报2021年以来全省检察机关贯彻实施民法典开展民事检察工作2022年退休金上涨4,工龄30年,养老金4000元,能涨多少钱?喜大普奔!2022年养老金调整正式官宣了,人社部宣布今年的养老金涨幅是4,那么,如果退休人员的工龄有30年,养老金有4000元,今年能涨多少钱呢?工龄30年,养老金有4000元,也用好几个手机接单的网约车,到底现不现实今天临近收工时候,一扭头看见旁边的司机跟前摆了三个手机,低头看了看自己单个手机接单,怪不得最近接单少了。当时就觉得好奇,问了问那个司机,谈起来才知道,司机叫小张,这个法子还是他从别
贩卖黑奴时,奴隶主怎么挑选?掰开嘴巴看牙齿,靠舔下巴识别汗液在人类历史上,黑人种族曾经受过一段灭绝人性的灾难,黑奴贸易的兴起使得黑人丧失了作为人的独立人格和尊严,生活在水深火热之中。在黑奴贸易的市场上,黑奴像货物和牲畜一样被随意挑拣买卖,在中房商行,老抚顺的倔强抚顺站前地区改造工程在2008年启动,彻底改变了抚顺站前的面貌。抚顺大酒店拆了,还有东四路西半部的宴宾楼御膳酒楼等那些老字号都消失了。这个大工程十几年了还没有完工,倒是把东西四路堵唐代金银器万里丝路与何家村窖藏历史开讲西安何家村,一个不起眼的地方因为一批稀世珍宝而受到举世关注。何家村遗宝从此成为盛唐气象的展示和注解。夺人眼球的旷世奇珍也留下了太多的疑问,它们的主人究竟是谁?为何被埋入地下他是中纪委原常务书记,19岁入党,曾被下放到工厂,活到了96岁俗话说,乱世出英雄。自鸦片战争以后,我国饱受外国侵略,人民也生活在水深火热之中。但是,有压迫就会有反抗。为了保护祖国,保护人民,这片华夏大地上涌现出了无数的有志之士,竭尽全力保护自一日一朝代一帝王唐朝公元618年,李渊强迫杨侑禅位给自己,李渊称帝,唐朝正式建立。907年,朱温逼唐哀帝李柷禅位,建立后梁,唐朝正式灭亡。唐朝从建立到灭亡,国祚289年,传21。唐朝第一位皇帝唐高1900年慈禧太后若死逃亡途中,光绪能否得众臣拥护重掌大权?慈禧再厉害,她也不是皇帝。1900年的大清朝,真正的皇帝是光绪帝。所以,一旦慈禧太后死于逃亡途中,光绪帝毫无疑问是最高皇权的第一顺位继承者。那么,此时谁有可能会阻挠光绪帝重掌大权呢于成龙与桐城人文王向红于成龙,大家通过电视剧于成龙,都对他很熟悉,其实清朝历史上有两位于成龙,而且政绩和口碑都非常好,现简单介绍一下于成龙(16171684),字北溟,号于山,山西永宁州(今山西曹操夸陈琳文采无双,陈琳跟他比还是个弟弟!司马相如辞官归乡与卓文君正在度蜜月呢,谁知汉景帝驾崩了,上位的就是大名鼎鼎的汉武帝刘彻。这刘彻不但会用人打仗,文采也相当不错,有一次无意间翻到了相如写给梁王的一篇赋,也就是子虚赋,史上著名的九大馊主意,一个比一个馊,他们是哪九个?自古以来,中国历史上都不缺少能人志士,他们在背后指点江山分析局势,顺应大势所趋,帮助他们拥护的人登上至高无上的地位。研读历史也可以发现,古来能够获得成功的人,背后都少不了一个智囊。中国预制菜竞逐万亿级产业赛道出海热潮涌动法国大厨PeguilletHugues制作法式糕点。大会组委会供图中新网佛山3月5日电(记者程景伟)首届中国国际(佛山)预制菜产业大会5日在世界美食之都佛山顺德闭幕。3天以来,约8重点加强减盐零添加等产品的推广和销售,中国酱油第一股加加食品做起了酱油加减法快消八谈零添加加加食品酱油零添加又一次被加加食品重点提及。加加食品在近日接受投资者调研时表示,为提高产品竞争力,2023年公司将重点加强减盐零添加等中高端系列产品的推广和销售。加加