From 793f8fee328fc4ce2ef4b1685af9ea0d9755bd3d Mon Sep 17 00:00:00 2001 From: Utkarsh Gill <46515280+utkarshgill@users.noreply.github.com> Date: Sat, 7 Mar 2026 11:44:31 +0530 Subject: [PATCH] fix(sim): use getRamImageAs for correct channel order (#37528) getRamImage() returns panda3d's internal BGRA format. on macOS this produces swapped red/blue channels in the sim camera feed. getRamImageAs("RGBA") requests explicit RGBA reordering from panda3d, correct on all platforms. no-op where internal format is already RGBA. ref: https://docs.panda3d.org/1.10/python/reference/panda3d.core.Texture#panda3d.core.Texture.getRamImageAs fixes #37526 --- tools/sim/bridge/metadrive/metadrive_common.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/sim/bridge/metadrive/metadrive_common.py b/tools/sim/bridge/metadrive/metadrive_common.py index 42a7eb60dd..079d933d1a 100644 --- a/tools/sim/bridge/metadrive/metadrive_common.py +++ b/tools/sim/bridge/metadrive/metadrive_common.py @@ -13,9 +13,9 @@ class CopyRamRGBCamera(RGBCamera): def get_rgb_array_cpu(self): origin_img = self.cpu_texture - img = np.frombuffer(origin_img.getRamImage().getData(), dtype=np.uint8) - img = img.reshape((origin_img.getYSize(), origin_img.getXSize(), -1)) - img = img[:,:,:3] # RGBA to RGB + img = np.frombuffer(origin_img.getRamImageAs("RGBA").getData(), dtype=np.uint8) + img = img.reshape((origin_img.getYSize(), origin_img.getXSize(), 4)) + img = img[:, :, :3] # img = np.swapaxes(img, 1, 0) img = img[::-1] # Flip on vertical axis return img