GNU General Public License v3.0

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

深度剖析 Lumina Layers:让色彩设计走进 3D 打印

项目背景与痛点

在 3D 打印领域,全彩打印一直是一个技术难题。传统的 3D 打印通常只能打印出单色或双色模型。而 Lumina Layers 项目最近解决了这个问题,它通过基于物理的多材料 FDM(熔融沉积成型)技术,实现了全彩 3D 打印。它将图像转换为可切片的 3MF 文件,并通过校准后的光线投射系统实现彩色混合,支持 2 到 8 色系统,可用于 BambuStudio 或 OrcaSlicer 等切片软件。

这种技术使得 3D 打印界能够更加准确地还原图像中的色彩,为工业设计、教育以及专业艺术提供了广泛的应用空间。通过提供多材料系统,Lumina Layers 支持使用不同颜色的材料在一个模型上打印,避免了单独使用多种型号材料带来的不便,极大地提升了打印效果的质量。

核心技术揭秘

在 Lumina Layers 项目的背后,有多项复杂的技术支持。从色彩转换和混合算法到多材料系统的智能结合,每一部分都经过精细的设计。

技术架构

该项目中的关键架构由几个基本组件组成:图像输入处理、色彩转换、光线投射和 3D 打印执行。这其中,色彩转换部分使用了基于光线透射的校准算法,以确保输出的色彩精确再现原始图像中的色彩数据。下面是其架构图:

graph TD A[图像输入] --> B[色彩转换] B -->|校准| C{"光线投射?"} C -->|"通过"| D[生成3MF] C -->|"不通过"| E[重新校准] D --> F[切片软件] F --> G[3D打印]

项目中对光线的设计是其核心技术之一。光线透射系统通过一系列传感器和校准工具,能够精确地将图像色彩转化为 3D 打印模型中的各种颜色。通过这种方法,该项目在三维打印中加入了色彩的维度,赋予了打印作品更多细节和表现力。

实现原理

Lumina Layers 采用了一种称为基于物理的多材料 FDM 色彩混合技术。在这个过程中,颜色数据首先被转换为一种适合与打印材料兼容的形式。该系统使用多个喷嘴,每个喷嘴专用于一种颜料或材料,因此能够精确地控制颜色和材料的均匀分布。

在图像传递到 3D 打印机之前,原始图像中的色彩数据会根据打印材料的特性进行转换和混合。这不仅确保了打印出来的模型能够准确地表示原始图像中的颜色,也提高了打印质量。通过这种方法,Lumina Layers 能够支持从 2 色到 8 色的打印,为制作过程中的色彩深度提供了极大的灵活性。

功能亮点与差异

Lumina Layers 在功能上相比同类竞品具有显著优势。对于多材料系统的支持特别突出:它提供了多达 8 色的选项,而大多数类似的解决方案在此方面提供有限的选择。此外,Lumina Layers 提供的 3MF 输出兼容多种切片软件,确保其可以在更多环境下使用。

另一个重要的特点是它提供的基于物理的色彩校准系统,利用光线投射技术精确再现原图颜色。这种高度精确的颜色处理能力使得 Lumina Layers 对于需要高度真实色彩重现的应用场景如教育、医学等具有重要价值。

应用场景与落地建议

Lumina Layers 适合用于细分的市场领域,例如教育和娱乐行业。对于教育来说,可以提供准确的颜色预览,帮助学生理解复杂的色彩理论和应用。在娱乐领域,特别适合用来打造高度细节化的模型制作和个人定制化物品。

然而,在生产环境中使用时需要注意一些问题。由于其复杂的技术架构,需要高度精密的打印设备和精确的校准步骤。用户在初次尝试时可能会遇到校准和打印质量不佳等问题,因此一定确保有详细的操作文档和针对性的培训。

综合评价

