gitextract_1imuoy6m/ ├── .dockerignore ├── .github/ │ └── workflows/ │ └── build.yml ├── .gitignore ├── CHANGELOG.md ├── CHANGELOG_CN.md ├── Dockerfile ├── LICENSE ├── README.md ├── README_CN.md ├── api/ │ ├── __init__.py │ ├── app.py │ ├── dependencies.py │ ├── file_bridge.py │ ├── file_registry.py │ ├── routers/ │ │ ├── __init__.py │ │ ├── calibration.py │ │ ├── converter.py │ │ ├── extractor.py │ │ ├── five_color.py │ │ ├── health.py │ │ ├── lut.py │ │ ├── slicer.py │ │ └── system.py │ ├── schemas/ │ │ ├── __init__.py │ │ ├── calibration.py │ │ ├── converter.py │ │ ├── extractor.py │ │ ├── five_color.py │ │ ├── lut.py │ │ ├── responses.py │ │ ├── slicer.py │ │ └── system.py │ ├── session_store.py │ ├── worker_pool.py │ └── workers/ │ ├── __init__.py │ └── converter_workers.py ├── api_server.py ├── assets/ │ └── smart_8color_stacks.npy ├── bambu_config_template.json ├── benchmark.py ├── config.py ├── core/ │ ├── __init__.py │ ├── calibration.py │ ├── color_analyzer.py │ ├── color_matching_hue_aware.py │ ├── color_merger.py │ ├── color_replacement.py │ ├── converter.py │ ├── extractor.py │ ├── five_color_combination.py │ ├── geometry_utils.py │ ├── heightmap_loader.py │ ├── i18n.py │ ├── image_preprocessor.py │ ├── image_processing.py │ ├── isolated_pixel_cleanup.py │ ├── lut_merger.py │ ├── mesh_generators.py │ ├── naming.py │ ├── slicer.py │ ├── tray.py │ └── vector_engine.py ├── docs/ │ └── api_mapping_blueprint.md ├── frontend/ │ ├── README.md │ ├── eslint.config.js │ ├── index.html │ ├── package.json │ ├── postcss.config.js │ ├── public/ │ │ ├── hdr/ │ │ │ └── studio_small_09_1k.hdr │ │ └── test.glb │ ├── scripts/ │ │ └── generate-test-glb.mjs │ ├── src/ │ │ ├── App.css │ │ ├── App.tsx │ │ ├── __tests__/ │ │ │ ├── App.test.tsx │ │ │ ├── InteractiveModelViewer.test.ts │ │ │ ├── KeychainRing3D.test.tsx │ │ │ ├── LutColorGrid.test.ts │ │ │ ├── Scene3D.test.tsx │ │ │ ├── action-bar-always-visible.property.test.ts │ │ │ ├── action-bar-always-visible.test.ts │ │ │ ├── api-client.property.test.ts │ │ │ ├── app-tabs.test.tsx │ │ │ ├── autoPreview.test.ts │ │ │ ├── bed-size-selector.property.test.ts │ │ │ ├── calibration-hooks.property.test.ts │ │ │ ├── calibration-panel.test.tsx │ │ │ ├── calibration-store.property.test.ts │ │ │ ├── colorRemap.property.test.ts │ │ │ ├── colorSelect.property.test.ts │ │ │ ├── converter-api.test.ts │ │ │ ├── converter-store.property.test.ts │ │ │ ├── extractor-5color.property.test.ts │ │ │ ├── extractor-api.property.test.ts │ │ │ ├── extractor-canvas.test.tsx │ │ │ ├── extractor-panel.test.tsx │ │ │ ├── extractor-store.property.test.ts │ │ │ ├── five-color-store.property.test.ts │ │ │ ├── health-status.property.test.tsx │ │ │ ├── keychainRing.property.test.ts │ │ │ ├── layout.test.tsx │ │ │ ├── loading-spinner.test.tsx │ │ │ ├── lut-manager-panel.test.tsx │ │ │ ├── lut-manager-refresh.property.test.ts │ │ │ ├── lut-manager-store.property.test.ts │ │ │ ├── lutColorFilter.property.test.ts │ │ │ ├── model-centering.property.test.ts │ │ │ ├── paletteLutMerge.property.test.ts │ │ │ ├── paletteLutMerge.test.tsx │ │ │ ├── paletteOptimization.property.test.ts │ │ │ ├── paletteOptimization.test.tsx │ │ │ ├── realtimePreview.property.test.ts │ │ │ ├── realtimePreview.test.ts │ │ │ ├── reliefHeight.property.test.ts │ │ │ ├── replace-preview.property.test.ts │ │ │ ├── scaleUtils.property.test.ts │ │ │ ├── settings-store.property.test.ts │ │ │ ├── slicer.property.test.ts │ │ │ ├── stack-positions-nonoverlap.property.test.ts │ │ │ ├── tab-filter.property.test.ts │ │ │ ├── tab-switch-layout.property.test.ts │ │ │ ├── theme.property.test.ts │ │ │ ├── theme.test.tsx │ │ │ ├── ui-components.test.tsx │ │ │ ├── widget-drag-perf.property.test.ts │ │ │ ├── widget-registry-i18n.property.test.ts │ │ │ ├── widget-workspace.property.test.ts │ │ │ ├── widget-workspace.test.tsx │ │ │ └── zoomable-image.property.test.ts │ │ ├── api/ │ │ │ ├── __tests__/ │ │ │ │ └── batchApi.property.test.ts │ │ │ ├── calibration.ts │ │ │ ├── client.ts │ │ │ ├── converter.ts │ │ │ ├── extractor.ts │ │ │ ├── fiveColor.ts │ │ │ ├── lut.ts │ │ │ ├── slicer.ts │ │ │ ├── system.ts │ │ │ └── types.ts │ │ ├── components/ │ │ │ ├── AboutView.tsx │ │ │ ├── BedPlatform.tsx │ │ │ ├── CalibrationPanel.tsx │ │ │ ├── ExtractorCanvas.tsx │ │ │ ├── ExtractorPanel.tsx │ │ │ ├── FiveColorCanvas.tsx │ │ │ ├── FiveColorQueryPanel.tsx │ │ │ ├── InteractiveModelViewer.tsx │ │ │ ├── KeychainRing3D.tsx │ │ │ ├── LanguageToggle.tsx │ │ │ ├── LoadingSpinner.tsx │ │ │ ├── LutManagerPanel.tsx │ │ │ ├── ModelViewer.tsx │ │ │ ├── Scene3D.tsx │ │ │ ├── ThemeToggle.tsx │ │ │ ├── __tests__/ │ │ │ │ ├── ActionBar.batch.test.tsx │ │ │ │ ├── BasicSettings.batch.test.tsx │ │ │ │ ├── BatchFileUploader.test.tsx │ │ │ │ ├── BatchResultSummary.property.test.tsx │ │ │ │ └── BatchResultSummary.test.tsx │ │ │ ├── lightingConfig.ts │ │ │ ├── sections/ │ │ │ │ ├── ActionBar.tsx │ │ │ │ ├── AdvancedSettings.tsx │ │ │ │ ├── BasicSettings.tsx │ │ │ │ ├── BedSizeSelector.tsx │ │ │ │ ├── CloisonneSettings.tsx │ │ │ │ ├── CoatingSettings.tsx │ │ │ │ ├── KeychainLoopSettings.tsx │ │ │ │ ├── LutColorGrid.tsx │ │ │ │ ├── OutlineSettings.tsx │ │ │ │ ├── PalettePanel.tsx │ │ │ │ ├── ReliefSettings.tsx │ │ │ │ └── SlicerSelector.tsx │ │ │ ├── themeConfig.ts │ │ │ ├── ui/ │ │ │ │ ├── Accordion.tsx │ │ │ │ ├── BatchFileUploader.tsx │ │ │ │ ├── BatchResultSummary.tsx │ │ │ │ ├── Button.tsx │ │ │ │ ├── Checkbox.tsx │ │ │ │ ├── ColorModeBadge.tsx │ │ │ │ ├── CropModal.tsx │ │ │ │ ├── Dropdown.tsx │ │ │ │ ├── FullScreenModal.tsx │ │ │ │ ├── ImageUpload.tsx │ │ │ │ ├── RadioGroup.tsx │ │ │ │ ├── Slider.tsx │ │ │ │ └── ZoomableImage.tsx │ │ │ └── widget/ │ │ │ ├── ActionBarWidgetContent.tsx │ │ │ ├── AdvancedSettingsWidgetContent.tsx │ │ │ ├── BasicSettingsWidgetContent.tsx │ │ │ ├── CalibrationWidgetContent.tsx │ │ │ ├── CloisonneSettingsWidgetContent.tsx │ │ │ ├── CoatingSettingsWidgetContent.tsx │ │ │ ├── ColorWorkstation.tsx │ │ │ ├── ExtractorWidgetContent.tsx │ │ │ ├── FiveColorWidgetContent.tsx │ │ │ ├── KeychainLoopWidgetContent.tsx │ │ │ ├── LutManagerWidgetContent.tsx │ │ │ ├── OutlineSettingsWidgetContent.tsx │ │ │ ├── ReliefSettingsWidgetContent.tsx │ │ │ ├── SnapGuides.tsx │ │ │ ├── TabNavBar.tsx │ │ │ ├── WidgetHeader.tsx │ │ │ ├── WidgetPanel.tsx │ │ │ └── WidgetWorkspace.tsx │ │ ├── hooks/ │ │ │ ├── useActiveModelUrl.ts │ │ │ ├── useAutoPreview.ts │ │ │ ├── useConverterDataInit.ts │ │ │ └── useThemeConfig.ts │ │ ├── i18n/ │ │ │ ├── context.tsx │ │ │ └── translations.ts │ │ ├── index.css │ │ ├── main.tsx │ │ ├── setupTests.ts │ │ ├── stores/ │ │ │ ├── __tests__/ │ │ │ │ ├── batchStore.property.test.ts │ │ │ │ ├── batchStore.test.ts │ │ │ │ ├── converterStore.property.test.ts │ │ │ │ ├── converterStore.test.ts │ │ │ │ ├── cropStore.property.test.ts │ │ │ │ ├── cropStore.test.ts │ │ │ │ ├── slicerStore.property.test.ts │ │ │ │ └── slicerStore.test.ts │ │ │ ├── aboutStore.ts │ │ │ ├── calibrationStore.ts │ │ │ ├── converterStore.ts │ │ │ ├── extractorStore.ts │ │ │ ├── fiveColorStore.ts │ │ │ ├── lutManagerStore.ts │ │ │ ├── settingsStore.ts │ │ │ ├── slicerStore.ts │ │ │ └── widgetStore.ts │ │ ├── types/ │ │ │ └── widget.ts │ │ └── utils/ │ │ ├── __tests__/ │ │ │ ├── colorUtils.property.test.ts │ │ │ └── colorUtils.test.ts │ │ ├── colorUtils.ts │ │ ├── scaleUtils.ts │ │ └── widgetUtils.ts │ ├── tsconfig.app.json │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts ├── icon.icns ├── lumina_studio.spec ├── lut-npy预设/ │ ├── Aliz/ │ │ ├── PETG/ │ │ │ ├── Aliz&4色PETG&CMYW.npy │ │ │ ├── Aliz&4色PETG&RYBW.npy │ │ │ ├── Aliz&6色PETG&CMYWGK.npy │ │ │ ├── Aliz&6色PETG&RYBWGK.npy │ │ │ ├── Aliz&8色PETG.npy │ │ │ └── Aliz&PETG&5color&红-黄-蓝-白-黑-20260304.npy │ │ ├── PLA/ │ │ │ ├── Aliz&4色PLA&CMYW.npy │ │ │ ├── Aliz&4色PLA&RYBW.npy │ │ │ ├── Aliz&6色PLA&CMYWGK.npy │ │ │ ├── Aliz&6色PLA&RYBWGK.npy │ │ │ └── Aliz&8色PLA.npy │ │ └── 使用须知&开发组精校版20260402.txt │ ├── BIQU/ │ │ ├── 必趣&PLAGO&2色BW.npy │ │ ├── 必趣&PLAGO&4色RYBW.npy │ │ ├── 必趣&PLAGO&6色RYBWGK.npy │ │ └── 必趣颜色说明.txt │ ├── CooBeen/ │ │ └── RYBW-CooBeen PETG.npy │ ├── Creality/ │ │ └── RYBW-Creality Hyper PLA.npy │ ├── Custom/ │ │ ├── Bambulab&PLA&8色&红-品红-青-蓝-黄-白-绿-黑.npy │ │ ├── Bambulab&PLA&BW&白-黑.npy │ │ ├── Bambulab&PLA&CMYW&青-品红-黄-绿-白-黑.npy │ │ ├── Bambulab&PLA&RYBW&红-黄-蓝-白.npy │ │ ├── Merged_8-Color+4-Color+6-Color+4-Color+6-Color+BW_20260307_091510.npz │ │ ├── Merged_8-Color+6-Color+BW+4-Color_20260227_222117.npz │ │ └── Merged_8-Color+BW+6-Color+4-Color_20260305_213304.npz │ ├── Elegoo/ │ │ └── Elegoo_pla_RYBW.npy │ ├── Jayo/ │ │ ├── Jayo&OW_PLA+_RYBW.npy │ │ └── Readme.md │ ├── Karvax/ │ │ ├── Karvax&PLA&8色&红-品红-青-蓝-黄-白-绿-黑.npy │ │ ├── Karvax&PLA&RYBW&红-蓝-黄-白.npy │ │ └── Karvax&PLA&RYBW&红-蓝-黄-绿-白-黑.npy │ ├── LUT命名规范 LUT Naming Convention.md │ ├── R3D/ │ │ └── R3DPLA青春版RYBW-PLA哑光中国红-PLA哑光黄-PLA哑光宝石蓝-PLA哑光白.npy │ ├── Sanci/ │ │ └── PETG/ │ │ ├── 4色/ │ │ │ ├── Sanci&PETG&CMYW&粉红-黄-蓝-白.npy │ │ │ └── Sanci&PETG&RYBW&红-黄-蓝-白.npy │ │ ├── 6色/ │ │ │ └── Sanci&PETG&RYBW&红-黄-蓝-白-绿-黑.npy │ │ └── 7色/ │ │ └── Sanci&PETG&Merged&红-黄-蓝-粉-绿-黑-白&20260402_215742.npz │ ├── Snapmaker/ │ │ ├── 使用说明&开发组精校版&20260405.txt │ │ ├── 快造&2色PLA&BW.npy │ │ ├── 快造&4色PLA&B(蓝)MYW.npy │ │ └── 快造&4色PLA&RYBW.npy │ ├── XYD小明/ │ │ ├── PETG/ │ │ │ ├── XYD小明&PETG&8色&红-品红-青-蓝-黄-白-绿-黑.npy │ │ │ ├── XYD小明&PETG&CMYW&青-品红-黄-白.npy │ │ │ ├── XYD小明&PETG&CMYW&青-品红-黄-绿-白-黑.npy │ │ │ ├── XYD小明&PETG&RYBW&红-蓝-黄-白.npy │ │ │ └── XYD小明&PETG&RYBW&红-蓝-黄-绿-白-黑.npy │ │ └── PLA/ │ │ ├── XYD小明&PLA&8色&红-品红-青-克莱因蓝-黄-白-绿-黑-20260327.npy │ │ ├── XYD小明&PLA&CMYW&品红-青-黄-绿-白-黑-20260327.npy │ │ ├── XYD小明&PLA&CMYW&青-品红-黄-白-20260327.npy │ │ ├── XYD小明&PLA&RYBW&红-蓝-黄-绿-白-黑-20260331.npz │ │ └── XYD小明&PLA&RYBW&红-黄-蓝-白-20260327.npy │ ├── bambulab/ │ │ ├── Bambulab&PLA&4色&RYBW&红-蓝-黄-白.npy │ │ ├── Bambulab&PLA&8色+4色.npz │ │ ├── Bambulab&PLA&8色-New.npy │ │ ├── README.txt │ │ ├── bambulab_pla_basic_cmyw.npy │ │ ├── bambulab_pla_basic_cmyw_new.npy │ │ └── bambulab_pla_basic_rybw.npy │ ├── npy预设说明 npy explanation.txt │ ├── 天瑞/ │ │ └── 天瑞-PETG-ECO-NGYX-RYBW.npy │ ├── 必应/ │ │ ├── 必应PETGHF.npy │ │ ├── 必应plaf.npy │ │ └── 必应使用说明.txt │ ├── 瑞贝思/ │ │ ├── 2色/ │ │ │ └── 瑞贝思&PLA&BW2色&20260328.npy │ │ ├── 4色/ │ │ │ └── 瑞贝思&PLA&RYBW4色&20260328.npy │ │ └── 6色/ │ │ └── 瑞贝思&PLA&RYBW&红-蓝-黄-绿-白-黑&20260331.npz │ ├── 精亮/ │ │ ├── 精亮&PLA4色&RYBW.npy │ │ ├── 精亮&PLA6色&黑 白 品红 青 黄 绿.npy │ │ ├── 精亮&PLA6色&黑 白 黄 绿 红 蓝.npy │ │ └── 精亮&PLA8色.npy │ ├── 纵维立方/ │ │ ├── 纵维立方&4色CMYW.npy │ │ ├── 纵维立方&4色RYBW.npy │ │ ├── 纵维立方&6色CMYWGK.npy │ │ ├── 纵维立方&6色RYBWGK.npy │ │ ├── 纵维立方&7色(青色蓝色共用蓝色).npy │ │ ├── 纵维立方&8色.npy │ │ ├── 纵维立方&PLA2色&BW.npy │ │ └── 纵维立方颜色说明开发组预设.txt │ ├── 赛纳/ │ │ ├── 使用说明.txt │ │ ├── 赛纳&2色PLA&BW-白-黑.npy │ │ ├── 赛纳&4色PETG&CMYW-品红-青-黄-白.npy │ │ ├── 赛纳&4色PLA&CMYW-品红-青-黄-白.npy │ │ ├── 赛纳&4色PLA&RYBW-红-黄-蓝-白.npy │ │ ├── 赛纳&6色PLA&CMYWGK-品红-青-黄-白-绿-黑.npy │ │ ├── 赛纳&6色PLA&RYBWGK-红-黄-蓝-白-绿-黑.npy │ │ └── 赛纳&8色PLA-红-黄-蓝-品红-青-白-绿-黑.npy │ ├── 通用LUT[有色差]RYBW General for personal use.npy │ └── 魔创/ │ ├── 魔创&PETG2色.npy │ ├── 魔创&PETG4色&CMYW.npy │ ├── 魔创&PETG4色&RYBW.npy │ ├── 魔创&PETG6色&CMYWGK.npy │ ├── 魔创&PETG6色&RYBWGK.npy │ ├── 魔创&PETG8色.npy │ └── 魔创使用说明.txt ├── main.py ├── requirements.txt ├── tests/ │ ├── test_5color_merge_properties.py │ ├── test_5color_merge_unit.py │ ├── test_api_app_unit.py │ ├── test_api_routers_unit.py │ ├── test_api_schemas_properties.py │ ├── test_bed_size_properties.py │ ├── test_calibration_integration_unit.py │ ├── test_calibration_routing_properties.py │ ├── test_cleanup_output_dir_properties.py │ ├── test_clear_cache_response_properties.py │ ├── test_color_merge_map_properties.py │ ├── test_color_merge_unit.py │ ├── test_color_replace_unit.py │ ├── test_converter_batch_unit.py │ ├── test_converter_generate_unit.py │ ├── test_converter_preview_unit.py │ ├── test_converter_vector_export_unit.py │ ├── test_converter_workers_unit.py │ ├── test_crop_properties.py │ ├── test_crop_unit.py │ ├── test_extractor_integration_unit.py │ ├── test_file_bridge_properties.py │ ├── test_file_registry_clear_properties.py │ ├── test_file_registry_properties.py │ ├── test_five_color_api_unit.py │ ├── test_five_color_query_properties.py │ ├── test_health_lut_unit.py │ ├── test_heic_support_properties.py │ ├── test_heightmap_color_height_properties.py │ ├── test_heightmap_properties.py │ ├── test_heightmap_unit.py │ ├── test_heightmap_upload_unit.py │ ├── test_layout_new_tabs_unit.py │ ├── test_lut_api_properties.py │ ├── test_lut_api_unit.py │ ├── test_lut_list_properties.py │ ├── test_lut_merger_properties.py │ ├── test_mime_type_properties.py │ ├── test_naming_properties.py │ ├── test_naming_unit.py │ ├── test_palette_connected_selection_unit.py │ ├── test_preview_click_selection_unit.py │ ├── test_relief_mode_fix_properties.py │ ├── test_relief_mode_fix_unit.py │ ├── test_segmented_glb_properties.py │ ├── test_segmented_glb_unit.py │ ├── test_session_store_clear_properties.py │ ├── test_session_store_properties.py │ ├── test_session_thread_safety_properties.py │ ├── test_session_ttl_properties.py │ ├── test_settings_api_properties.py │ ├── test_settings_api_unit.py │ ├── test_slicer_properties.py │ ├── test_slicer_unit.py │ ├── test_stack_order_properties.py │ ├── test_user_replacement_list_ui_unit.py │ ├── test_vector_engine_unit.py │ ├── test_worker_pool_properties.py │ ├── test_worker_pool_unit.py │ └── verify_merge_remap.py ├── ui/ │ ├── __init__.py │ ├── callbacks.py │ ├── crop_extension.py │ ├── fivecolor_tab_v2.py │ ├── layout_new.py │ ├── palette_extension.py │ └── styles.py └── utils/ ├── __init__.py ├── bambu_3mf_writer.py ├── color_recipe_logger.py ├── helpers.py ├── lut_manager.py └── stats.py