Viewer#
Viewer 类提供了一个交互式窗口,用于实时可视化仿真。用户可以通过鼠标控制来浏览场景、检查对象以及控制仿真播放。
概述#
Viewer 是一个可选组件,提供以下功能:
仿真的实时 3D 渲染
基于鼠标的相机导航(轨道、平移、缩放)
用于控制仿真的键盘快捷键
实体选择和高亮显示
渲染状态可视化
快速开始#
import genesis as gs
gs.init()
# 创建带有交互式 viewer 的场景
scene = gs.Scene(
show_viewer=True,
viewer_options=gs.options.ViewerOptions(
camera_pos=(3, 0, 2),
camera_lookat=(0, 0, 0.5),
res=(1280, 720),
max_FPS=60,
),
)
scene.add_entity(gs.morphs.Plane())
scene.add_entity(gs.morphs.Box(pos=(0, 0, 0.5)))
scene.build()
# 在 viewer 中运行
for i in range(1000):
scene.step()
scene.visualizer.update()
相机控制#
控制方式 |
操作 |
|---|---|
左键 + 拖动 |
轨道旋转相机 |
右键 + 拖动 |
平移相机 |
滚轮 |
放大/缩小 |
中键 + 拖动 |
缩放 |
键盘快捷键#
按键 |
操作 |
|---|---|
Space |
暂停/恢复仿真 |
R |
重置相机到初始位置 |
Esc |
关闭 viewer |
配置#
通过 ViewerOptions 配置 viewer:
viewer_options = gs.options.ViewerOptions(
res=(1920, 1080), # 分辨率
camera_pos=(5, 0, 3), # 初始相机位置
camera_lookat=(0, 0, 0), # 相机目标点
camera_fov=45, # 视野角度
max_FPS=60, # 最大帧率
run_in_thread=True, # 在单独线程中运行 viewer
enable_interaction=True, # 启用鼠标/键盘交互
)
无头模式(Headless Mode)#
对于没有显示环境的情况(服务器、CI),禁用 viewer:
scene = gs.Scene(show_viewer=False)
API 参考#
- class genesis.vis.viewer.Viewer(options, context)[源代码]#
基类:
RBC- set_camera_pose(pose=None, pos=None, lookat=None)[源代码]#
Set viewer camera pose.
- 参数:
pose ([4,4] float, optional) – Camera-to-world pose. If provided, pos and lookat will be ignored.
pos ((3,) float, optional) – Camera position.
lookat ((3,) float, optional) – Camera lookat point.
- property res#
- property refresh_rate#
- property max_FPS#
- property camera_pos#
Get the camera’s current position.
- property camera_lookat#
Get the camera’s current lookat point.
- property camera_pose#
Get the camera’s current pose represented by a 4x4 matrix.
- property camera_up#
- property camera_fov#
另请参阅#
Visualizer - 主可视化控制器
gs.options.Options - ViewerOptions 配置