vertex_colors
是Open3D中open3d.geometry.MeshBase
类的一个属性,用于存储网格顶点的颜色信息。该属性是一个numpy数组,它的形状应该与网格顶点数组的形状完全一致,即(点数, 3)
。颜色值是一个浮点数数组,范围从0到1之间,分别表示红色、绿色和蓝色的颜色值比例。
在创建一个网格对象时,可以通过传递一个名为vertex_colors
的参数来指定顶点颜色信息。例如:
import open3d as o3d
import numpy as np
vertices = np.asarray([...]) # 顶点坐标数组
colors = np.asarray([...]) # 顶点颜色数组
triangles = np.asarray([...]) # 三角形面索引数组
mesh = o3d.geometry.TriangleMesh(
vertices=o3d.utility.Vector3dVector(vertices),
vertex_colors=o3d.utility.Vector3dVector(colors),
triangles=o3d.utility.Vector3iVector(triangles)
)
也可以在创建网格对象之后设置颜色信息,例如:
mesh = o3d.geometry.TriangleMesh()
mesh.vertices = o3d.utility.Vector3dVector(vertices)
mesh.triangles = o3d.utility.Vector3iVector(triangles)
mesh.vertex_colors = o3d.utility.Vector3dVector(colors)
下面的代码演示了如何在Open3D中创建一个简单的三角形网格,并设置每个顶点的颜色。
import open3d as o3d
import numpy as np
# 创建三角形网格
vertices = np.asarray([
[-1, 0, 0],
[0, 1, 0],
[1, 0, 0]
])
colors = np.asarray([
[1, 0, 0],
[0, 1, 0],
[0, 0, 1]
])
triangles = np.asarray([
[0, 1, 2]
])
mesh = o3d.geometry.TriangleMesh(
vertices=o3d.utility.Vector3dVector(vertices),
vertex_colors=o3d.utility.Vector3dVector(colors),
triangles=o3d.utility.Vector3iVector(triangles)
)
# 可视化网格
o3d.visualization.draw_geometries([mesh])
这段代码会创建一个三角形,它的每个顶点具有不同的颜色。最后,通过调用draw_geometries
函数,可以在窗口中查看这个网格对象。