快速开始
5 分钟上手。从随机点云到浏览器中的交互式 3D 可视化,全部代码不超过 10 行。
Hello World
最简单的示例:生成随机点云并在浏览器中查看。
import pyviz3d as viz
import numpy as np
# 创建 Visualizer 实例
v = viz.Visualizer()
# 生成 2000 个随机点,位置和颜色
positions = np.random.rand(2000, 3) * 10
colors = np.random.rand(2000, 3) # RGB 0~1
# 添加点云,名称为 "cloud"
v.add_points("cloud", positions, colors)
# 保存并自动在浏览器打开
v.save("my_visualization")
运行后自动打开浏览器,访问
http://localhost:8000 查看交互式 3D 可视化。鼠标左键旋转,右键平移,滚轮缩放。
点云可视化
从文件加载真实点云数据(支持 .ply、.pcd 格式):
import pyviz3d as viz
import numpy as np
# 方式一:使用 Open3D 读取文件
try:
import open3d as o3d
pcd = o3d.read_point_cloud("sample.pcd")
points = np.asarray(pcd.points)
colors = np.asarray(pcd.colors) # 如果文件包含颜色
except ImportError:
# 方式二:手动加载 numpy 数据
data = np.load("points.npy")
points = data['positions']
colors = data.get('colors', np.ones_like(points))
v = viz.Visualizer()
v.add_points("My Point Cloud", points, colors)
v.save("pcd_viewer")
多数据类型组合
PyViz3D 支持同时添加多种数据类型:
import pyviz3d as viz
import numpy as np
v = viz.Visualizer()
# 点云
v.add_points("点云", points, colors)
# 3D 边界框(轴对齐)
v.add_boxes(
name="边界框",
positions=np.array([[0,0,0]]), # 中心点坐标
sizes=np.array([[2,1,3]]), # 长宽高
colors=np.array([[1,0,0]]), # 红色
alpha=0.3 # 透明度 0~1
)
# 箭头(表示方向)
v.add_arrows(
name="方向箭头",
positions=np.array([[0,0,0]]),
vectors=np.array([[1,0,0]]), # 方向向量
colors=np.array([[0,1,0]]) # 绿色
)
# 文字标签
v.add_text(
name="标签",
text="起始点",
positions=np.array([[0,0.5,0]]),
colors=np.array([[1,1,0]]) # 黄色
)
v.save("combined_view")
相机与视角控制
设置相机视角,让可视化从特定角度展示:
v = viz.Visualizer()
v.add_points("cloud", points, colors)
# 设置相机位置和目标点
v.set_camera(
position=[10, 5, 10], # 相机位置(xyz)
look_at=[0, 0, 0], # 相机看向的点
up=[0, 0, 1] # 上方向向量
)
v.save("fixed_view")
分享可视化
将可视化上传到 PyViz3D 服务器,生成可分享的链接:
v = viz.Visualizer()
v.add_points("cloud", points, colors)
# 发布到服务器,生成公开 URL
url = v.publish("my_project")
print("查看链接:", url) # https://3d.pointcloudviz.top/view/xxxxxx
publish() 会将数据上传到 3d.pointcloudviz.top 服务器,适合快速分享给同事或嵌入报告。