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

build(scene)[源代码]#
start()[源代码]#
stop()[源代码]#
is_alive()[源代码]#
setup_camera()[源代码]#
update()[源代码]#
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#

另请参阅#