Lumina Layers 作为一款基于物理的多材料 FDM 色彩系统,无疑是当前 3D 打印领域的一大创新。它在色彩转换和多材料打印方面表现突出,提供了广泛的色彩选择和高质量的打印效果。然而,由于其复杂的技术细节,使用该系统的用户需要注意设备的校准和可能的技术障碍。总体而言,它是一个值得推荐的、面向特定应用需求的专业解决方案。

关于

GitHub 原始描述(英文)

A physics-based multi-material FDM color system. Converts images to full-color 3D prints via calibrated light-transmission mixing. Supports 2-8 color systems with slicer-ready 3MF export (BambuStudio/OrcaSlicer).

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
1503
价值分
756
活跃状态
活跃

语言占比

Batchfile
C++
CMake
CSS
HTML
JavaScript
Mako
OpenSCAD
Python
Standard ML
TypeScript

README

Lumina Studio logo

Lumina Studio 2.0

Flat full-colour FDM printing

Layer filaments to reproduce the colours and tonal detail of an image.

简体中文 · Run from source · Project Wiki · Features

Support Lumina Studio on Patreon    Support Lumina Studio on Afdian

View sponsors and supported brands

Official website Project Wiki Bilibili YouTube QQ community Discord

X TikTok Bluesky Mastodon

Bring the print closer to the original

Lumina Studio 2.0 layers different filaments to reproduce an image’s colours and shading in a flat full-colour FDM print.

It uses calibration data from your materials to match layer recipes to the image. Compare the preview with the original, change colours you do not like, and adjust gradients or recipes in individual regions. Then export a 3MF for your slicer.

Use an existing LUT preset, or photograph gradient cards to build your own material profiles. Combine your materials and adjust colour layers and layer height.

Printed by users

User prints labelled as 8 and 18 colours, including framed artwork and a panda photograph

User prints labelled as 8 and 12 colours, including standing character cut-outs and framed artwork

Colour, shading, and detail with different filament combinations.

What you can make

Start with a photo, illustration, or piece of pixel art. Make framed pictures, standing cut-outs, keychains, or fridge magnets, or add your own structural design and try something different.

Flat pixel characters and a jointed three-dimensional pixel figure

With structural design and assembly, pixel characters can become jointed figures.

A folding fan, perforated board, puzzle, and glow-in-the-dark phone case

A folding fan, perforated board, playable puzzle, and luminescent colour.

Two large-format colour FDM prints featuring cats

If the whole picture will not fit on the bed, print it in sections and assemble or frame it.

These are physical prints made by Lumina users; colour counts follow the makers’ labels. The photos are shown with permission for the project. Copyright in the depicted artwork remains with its respective creator. See the image record.

What is in 2.0

What you want to do How to do it in Lumina
Reproduce colours and image detail Choose high-fidelity, pixel, or SVG vector mode to suit the image. Crop, handle transparency, or vectorise a bitmap, then compare the colour result with the original and inspect it in 3D.
Fix a colour you do not like Select colours or a local region, replace colours, change recipes, and adjust gradients. Undo a change, or save a JSON project or PNG share card and carry on another day.
Use your own filaments Print and photograph gradient cards, then organise profiles and palettes in the material library. Fixed colour boards and existing LUT presets are still there.
Reuse your conversion settings Save the source type, filament combination, size, structure, layers, and coating settings as a preset for next time. Images and local edits belong in a JSON project or PNG share card.
Make a keychain, fridge magnet, or similar piece Add loops, magnet cavities, outlines, or transparent coating; choose single-sided, double-sided, relief, or cloisonné construction. Which options work together depends on the mode.
Put artwork on an existing model Open model-surface mode, select a planar face, and adjust the image’s position, size, and angle before generating.
Make a puzzle or a larger print Use puzzle, large-format tiling, or batch conversion, arrange work for the selected printer bed, and export the projects.
Try other creative tools Install independent modules through Creative Workshop. The official bead-pattern studio can send its result back to Lumina for colour matching and printing. Community modules need the Electron desktop app; trusted official modules also work in the browser.

