From 1a2fc3865df44d1353abe752a8642e33500869d9 Mon Sep 17 00:00:00 2001 From: FAN YUCHEN <2994114386@qq.com> Date: Thu, 9 Jul 2026 23:35:02 +0800 Subject: [PATCH] Fix scene_dataset being overwritten by episode config In Env.__init__, the simulator's scene_dataset was unconditionally overwritten with the current episode's scene_dataset_config. For HM3D InstanceImageNav and other semantic tasks, this broke semantics loading because the episode data carries a basic scene dataset config (e.g., 'default' or 'hm3d_basis.scene_dataset_config.json') that lacks semantic annotation paths, overriding the user's semantic-aware config (e.g., 'hm3d_annotated_basis.scene_dataset_config.json'). The fix: only use the episode's scene_dataset_config as a fallback when the simulator config's scene_dataset is still set to its default value ('default'), indicating the user hasn't explicitly configured it. When the user provides an explicit scene_dataset path, that choice is now respected. Fixes #2090 --- habitat-lab/habitat/core/env.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/habitat-lab/habitat/core/env.py b/habitat-lab/habitat/core/env.py index d0fe621a0a..cb09436fb6 100644 --- a/habitat-lab/habitat/core/env.py +++ b/habitat-lab/habitat/core/env.py @@ -102,9 +102,10 @@ def __init__( self._setup_episode_iterator() self.current_episode = next(self.episode_iterator) with read_write(self._config): - self._config.simulator.scene_dataset = ( - self.current_episode.scene_dataset_config - ) + if self._config.simulator.scene_dataset == "default": + self._config.simulator.scene_dataset = ( + self.current_episode.scene_dataset_config + ) self._config.simulator.scene = self.current_episode.scene_id self.number_of_episodes = len(self.episodes)