目录:

  • 前言
  • 1. open3d.geometry.TriangleMesh
  • 2.例子

前言

再来整一整另一种3d数据。接着上一节的点云2

1. open3d.geometry.TriangleMesh

和点云一样,三角网格也是3d数据的一种表示open3d.geometry.TriangleMesh实现了三角网格的数据结构,三角形网格包含顶点和由顶点索引表示的三角形。网格也可以包含三角形法线、顶点法线和顶点颜色。

我们再来看一看三角网格对象的一些静态字段:
(1)adjacency_list:顶点的邻接表,adjacency_lis[i]表示与顶点i相邻顶点的索引。
(2)textures:纹理图像
(3)vertices:三角网格的顶点,可以转换为numpy数组访问,shape为(num_vertices,3)
(4)vertex_normals:顶点法线,可以转换为numpy数组访问,shape为(num_vertices,3)
(5)vertex_colors:顶点的rgb颜色,可以转换为numpy数组访问,shape为(num_vertices,3),rgb值范围在[0-1]
(6)triangle_uvs:由构成三角形的点的索引表示的UV列表,可以转换为numpy数组访问,shape为(3 * num_triangles, 2)
(7)triangles:可以转换为numpy数组访问,shape为(num_triangles,3),简答来说每一个其中每一行数据就是一个三角形,如triangles[i]表示一个三角形,其中保存的是三个顶点对应的索引
(8)triangle_normals:三角形法线,可以转换为numpy数组访问,shape为(num_triangles,3)

2.例子

如下代码,我们创建一个球体网格,计算顶点法线:

import open3d as o3d
import numpy as npmesh = o3d.geometry.TriangleMesh.create_sphere()
mesh.compute_vertex_normals()
print(mesh)
print("顶点:",np.asarray(mesh.vertices))
print("三角形",np.asarray(mesh.triangles))
print("顶点法线:",np.asarray(mesh.vertex_normals))
o3d.visualization.draw_geometries([mesh])

打印结果如下:

可视化结果如下:

下面我们将代码改进一下,将x值大于0顶点渲染成红色,小于0的渲染成蓝色:

import open3d as o3d
import numpy as npmesh = o3d.geometry.TriangleMesh.create_sphere()
mesh.compute_vertex_normals()
num_vertices=np.asarray(mesh.vertices).shape[0]
print(mesh)
print("顶点:",np.asarray(mesh.vertices))
print("三角形",np.asarray(mesh.triangles))
print("顶点法线:",np.asarray(mesh.vertex_normals))
color=np.zeros((num_vertices,3))
for i in range(num_vertices):if np.asarray(mesh.vertices[i])[0]>0:color[i,0]=1else:color[i,2]=1
mesh.vertex_colors=o3d.utility.Vector3dVector(color)
o3d.visualization.draw_geometries([mesh])

其中o3d.utility.Vector3dVector是用于将numpy数组转换成open3d的数据格式。

可视化结果如下:

3d机器学习open3d学习教程4--三角网格对象TriangleMesh相关推荐

  1. 3d机器学习open3d学习教程3--点云2

    目录: 前言 1.点云裁剪 2.点云边界框 3.凸包 4.DBSCAN 聚类 5.平面分割 隐藏点移除 前言 接着上一节点云1 本节数据地址:链接:https://pan.baidu.com/s/1O ...

  2. Open3d学习计划——4(网格)

    Open3d学习计划--4(网格) 欢迎大家关注"点云PCL"公众号,进入群聊一起学习. open3d有一种被称为TriangleMesh的3d三角网格的数据结构.下面的代码展示了 ...

  3. AutoCAD 2D与3D大师班学习教程 AutoCAD 2D and 3D Masterclass

    用实例和解决问题的方法完成从基础到专业的AutoCAD课程. 你会学到什么 AutoCAD课程包含创建计划和模型的命令和不同方法的详细使用. 本课程包括对AutoCAD中使用的所有命令和工具的详细解释 ...

  4. bullet物理引擎与OpenGL结合 导入3D模型进行碰撞检测 以及画三角网格的坑

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11681069.html 一.初始化世界以及模型 /// 冲突配置包含内存的默认设置,冲突设置. ...

  5. open3d学习教程2--点云1

    目录: 1.open3d介绍 2.点云 2.1 读取,可视化点云 2.2点云体素下采样 2.3点法线估计 2.4点云着色 1.open3d介绍 接着上一节点云pointcloud open3d是一个开 ...

  6. 1000人证明过的3D视觉系统学习教程

    写在前面 我们在「3D视觉从入门到精通」星球里已经为大家梳理了以下一些内容: (一) 3D视觉学习路线 (二)线上视频课程 (三)3D视觉顶会|期刊 (四)精华github资源 (五)往期帖子与问答汇 ...

  7. Zbrush学习笔记七——阵列网格对象、布尔运算、Polypainter、聚光灯

    阵列网格对象  1打开阵列网格,打开Transpose,然后在偏移,缩放,旋转,枢轴等命令下面操作改变位置大小等参数,使用重复参数控制阵列的重复数量.如果需要制作的效果超过命令滑块的极限值,则需要使用 ...

  8. Unity 3D游戏开发学习教程

    用C#用Unity3D制作游戏 你会学到: 您将学习3D游戏开发基础知识,以使用Unity3D引擎推进事物. 到本课程结束时,他们将可以轻松制作任何类型的游戏,无论是3D还是2D MP4 |视频:h2 ...

  9. open3d学习教程1--点云对象PointCloud

    目录: 前言 1. open3d.geometry.PointCloud 前言 点云简单来说就是3d坐标下一个个点组成的数据,每个点可以包含x,y,z,颜色.分类值.强度值.时间等等信息.点云是3d数 ...

最新文章

  1. mysql日志的作用_MySQL 日志相关知识总结
  2. js监听滚动条滚动事件
  3. Fedora 9 感受
  4. 第二次数学建模训练题
  5. 精英阶层是怎么心甘情愿被收割的
  6. 大数据与人工智能专业都这么火,我们应该怎么选?
  7. FindWithTag用法
  8. 6翻了 (15 分)
  9. 为什么C语言要有头文件(补充)
  10. matlab中的priniu,MATLAB中的plotyy命令
  11. 净水器哪个牌子好,家用净水器什么牌子好科普
  12. js中===和==的区别
  13. day17 - Web前端概述
  14. 基于JAVA+SpringBoot+VUE的心理健康测试系统的设计与实现
  15. 2019年,如何抓住5G的创业机会,站在时代的新风口?
  16. 7.16 多益网络笔试
  17. IntelliJ IDEA 热键冲突
  18. vue与单页面 使用Photo Sphere Viewer创建vr 360全景示例代码
  19. 从服务端密码存储到用户数据加密方案
  20. mysql help类_MySqlHelper操作类

热门文章

  1. dwz自定义插件的使用
  2. 2013年4月通信概论答案
  3. 精心收集的必须熟悉的vim快捷键操作
  4. 深度学习入门--斋藤康毅 总结
  5. Android强制使用3G,Android 强制2G/3G或WIFI 优先上网
  6. 转载 nbsp; banq---阎宏之间的恩怨
  7. 2009年湖南省职业院校冬季技能竞赛工作方案
  8. Carbide C++ 2.0
  9. Chrome扩展-页面注入layer组件
  10. 电子系统健康管理预测学习笔记