The interface has Chinese and English, plus light and dark themes. Use the preview while editing, then check materials, process settings, and placement in your slicer before printing.

Your first print

  1. Prepare material profiles. Import profiles that match the filaments you will use, or print and photograph gradient cards, then extract and save profiles in Material Extraction.
  2. Choose your filament combination. Set Source Type to Material Archive, select the filaments for this print, and set the number of colour layers and layer height.
  3. Import an image or SVG. Set its physical size and modelling mode, then create a preview.
  4. Edit the result. Compare it with the original and adjust local colours, recipes, and structure. To add a transparent coating, enable it and set its thickness. Save a JSON project or PNG share card to continue later.
  5. Select a printer and generate. Choose the slicer, device, nozzle, and build plate in Settings, then download the 3MF or multi-plate ZIP.
  6. Check it in the slicer. Confirm filament slots, temperatures, layer height, wipe tower, and bed limits before slicing and printing.

For a first try, use a few profiled filaments to print a small sample and check how closely the colours and shading match the image. Recombine existing profiles when you want a different palette; when you add a new filament, create a profile for it.

Why calibration matters

Two rolls labelled red can look quite different when layered. Layer height, stacking order, material batch, print settings, and lighting all matter too. That is why Lumina records the colours of a physical print first and uses those measurements for colour matching.

Fixed boards and LUTs

A physical fixed calibration board

The fixed-board process is straightforward: generate a board, print it, photograph it, extract the colours, and save a LUT. Choose a preset setup for 2, 4, 6, or 8 materials. A new material set or important setting change usually means making a new calibration board.

LUT inputs include .npy, keyed .json, .npz, and .msgpack. Match the preset’s material order, layer height, and colour mode to the actual print; the filename or colour count alone is not enough.

The project Wiki has guidance on photography and colour extraction.

Gradient cards and material profiles

Gradient calibration cards used by Lumina Studio 2.0

Gradient cards record a material’s data first, then profiles are combined to calculate colour mixing. Changing a palette does not require a complete fixed board for every combination. Organise, import, and export profiles in the material library, then use them for colour matching.

Photography and calculation both have some error, so check the colour on a real print. A small sample is a good way to check colour and thickness before starting a large piece. More finished work is in the users’ gallery.

Source Nightly

Try recent changes from the source previews. A preview is published automatically after a maintainer reviews and merges a PR and all main-branch CI workflows pass for that commit.

Each preview has its own tag, commit SHA, and release notes. Download Source code (zip) or Source code (tar.gz) from the release page, extract it, and follow the installation steps below. No installer or portable application is provided.

For a downloaded archive, open a terminal in the extracted directory and start at installation step 2. Skip the Git clone step so you keep using the selected preview commit.

Previews may still have bugs. Back up important projects and include the release’s commit SHA when reporting a problem. Failed checks do not publish a new preview; the previous one remains available.

Installation

Run the source in a browser or in the Electron desktop window.

Requirements

Dependency Version
Python Standard 64-bit CPython; 3.12 recommended, 3.12–3.14 supported.
Node.js 24.x recommended; 22.x must be at least 22.13.
pnpm 10.33.2, matching the repository’s packageManager.

Install Python, Node.js, and pnpm. If using Corepack, enable it and select the pnpm version above; do not assume that Node.js includes Corepack.

Precompiled dependencies for the complete application cover:

System Architecture and minimum
Windows x64
Linux x86-64, glibc 2.28 or newer
macOS Apple Silicon (arm64), macOS 14 or newer

Intel Mac, Linux ARM, Alpine/musl, Windows ARM, 32-bit, and free-threaded Python are outside this complete dependency set. This is the intersection of the required dependencies, not a claim of physical printing tests on every platform or device.

1. Get the 2.0 source

git clone https://github.com/lumina-layer-studio/Lumina-Layers.git
cd Lumina-Layers

2. Create and activate a Python environment

