open3d 构建mesh

  • 方法一
    使用顶点坐标以及三角形索引。这有点像OpenGL了。
# 输入是顶点以及每个三角形的索引
def get_non_manifold_vertex_mesh(verts, triangles):
    # verts = np.array(
    #     [
    #         [-1, 0, -1],
    #         [1, 0, -1],
    #         [0, 1, -1],
    #         [0, 0, 0],
    #         [-1, 0, 1],
    #         [1, 0, 1],
    #         [0, 1, 1],
    #     ],
    #     dtype=np.float64,
    # )

    # triangles = np.array([
    #     [0, 1, 2],
    #     [0, 1, 3],
    #     [1, 2, 3],
    #     [2, 0, 3],
    #     [4, 5, 6],
    #     [4, 5, 3],
    #     [5, 6, 3],
    #     [4, 6, 3],
    # ]) 
    
    mesh = o3d.geometry.TriangleMesh()
    mesh.vertices = o3d.utility.Vector3dVector(verts)
    mesh.triangles = o3d.utility.Vector3iVector(triangles)
    mesh.compute_vertex_normals()  # 估计法向量后支持光照渲染
    
    # mesh.compute_triangle_normals()
    # mesh.rotate(
    #     mesh.get_rotation_matrix_from_xyz((np.pi / 4, 0, np.pi / 4)),
    #     center=mesh.get_center(),
    # )
    
    return mesh


axis_pcd = o3d.geometry.TriangleMesh.create_coordinate_frame(size=8, origin=[0, 0, 0])

o3d.visualization.draw_geometries([mesh,
                                   axis_pcd
                                   ],
                                  # zoom=0.3412,
                                  # front=[0.4257, -0.2125, -0.8795],
                                  # lookat=[2.6172, 2.0475, 1.532],
                                  # up=[-0.0694, -0.9768, 0.2024]
                                  # point_show_normal=True
                                  )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值