当前位置: 首页 > news >正文

扬州 网站建设wordpress视频主题推荐

扬州 网站建设,wordpress视频主题推荐,百度搜索最多的关键词,做外贸网站企业推荐#xff1a;使用 NSDT场景设计器 快速搭建 3D场景。 在本文中#xff0c;我将介绍我的 3D 表面重建过程#xff0c;以便使用 Python 从点云快速创建网格。 你将能够导出、可视化结果并将结果集成到您最喜欢的 3D 软件中#xff0c;而无需任何编码经验。 此外#xff0… 推荐使用 NSDT场景设计器 快速搭建 3D场景。 在本文中我将介绍我的 3D 表面重建过程以便使用 Python 从点云快速创建网格。 你将能够导出、可视化结果并将结果集成到您最喜欢的 3D 软件中而无需任何编码经验。 此外我将为你提供一种生成多层次细节 (LoD) 的简单方法如果想要创建实时应用程序例如使用 Unity 的虚拟现实这很有用。 3D 网格是几何数据结构通常由一堆连接的三角形组成这些三角形明确描述了一个表面。 它们用于从地理空间重建到 VFX、电影和视频游戏的广泛应用。 我经常在需要物理副本时创建它们或者如果我需要在游戏引擎中集成环境而在游戏引擎中点云支持是有限的。 它们很好地融入了大多数软件专业人员的工作中。 最重要的是如果你想探索 3D 打印的奇迹需要能够从你拥有的数据生成一致的网格。 本文旨在通过 5 个可自定义的步骤为你提供高效的工作流程并在文末提供我的远程可执行脚本。 让我们开始吧 1、搭建环境 在上一篇文章中我们了解了如何使用 Anaconda 轻松设置环境以及如何使用 GUI Spyder 来管理代码。 我们将继续这种方式只使用 2 个库。 为了从点云中自动获取 3D 网格我们将在我们的环境中添加另一个库 Open3D。 它是一个开源库允许使用一组高效的数据结构和算法进行 3D 数据处理。 安装需要单击环境旁边的 ▶️ 图标。 打开终端并运行以下命令 conda install -c open3d-admin open3d0.8.0.0注意Open3D包兼容python 2.7、3.5和3.6版本。 如果你有另一个你可以创建一个新环境最好或者如果你从上一篇文章开始通过在终端中输入 conda install python3.5 来更改终端中的 python 版本。 这将自动安装包及其依赖项你可以在终端提示时输入 y 以允许此过程。 现在已经为项目做好了准备。 2、加载并准备数据 启动你的 python 脚本工具Spyder GUI、Jupyter 或 Google Colab我们将在其中调用 2 个库Numpy 和 Open3D。 import numpy as np import open3d as o3d然后我们创建保存数据路径和点云数据的变量 input_pathyour_path_to_file/ output_pathyour_path_to_output_folder/ datanamesample.xyz point_cloud np.loadtxt(input_pathdataname,skiprows1)注意至于上一篇文章我们将使用采样点云你可以从该存储库免费下载。 如果你想在不安装任何东西的情况下预先可视化它你可以查看 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 点云进行网格化来开始表面重建过程。 我将给出我最喜欢的有效获取结果的方法但在我们深入研究之前需要一些浓缩的细节来掌握底层过程。 我将限制自己使用两种网格生成策略。 策略一球旋转算法 球旋转算法 (BPABall-Pivoting Algorithm) 背后的想法是模拟使用虚拟球从点云生成网格。 我们首先假设给定的点云由从物体表面采样的点组成。 点必须严格代表一个表面无噪声即重建的网格。 基于这个假设想象一下在点云“表面”上滚动一个小球。 这个小球取决于网格的比例应该略大于点之间的平均间距。 当你将球放到点的表面上时球将被抓住并落在将形成种子三角形的三个点上。 从那个位置开始球沿着由两点形成的三角形边滚动。 然后球落在一个新的位置一个新的三角形由两个先前的顶点组成一个新的三角形被添加到网格中。 当我们继续滚动和旋转球时会形成新的三角形并将其添加到网格中。 球继续滚动和滚动直到网格完全形成。 Ball-Pivoting Algorithm 背后的想法很简单但当然这里最初表达的过程有很多注意事项 球半径如何选择 半径是根据输入点云的大小和比例凭经验获得的。 理论上球的直径应该略大于点间的平均距离。如果某些位置的点相距太远并且球掉落怎么办 当球沿边缘旋转时它可能会错过表面上的适当点而是击中物体上的另一个点甚至正好是它的三个旧点。 在这种情况下我们检查新三角形 Facet 的法线是否与点的 Vertex 法线一致。 如果不是那么我们拒绝那个三角形并创建一个洞。如果表面有折痕或凹陷使得表面与自身之间的距离小于球的大小怎么办 在这种情况下球只会滚过折痕而忽略折痕内的点。 但是这不是理想的行为因为重建的网格对对象不准确。如果表面被分隔成点区域以至于球无法在区域之间成功滚动怎么办 虚拟球在不同位置多次落到表面上。 这可确保球捕获整个网格即使点的间距不一致也是如此。 策略二泊松重建 泊松重建更具技术/数学意义。 它的方法被称为隐式网格划分方法我将其描述为试图将数据“包裹”在光滑的布料中。 在不涉及太多细节的情况下我们尝试通过创建一个代表与法线链接的等值面的全新点集来从原始点集拟合水密表面。 有几个参数可以影响网格划分的结果 怎么设置深度 树深度用于重建。 网格越高越详细默认值8。 对于嘈杂的数据你在生成的网格中保留异常值的顶点但算法不会检测到它们。 所以较低的值可能在 5 到 7 之间提供平滑效果但您会丢失细节。 深度值越高生成的网格的顶点数量就越高。 怎么设置宽度 这指定了树结构最细级别的目标宽度称为八叉树。 别担心我将在另一篇文章中介绍这个和 3D 的最佳数据结构因为它扩展了本文的范围。 无论如何如果指定了深度则忽略此参数。 怎么设置缩放比例 它描述了用于重建的立方体的直径与样本边界立方体的直径之间的比率。 非常抽象默认参数通常效果很好1.1。 使用哪种拟合算法 linear_fit 参数如果设置为 true让重建器使用线性插值来估计等顶点的位置。 4、处理数据 策略 1BPA 我们首先根据从所有点之间的距离计算出的平均距离来计算必要的半径参数 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, depth8, width0, scale1.1, linear_fitFalse)[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_pathbpa_mesh.ply, dec_mesh) o3d.io.write_triangle_mesh(output_pathp_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(pathlod_str(i)extension, mesh_lod)mesh_lods[i]mesh_lodprint(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 的点组成的点云 做得好 但路径并没有就此结束未来的帖子将深入探讨点云空间分析、文件格式、数据结构、可视化、动画和网格划分。 我们将特别研究如何管理下文定义的大点云数据。 原文链接点云转3D网格 — BimAnt
http://www.yingshimen.cn/news/825/

