🎬 批量渲染器#
BatchRenderer 使用 Madrona GPU 批量渲染技术,实现高吞吐量的多环境模拟。
安装#
pip install gs-madrona
要求: Linux x86-64, NVIDIA CUDA, Python >= 3.10
基本设置#
import genesis as gs
gs.init(backend=gs.cuda) # 需要 CUDA
scene = gs.Scene(
renderer=gs.renderers.BatchRenderer(use_rasterizer=True),
)
plane = scene.add_entity(gs.morphs.Plane())
robot = scene.add_entity(gs.morphs.URDF(file="robot.urdf"))
# 所有批量相机必须具有相同的分辨率
cam1 = scene.add_camera(res=(256, 256), pos=(2, 0, 1), lookat=(0, 0, 0.5))
cam2 = scene.add_camera(res=(256, 256), pos=(0, 2, 1), lookat=(0, 0, 0.5))
scene.build(n_envs=128)
渲染#
for step in range(1000):
scene.step()
# 渲染单个相机
rgb, depth, seg, normal = cam1.render(
rgb=True, depth=True, segmentation=True, normal=True
)
# 形状: (n_envs, H, W, C)
# 或一次性渲染所有相机
all_rgb = scene.render_all_cameras(rgb=True)
# 形状: (n_cameras, n_envs, H, W, 3)
相机传感器 API#
camera = scene.add_sensor(
gs.sensors.BatchRendererCameraOptions(
res=(512, 512),
pos=(3.0, 0.0, 2.0),
lookat=(0.0, 0.0, 0.5),
fov=60.0,
near=0.1,
far=100.0,
lights=[{
"pos": (2.0, 2.0, 5.0),
"color": (1.0, 1.0, 1.0),
"intensity": 1.0,
"directional": True,
"castshadow": True,
}],
)
)
scene.build(n_envs=64)
data = camera.read() # 返回包含 .rgb tensor 的 CameraData
光照#
scene.add_light(
pos=(0.0, 0.0, 3.0),
dir=(0.0, 0.0, -1.0),
color=(1.0, 1.0, 1.0),
intensity=1.0,
directional=True,
castshadow=True,
)
分割#
scene = gs.Scene(
renderer=gs.renderers.BatchRenderer(),
vis_options=gs.options.VisOptions(
segmentation_level="link", # "entity", "link", 或 "geom"
),
)
# 渲染后
_, _, seg, _ = camera.render(segmentation=True)
colored = scene.visualizer.colorize_seg_idxc_arr(seg)
性能提示#
所有相机使用相同的分辨率
推荐使用
use_rasterizer=True以获得更高速度使用
scene.render_all_cameras()批量渲染所有相机典型设置:256x256 分辨率,128-256 个环境