选择与配置渲染器#

渲染器生成相机传感器观测,可视化器则为人提供交互式视图。应根据策略或数据管线需要的图像选择渲染器,再只调整影响该工作流的选项。

选择渲染器#

对于提供渲染器预设的任务,启动时选择兼容的物理与渲染器组合。使用 --task <task-name> --help 查看任务实际支持的预设;可用渲染器因任务而异。

渲染器选项#

渲染器

适用情况

取舍

典型命令

Newton Warp

Newton 训练需要尽量低的显存占用和较高的相机吞吐量。

轻量光栅化;输出种类较少,不提供运动向量或完整的 RTX 材质光传输。

physics=newton_mjwarp renderer=newton_renderer presets=rgb

OVRTX

需要可扩展、不依赖 Kit 的 RTX 渲染及更高的视觉保真度。

比 Newton Warp 占用更多显存。如果吞吐量比照片级真实感更重要,可选择 RTX Minimal 输出。

physics=newton_mjwarp renderer=ovrtx presets=rgb

Isaac RTX(传统)

工作流必须通过 Isaac Sim/Kit 运行,或需要其丰富的 RTX 与 Replicator 输出。

需要 Isaac Sim 和 PhysX;新工作不应将其作为默认的性能方案。

physics=isaacsim_physx renderer=isaacsim_rtx presets=rgb

例如,使用低显存占用的 Newton 渲染器启动相机任务:

uv run isaaclab train --rl_library rsl_rl \
   --task Isaac-Cartpole-Camera \
   physics=newton_mjwarp renderer=newton_renderer presets=rgb

将同一受支持任务切换到保真度更高、不依赖 Kit 的 RTX 渲染器:

uv run isaaclab train --rl_library rsl_rl \
   --task Isaac-Cartpole-Camera \
   physics=newton_mjwarp renderer=ovrtx presets=rgb

输出可用性及运行时要求,以 渲染器细节 和 相机渲染器支持矩阵 为准。不要仅凭相机数量粗略比较渲染器;应测量实际准备训练的完整任务与观测配置。

自定义 Newton Warp#

Newton Warp 侧重吞吐量。先采用默认值,再只启用对策略有用的图像功能。阴影、纹理、环境光、遍历顺序和图块尺寸,由 NewtonWarpRendererCfg 控制。

如果任务配置了相机渲染器,可通过覆盖项启用方向光阴影:

uv run isaaclab train --rl_library rsl_rl \
   --task Isaac-Cartpole-Camera \
   physics=newton_mjwarp renderer=newton_renderer presets=rgb \
   env.scene.tiled_camera.renderer_cfg.enable_shadows=true

在 Python 中定义相机时,可直接配置渲染器:

from isaaclab_newton.renderers import NewtonWarpRendererCfg

renderer_cfg = NewtonWarpRendererCfg(
    enable_textures=True,
    enable_shadows=True,
    render_order="tiled",
)

只有对代表性场景进行性能分析后,才调整 render_order 和图块尺寸。它们是实现层面的吞吐量控制项,并非视觉质量设置。

自定义 OVRTX#

OVRTX 无需 Isaac Sim,即可提供 RTX Minimal 和照片级渲染路径。如果材质外观、反射、透明度或更丰富的 RTX 输出很重要,应使用常规 rgb 输出。对于只需要简化颜色的训练,则选择 simple_shading_* 预设:

uv run isaaclab train --rl_library rsl_rl \
   --task Isaac-Cartpole-Camera \
   physics=newton_mjwarp renderer=ovrtx \
   presets=simple_shading_diffuse_mdl

在 RTX Minimal 模式下, enable_shadows 控制方向光阴影射线。它能改善视觉保真度,但会增加渲染耗时。路径追踪的 OVRTX 输出始终计算阴影,因此该选项不影响常规 rgb 或其他 AOV。

from isaaclab_ov.renderers import OVRTXRendererCfg

renderer_cfg = OVRTXRendererCfg(enable_shadows=True)

自定义 Isaac RTX#

Isaac RTX 仍可用于 Isaac Sim 和 PhysX 工作流。下列设置仅适用于该传统渲染器;新的 Newton 和不依赖 Kit 的负载应使用 Newton Warp 或 OVRTX。

备注

请求某种 simple_shading_* 相机数据类型、且未请求常规彩色输出时,会将该相机的渲染产品切换到 RTX Minimal 模式,具体着色级别由数据类型决定。切换按渲染产品分别进行,因此其他相机和 Kit 视口保留各自配置的渲染模式。RTX Minimal 只使用第一个 DistantLight prim,忽略 DomeLight prim,也可能使用已配置的环境光。如果同一渲染产品还请求 rgb 、 rgba 或 rgb_hdr ,则为保留彩色输出而继续使用配置的渲染模式; simple_shading_* 输出仍可用,但不会获得 RTX Minimal 的性能提升。