python -m venv .venv

If macOS/Linux provides only python3, create it with python3 -m venv .venv. Activate it for your shell:

Shell Command
Windows PowerShell .\.venv\Scripts\Activate.ps1
macOS / Linux source .venv/bin/activate

3. Install dependencies and start

From the repository root, with the environment active:

python -m pip install --upgrade pip
python -m pip install -r requirements.txt
pnpm --dir frontend install --frozen-lockfile
python start_all.py

Open the frontend address printed by the launcher, normally http://localhost:4174. The backend uses port 8000 by default. Follow the launcher’s prompt to stop it.

Source installs do not connect to an online material library by default. Local material profiles work offline. To connect a Registry you host or are authorized to use, configure its service URL separately; see the Registry connection guide.

The native 3MF dependencies are fatcat-metadata==0.1.3 and the official neroued-3mf==0.4.2 release. Both install from PyPI through requirements.txt; no custom writer wheelhouse is needed. See the native dependency guide for supported platforms. The SVG dependency remains lumina-svg-core==0.3.4.

Optional: desktop window

After installing the Python and frontend dependencies above:

pnpm --dir electron install --frozen-lockfile
pnpm --dir electron start

The desktop window starts its own Python backend and frontend, so do not also run start_all.py. Confirming exit stops the processes it started.

One more look before printing

  • Check that the materials and layer height match your profile or preset. Transparent coating follows the model’s material type; mixed or unknown types default to PLA. Confirm the actual transparent filament, temperatures, and compatibility warnings in the slicer before printing.
  • Model surface overlay currently cannot be exported together with large-format tiling; choose one of the two workflows.
  • If a large model’s wipe tower or brim will not fit, Lumina keeps the warning and lets you download the project. You still need to arrange it in the slicer; a downloaded file has not necessarily been placed or sliced successfully.
  • Prusa export currently uses the PrusaSlicer 3.0.0-alpha12 preview format. Check compatibility before using another version. Details are in 3MF export.
  • Save a JSON project or PNG share card to continue editing later, and keep the original image, presets, and material profiles for important projects.

Documentation, community, and support

The project Wiki contains guides and updates; the multi-brand slicer guide covers print setup.

Share a print or ask for help through the QQ and Discord links above. For a software problem, the built-in feedback tool helps us reproduce it: include what you did, the version, and relevant files. Reports are saved under local feedback/ before submission to the official service. To keep them on your device, set LUMINA_FEEDBACK_SERVER_URL=off in .env.local. See .env.example and bug report details.

Lumina Studio is a non-profit open-source community project. If it has helped you and you would like to keep the work going, you can support it on Afdian or Patreon. Support goes towards development, testing, documentation, packaging, and community maintenance. The sponsors page lists supporters and material-brand adaptation information.

License and commercial use

Project-owned 2.0 software is licensed under AGPL-3.0-only. Independent modules, dependencies, and resources retain their own terms. See LICENSE, LICENSING.md, and third-party resource notices.

Individuals and businesses may use the software free of charge. Generated model files and physical prints may be sold commercially; public sharing or sale requires Lumina-Layers attribution under the output terms. Contact the development team for separate written closed-source integration rights or an output-attribution waiver, as described in commercial authorization.

Contributing

Contributions of reproducible issues, code, presets, material measurements, translations, and documentation are welcome. The source uses Python + FastAPI, React + TypeScript, and an Electron desktop host. Start with CONTEXT-MAP.md. Tests additionally need requirements-dev.txt. PostgreSQL is optional; ordinary local use needs no database.

Thanks to HueForge, AutoForge, ChromaStack, LD_ColorLayering, ChromaPrint3D, and the wider 3D-printing community for sharing their work. Third-party code, data, and resources remain subject to their respective licences and attribution notices.

Contributors

GitHub contributors to Lumina-Layers

Thank you to everyone who contributed code, test prints, presets, translations, and documentation.

评论

暂无评论