Source code for voxcity.visualizer.palette

from __future__ import annotations


[docs] def get_voxel_color_map(color_scheme='default'): """ Returns a color map for voxel visualization based on the specified color scheme. This function provides multiple predefined color schemes for visualizing voxel data. Each scheme maps voxel class IDs to RGB color values [0-255]. The class IDs follow a specific convention where negative values represent built environment elements and positive values represent natural/ground surface elements. """ if color_scheme == 'default': return { -99: [0, 0, 0], -30: [255, 0, 102], -17: [238, 242, 234], -16: [56, 78, 84], -15: [147, 140, 114], -14: [139, 149, 159], -13: [186, 187, 181], -12: [248, 166, 2], -11: [81, 59, 56], -3: [180, 187, 216], -2: [78, 99, 63], -1: [188, 143, 143], 1: [239, 228, 176], 2: [123, 130, 59], 3: [97, 140, 86], 4: [112, 120, 56], 5: [116, 150, 66], 6: [187, 204, 40], 7: [77, 118, 99], 8: [22, 61, 51], 9: [44, 66, 133], 10: [205, 215, 224], 11: [108, 119, 129], 12: [59, 62, 87], 13: [108, 119, 129], 14: [239, 228, 176], } elif color_scheme == 'high_contrast': return { -99: [0, 0, 0], -30: [255, 0, 255], -17: [255, 255, 255], -16: [0, 0, 255], -15: [153, 76, 0], -14: [192, 192, 192], -13: [128, 128, 128], -12: [255, 128, 0], -11: [153, 0, 0], -3: [0, 255, 255], -2: [0, 153, 0], -1: [204, 0, 102], 1: [255, 255, 153], 2: [102, 153, 0], 3: [0, 204, 0], 4: [153, 204, 0], 5: [0, 102, 0], 6: [204, 255, 51], 7: [0, 153, 153], 8: [0, 51, 0], 9: [0, 102, 204], 10: [255, 255, 255], 11: [76, 76, 76], 12: [0, 0, 0], 13: [76, 76, 76], 14: [255, 204, 153], } elif color_scheme == 'monochrome': return { -99: [0, 0, 0], -30: [28, 28, 99], -17: [242, 242, 242], -16: [51, 51, 153], -15: [102, 102, 204], -14: [153, 153, 204], -13: [204, 204, 230], -12: [76, 76, 178], -11: [25, 25, 127], -3: [179, 179, 230], -2: [51, 51, 153], -1: [102, 102, 178], 1: [230, 230, 255], 2: [128, 128, 204], 3: [102, 102, 204], 4: [153, 153, 230], 5: [76, 76, 178], 6: [204, 204, 255], 7: [76, 76, 178], 8: [25, 25, 127], 9: [51, 51, 204], 10: [242, 242, 255], 11: [128, 128, 178], 12: [51, 51, 127], 13: [128, 128, 178], 14: [230, 230, 255], } elif color_scheme == 'pastel': return { -99: [0, 0, 0], -30: [255, 179, 217], -17: [245, 245, 245], -16: [173, 196, 230], -15: [222, 213, 196], -14: [211, 219, 226], -13: [226, 226, 226], -12: [255, 223, 179], -11: [204, 168, 166], -3: [214, 217, 235], -2: [190, 207, 180], -1: [235, 204, 204], 1: [250, 244, 227], 2: [213, 217, 182], 3: [200, 226, 195], 4: [209, 214, 188], 5: [195, 220, 168], 6: [237, 241, 196], 7: [180, 210, 205], 8: [176, 196, 190], 9: [188, 206, 235], 10: [242, 245, 250], 11: [209, 213, 219], 12: [189, 190, 204], 13: [209, 213, 219], 14: [250, 244, 227], } elif color_scheme == 'dark_mode': return { -99: [0, 0, 0], -30: [153, 51, 102], -17: [76, 76, 76], -16: [33, 46, 51], -15: [89, 84, 66], -14: [83, 89, 94], -13: [61, 61, 61], -12: [153, 102, 0], -11: [51, 35, 33], -3: [78, 82, 99], -2: [46, 58, 37], -1: [99, 68, 68], 1: [102, 97, 75], 2: [61, 66, 31], 3: [46, 77, 46], 4: [56, 61, 28], 5: [54, 77, 31], 6: [89, 97, 20], 7: [38, 59, 49], 8: [16, 31, 26], 9: [22, 33, 66], 10: [82, 87, 92], 11: [46, 51, 56], 12: [25, 31, 43], 13: [46, 51, 56], 14: [102, 97, 75], } elif color_scheme == 'grayscale': return { -99: [0, 0, 0], -30: [253, 231, 37], -17: [240, 240, 240], -16: [60, 60, 60], -15: [130, 130, 130], -14: [150, 150, 150], -13: [180, 180, 180], -12: [170, 170, 170], -11: [70, 70, 70], -3: [190, 190, 190], -2: [90, 90, 90], -1: [160, 160, 160], 1: [230, 230, 230], 2: [120, 120, 120], 3: [110, 110, 110], 4: [115, 115, 115], 5: [100, 100, 100], 6: [210, 210, 210], 7: [95, 95, 95], 8: [40, 40, 40], 9: [50, 50, 50], 10: [220, 220, 220], 11: [140, 140, 140], 12: [30, 30, 30], 13: [140, 140, 140], 14: [230, 230, 230], } elif color_scheme == 'white_mode': return { -99: [0, 0, 0], -30: [220, 80, 80], -17: [250, 250, 250], -16: [210, 225, 235], -15: [230, 225, 215], -14: [225, 230, 235], -13: [236, 236, 236], -12: [245, 232, 210], -11: [235, 210, 205], -3: [225, 230, 240], -2: [190, 210, 190], -1: [230, 215, 215], 1: [248, 245, 235], 2: [225, 235, 215], 3: [220, 235, 220], 4: [240, 235, 215], 5: [210, 230, 210], 6: [245, 250, 235], 7: [220, 235, 230], 8: [205, 215, 210], 9: [200, 220, 245], 10: [252, 252, 252], 11: [230, 230, 230], 12: [210, 210, 215], 13: [230, 230, 230], 14: [248, 245, 235], } else: # Fallback to default palette for unknown schemes return get_voxel_color_map('default')