覆盖特定渲染设置#

通过 IsaacRtxRendererGlobalSettingsCfg ,可覆盖 RTX 渲染设置。

有两种方式提供设置,以覆盖默认值。

  1. IsaacRtxRendererGlobalSettingsCfg 支持使用易于理解的设置名称覆盖特定设置,并将其映射到底层 RTX 设置。例如:

    global_settings = IsaacRtxRendererGlobalSettingsCfg(
       # user-friendly setting overrides
       enable_translucency=True,  # render glass / transmissive surfaces
       enable_reflections=True,  # render reflections
       dlss_mode=3,  # 0 (Performance), 1 (Balanced), 2 (Quality, the default), 3 (Auto)
    )
    

    用户友好的设置列表。

    enable_translucency

    布尔值。启用透射光,用于玻璃等反射性透明表面,以牺牲一些性能。

    enable_reflections

    布尔值。启用反射以牺牲一些性能。

    enable_global_illumination

    布尔值。启用漫反射全局照明以牺牲一些性能。

    antialiasing_mode

    字面值["Off", "FXAA", "DLSS", "TAA", "DLAA"]。

    DLSS: 通过使用 AI 从较低分辨率输入生成更高分辨率帧来提高性能。DLSS 采样多个较低分辨率图像,并使用运动数据和先前帧的反馈来重建原生质量图像。DLAA: 提供基于 AI 的抗锯齿技术,提供更高的图像质量。DLAA 使用为 DLSS 开发的超分辨率技术,重建原生分辨率图像以最大化图像质量。

    enable_dlssg

    布尔值。启用 DLSS-G 的使用。DLSS 帧生成通过使用 AI 生成更多帧来提高性能。这个功能需要 Ada Lovelace 架构 GPU,并且由于额外的线程相关活动可能会影响性能。

    enable_dl_denoiser

    布尔值。启用 DL 降噪器的使用,可以改善渲染的质量,但会牺牲一些性能。

    dlss_mode

    字面值[0, 1, 2, 3]。对于 DLSS 抗锯齿,选择性能/质量的折衷模式。有效值为 0(性能)、1(平衡)、2(质量)或 3(自动)。

    enable_direct_lighting

    布尔值。启用来自灯光的直接光照贡献。

    samples_per_pixel

    整数。定义每像素的直接光照采样。较高的值增加了直接光照质量,但会牺牲性能。

    enable_shadows

    布尔值。启用阴影以牺牲一些性能。当禁用时,灯光不会投射阴影。

    enable_ambient_occlusion

    布尔值。启用环境光遮蔽以牺牲一些性能。

  2. 如果需要更多控制, IsaacRtxRendererGlobalSettingsCfg 允许通过 carb_settings 参数覆盖任意 RTX 设置。

    完整的 NVIDIA RTX 渲染器文档见 https://docs.omniverse.nvidia.com/materials-and-rendering/latest/rtx-renderer.html 。

    carb_settings 的示例用法。

    global_settings = IsaacRtxRendererGlobalSettingsCfg(
       # raw carb setting overrides
       carb_settings={
          "rtx.translucency.enabled": False,
          "rtx.reflections.enabled": False,
          "rtx.domeLight.upperLowerStrategy": 3,
       }
    )
    

当前限制#

出于性能考虑,默认使用 DLSS 降噪,通常能提供更好的性能,但渲染质量可能降低,低分辨率下尤其明显。因此,建议每个平铺图块或相机的分辨率至少为 100 x 100。使用更低分辨率时,建议将 IsaacRtxRendererGlobalSettingsCfg 的 antialiasing_mode 设为 DLAA,并视情况启用 enable_dl_denoiser。这两项设置有助于改善渲染质量,但会降低性能。其他渲染参数也可通过 IsaacRtxRendererGlobalSettingsCfg 设置。

如果平铺渲染出现重影或去遮挡等视觉伪影,可尝试调整 disocclusionScale 。该参数控制渲染器处理帧间新显露区域的力度:

global_settings = IsaacRtxRendererGlobalSettingsCfg(
   carb_settings={
      "/rtx/aovConverter/disocclusionScale": 10000,
   }
)

备注

此参数通常不对外暴露,因为某些场景下可能产生副作用。只有其他质量设置无法解决伪影时,才将其作为最后手段。可将其调到很高的值,以减少去遮挡伪影。

在多个环境中渲染 UsdVol 三维高斯场景#

在 多个环境 中使用包含三维高斯粒子的 UsdVol 体积(例如从 3DGRUT 导出)时,必须进行以下设置,使渲染器使用正确的合成路径:

global_settings = IsaacRtxRendererGlobalSettingsCfg(
   carb_settings={
      "omni.rtx.nre.compositing.rendererHints": 3,
   }
)

警告

多个环境各自持有一份场景副本,会增加设备内存用量;而且环境依次渲染,可能显著降低渲染速度。