open3d mesh生成平面

发布于:2025-06-27 ⋅ 阅读:(18) ⋅ 点赞:(0)

1、功能介绍:

python代码使用 numpyopen3d 库,生成一个三维随机点云,并创建一个水平平面(z=0)作为参考面,然后将它们一起可视化。

这段代码的主要作用是:生成一个随机的三维点云数据、构造一个位于 z=0 的二维平面网格(TriangleMesh)、使用 Open3D 可视化这两个几何体:点云和平面

适合用于演示点云和基础几何体的构建与可视化,也可用于测试或算法验证场景(如后续进行平面拟合、分割等任务的基础示例)。

2、代码部分:

import numpy as np
import open3d as o3d

# 生成随机点云
np.random.seed(42)
n_points = 100
size = 10  # 点云的范围

# 随机生成 x, y 坐标
x = np.random.uniform(-size, size, n_points)
y = np.random.uniform(-size, size, n_points)
z = np.random.uniform(-size / 2, size / 2, n_points)  # 假设 z 坐标范围在平面上下

# 将点组合成点云
points = np.vstack((x, y, z)).T

# 创建 open3d 点云对象
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(points)

# 创建平面顶点
# 假设平面方程是 z = 0(平行于XY平面),我们定义一个平面
x_min, x_max = -size, size
y_min, y_max = -size, size

# 创建四个角点
vertices = np.array([
    [x_min, y_min, 0],  # 点 1
    [x_max, y_min, 0],  # 点 2
    [x_max, y_max, 0],  # 点 3
    [x_min, y_max, 0]   # 点 4
])

# 创建两个三角形,以组成平面
triangles = [[0, 1, 2], [0, 2, 3]]

# 创建 TriangleMesh 对象
plane_mesh = o3d.geometry.TriangleMesh()

# 设置平面网格的顶点和三角形
plane_mesh.vertices = o3d.utility.Vector3dVector(vertices)
plane_mesh.triangles = o3d.utility.Vector3iVector(triangles)

# 给平面网格着色(绿色)
plane_mesh.paint_uniform_color([0.1, 0.9, 0.1])

# 可视化点云和平面网格
o3d.visualization.draw_geometries([pcd, plane_mesh], window_name="Point Cloud and Plane")

3、运行结果:


网站公告

今日签到

点亮在社区的每一天
去签到