嘿,朋友,最近写项目的时候,是不是觉得 3D 可视化太麻烦?要么安装一堆大包,要么还得搭建远程渲染环境……😂 今天给你安利一个小而强悍的神器——viser。它能让你在 SSH 终端也能玩转 3D,简单到飞起!
什么是 viser?viser 是一个基于 Python 的交互式 3D 可视化库,支持:
- • 丰富的 GUI 控件:按钮、滑块、文本输入、复选框;
- • 场景交互:点击、选取、Transform gizmos;
- • 完全基于浏览器的客户端,SSH 隧道就能访问,不用 X11 转发。
背后原理很简单:启动一个本地服务器,把 3D 场景用 WebGL 渲染到浏览器端,前后端实时同步。你只管写 Python,网页上就能看见、动起来。
解决了哪些痛点?
- 1. 传统桌面 OpenGL 安装复杂,还容易各种依赖冲突;
- 2. 远程服务器没显示环境,X11 转发慢得要命;
- 3. 自定义界面得自己写 Qt/GLFW,开发成本高;
viser 上手超简单,用几行代码就能搞定大部分需求,而且界面美观、响应迅速。随时扩展、定制,再也不用担心前端栈。
安装&快速上手先用 pip 装它:
pip install viser# 如果想跑官方示例:pip install viser[examples]
然后在脚本里写最基础的:
import viser# 启动服务server = viser.ViserServer()# 添加一个三角网格vertices =[(0,0,0),(1,0,0),(0,1,0)]faces =[(0,1,2)]server.scene.add_mesh_simple("/tri", vertices, faces, color=(255,100,100))print("访问地址:", server.url)server.serve_forever()
SSH 隧道映射到本机就行,完美支持远程使用。
进阶示例:点云+相机控制
import numpy as np# 生成随机点云pts = np.random.rand(2000,3)server.scene.add_points("/pc", pts, color=(0,255,0), size=0.005)# 设置摄像机位置和目标cam = server.scene.cameracam.position =(2,2,2)cam.look_at((0,0,0))server.serve_forever()
这样就能“挂”一个点云浏览器,再加点滑块、按钮,你的 3D 可视化工具就诞生啦!
优缺点一览
| |
| |
| |
| 支持点击、选择、Transform gizmos 等交互 | |
| |
小结总的来说,viser 就是那个让你爱上 3D 可视化的利器:上手快、功能全、支持远程。想在 SSH 里看模型、调参数、实时交互,它都能搞定。缺点嘛,主要是对极限大规模数据不够友好,文档也还在成长阶段,但可玩性极高!
如果你正为 3D 可视化头疼,不妨试试 viser,几行代码就能把炫酷的 3D 光景搬出来,效率翻倍,乐趣翻倍!🎉
项目地址:https/github.com/nerfstudio-project/viser