3d机器学习open3d学习教程4--三角网格对象TriangleMesh
目录:
- 前言
- 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相关推荐
- 3d机器学习open3d学习教程3--点云2
目录: 前言 1.点云裁剪 2.点云边界框 3.凸包 4.DBSCAN 聚类 5.平面分割 隐藏点移除 前言 接着上一节点云1 本节数据地址:链接:https://pan.baidu.com/s/1O ...
- Open3d学习计划——4(网格)
Open3d学习计划--4(网格) 欢迎大家关注"点云PCL"公众号,进入群聊一起学习. open3d有一种被称为TriangleMesh的3d三角网格的数据结构.下面的代码展示了 ...
- AutoCAD 2D与3D大师班学习教程 AutoCAD 2D and 3D Masterclass
用实例和解决问题的方法完成从基础到专业的AutoCAD课程. 你会学到什么 AutoCAD课程包含创建计划和模型的命令和不同方法的详细使用. 本课程包括对AutoCAD中使用的所有命令和工具的详细解释 ...
- bullet物理引擎与OpenGL结合 导入3D模型进行碰撞检测 以及画三角网格的坑
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11681069.html 一.初始化世界以及模型 /// 冲突配置包含内存的默认设置,冲突设置. ...
- open3d学习教程2--点云1
目录: 1.open3d介绍 2.点云 2.1 读取,可视化点云 2.2点云体素下采样 2.3点法线估计 2.4点云着色 1.open3d介绍 接着上一节点云pointcloud open3d是一个开 ...
- 1000人证明过的3D视觉系统学习教程
写在前面 我们在「3D视觉从入门到精通」星球里已经为大家梳理了以下一些内容: (一) 3D视觉学习路线 (二)线上视频课程 (三)3D视觉顶会|期刊 (四)精华github资源 (五)往期帖子与问答汇 ...
- Zbrush学习笔记七——阵列网格对象、布尔运算、Polypainter、聚光灯
阵列网格对象 1打开阵列网格,打开Transpose,然后在偏移,缩放,旋转,枢轴等命令下面操作改变位置大小等参数,使用重复参数控制阵列的重复数量.如果需要制作的效果超过命令滑块的极限值,则需要使用 ...
- Unity 3D游戏开发学习教程
用C#用Unity3D制作游戏 你会学到: 您将学习3D游戏开发基础知识,以使用Unity3D引擎推进事物. 到本课程结束时,他们将可以轻松制作任何类型的游戏,无论是3D还是2D MP4 |视频:h2 ...
- open3d学习教程1--点云对象PointCloud
目录: 前言 1. open3d.geometry.PointCloud 前言 点云简单来说就是3d坐标下一个个点组成的数据,每个点可以包含x,y,z,颜色.分类值.强度值.时间等等信息.点云是3d数 ...
最新文章
- 助力隐私保护,Cashshuffle之后又一支柱Interwallet正式发布
- ExtJs TreePanel 不能加载ashx数据的解决办法
- C# TCPClient简单示例
- Cesium Vue开发环境搭建
- lwip之数据收发流程_1
- gunicorn多进程不死_WEB,gunicorn - 无论是多进程、多线程、协程模式,同一个浏览器窗口多个标签页访问同一个url,看上去不会并发的问题...
- IOS添加pch预编译文件
- Lync Server 2010迁移至Lync Server 2013部署系列 Part18:开启Lync 2013 Mobility
- tomcat(14)服务器组件和服务组件
- SpringCloud学习之路(一)-简单Demo
- c语言怎么写星星代码,C语言打印星星的问题
- 三星java3倍拍照手机_全世界拍照最强的两款手机,一个是三星,一个是它
- Spring Cache 介绍
- Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile 解决办法
- (八)office2016-excel绘制斜线表头 双斜线和三斜线
- 计算机主机结构图手画,流程图怎么画简单又漂亮
- OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
- oracle用户删除了可以恢复吗,oracle_oracle误删数据恢复方法小结,如果用户误删/更新了数据后, - phpStudy...
- 一些奇奇怪怪小问题汇总
- 【转载】单片机入门经验