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