相关文章:

  • 海安网站优化做网站充值系统
  • 如果做网站运营电商网站建设考试
  • 网站统计查询宝德科技专业嘉兴网站建设
  • 外贸自助建站哪个好商城网站都有什么功能
  • 网站制作建设兴田德电子元器件网站建设
  • 北京网站建设好不好天怎么在百度上创建网站
  • 从化网站开发wordpress怎么换log
  • 做视频网站盈利模式电子工厂网站建设
  • 怎么提高网站的流量外贸企业邮箱哪个好用
  • 梧州网站建设流程有链接的网站
  • 域名备案时网站名称行业关键词查询
  • 网站运营费用预算网商网官网
  • 如何做设计网站页面设计应用frontpage制作教学网站
  • 建设银行etc的网站是哪个好织梦网站去除技术支持
  • 东网站建设vue.js做个人网站
  • 饰品交易网站怎么做温州市建设安监局网站
  • 公司做网站好优惠建设网站
  • 怎么给公司注册网站济南网络推广公司电话
  • 网站中的知识 视频从哪里来的做的比较简约的网站
  • 最好的网站建设系统石家庄免费自助建站模板
  • 公司网站制作有哪些南宁网站建设找建站通
  • 常州市中大建设工程有限公司网站贵阳网站建设报价
  • 金华网站开发建设建设网站应该加什么服务
  • 什么网站动物和人做的做淘客网站需要多大空间
  • 住房城乡建设部网站主页chrome wordpress
  • 西安建设网站公司哪家好网站建设主要包括哪些
  • 养老网站建设 中企动力旅游网站建设报价方案
  • 国外家谱网站的建设保定市做网站的电话
  • 网站建设开票内容是什么意思xml网站地图在线生成工具
  • 重庆市建设厅网站网站建设合同中英文