Skip to content

Releases

SpinSlicer v0.8.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 09:56

SpinSlicer v0.8.0 — Print on the printer in one press / Печать на принтер одной кнопкой


English

The printer, connected

  • Settings → Printer → Connect. The slicer reads the printer's profile (projector,
    vial, calibration) into its settings and says what came from the printer. Next time it
    connects to the same printer by itself.
  • Write to the printer. Changed the vial or the calibration in the slicer? "Write to the
    printer" shows what will change on the printer and stores it there. The printer stays the
    place where its settings live.

Print in one press

  • Print. The last step has a big Print button: the .spin goes to the printer, and
    the printer's screen asks "Print?" (the vial has to be in place). Push the joystick right and
    it starts. Under the button the slicer shows what is going on — waiting for the yes, spin-up,
    turn k of N, time left, done — and can stop the print.
  • To USB stick. Writes the .spin straight onto a USB stick (Windows, macOS, Linux;
    asks which one when there are several) and offers to eject it. No stick: the usual
    "Save as".

Needs SpinPrinter 0.8.0 (the "Print?" question on the printer's screen).


Русский

Принтер подключён

  • Настройки → Принтер → «Подключить». Слайсер забирает профиль принтера (проектор, колба,
    калибровка) в свои настройки и пишет, что пришло из принтера. В следующий раз подключается к
    нему сам.
  • «Записать в принтер». Поменяли колбу или калибровку в слайсере? «Записать в принтер»
    покажет, что изменится в принтере, и сохранит это там. Настройки принтера живут в самом принтере.

Печать одной кнопкой

  • «Напечатать». На последнем шаге большая кнопка «Напечатать»: файл .spin уходит на
    принтер, и его экран спрашивает «Печатать?» (флакон должен стоять). Джойстик вправо — печать
    пошла. Под кнопкой видно, что происходит: ждём «да», разгон, оборот k из N, сколько осталось,
    готово; там же «стоп».
  • «На флешку». Записывает .spin прямо на флешку (Windows, macOS, Linux; если флешек
    несколько, спросит какую) и предложит её извлечь. Флешки нет: обычное «Сохранить как».

Нужен SpinPrinter 0.8.0 (вопрос «Печатать?» на экране принтера).

Full Changelog: v0.7.1...v0.8.0

SpinSlicer v0.7.1

Choose a tag to compare

@github-actions github-actions released this 07 Nov 21:40

SpinSlicer v0.7.1 — Print files for SpinPrinter / Файлы печати для SpinPrinter


English

.spin: one file per print

  • Export for the printer. Print → "Export .spin" saves the projection video together
    with everything the printer needs: the number of revolutions, the exposure tolerance,
    the print time, the rotation direction and the angle of the first frame, a 320×320
    preview of the part and the slice settings. A .spin file is a plain ZIP (stored, not
    compressed), so any archive tool opens it; a sha256 of the video catches a damaged copy.
  • Send to the printer. Print → "Send to printer" uploads the .spin to a SpinPrinter
    over Wi-Fi. Settings → Printer finds printers on the network (mDNS _spinprinter._tcp,
    then spinslicer.local) or takes an address by hand, and the printer's profile fills
    the printer settings. Discovery uses zeroconf when it is installed; a typed address
    always works.
  • Plain MP4 too. A normal MP4 export now carries the print plan in its comment
    tag (or <name>.spin.json beside it when ffmpeg is missing), which SpinPrinter reads.
  • The format is described in docs/ecosystem.ru.md of
    SpinPrinter.

Physics fixes

  • Presharpen: the gradient used the blur instead of its transpose; with clamped
    edges the top and bottom rows were optimised wrongly. The step size now comes from the
    operator norm.
  • FastCAL L-BFGS: a line search that found no descent step no longer takes a step
    that raises the objective.
  • Resin absorption hint: α is the natural-log coefficient, α = 2.303·A per mm = 1/Dp.

Under the hood

  • The headless self-check no longer crashes on Linux CI: the off-screen 3D view uses a
    plain off-screen plotter and ignores Qt paint events.
  • New tests: .spin round trip and damaged copies, the MP4 tag, upload and printer
    profile against a local server, absolute dose and print time against Beer–Lambert.

Русский

.spin: один файл на печать

  • Экспорт для принтера. Печать → «Экспорт .spin» сохраняет видео проекций вместе со
    всем, что нужно принтеру: число оборотов, допуск экспозиции, время печати, направление
    вращения и угол первого кадра, превью детали 320×320 и настройки нарезки. Файл .spin
    — обычный ZIP без сжатия, его открывает любой архиватор; sha256 видео ловит битую копию.
  • Отправка на принтер. Печать → «Отправить на принтер» загружает .spin на SpinPrinter
    по Wi-Fi. Настройки → Принтер находит принтеры в сети (mDNS _spinprinter._tcp, затем
    spinslicer.local) или принимает адрес вручную, а профиль принтера заполняет его
    настройки. Для поиска нужен zeroconf, если он установлен; адрес вручную работает всегда.
  • И обычный MP4. Обычный экспорт MP4 теперь несёт расчёт печати в теге comment
    (или в <имя>.spin.json рядом, если нет ffmpeg), его читает SpinPrinter.
  • Формат описан в docs/ecosystem.ru.md репозитория
    SpinPrinter.

Исправления физики

  • Предрезкость: градиент брал размытие вместо транспонированного; при прижатых краях
    верхние и нижние строки оптимизировались неверно. Шаг теперь считается по норме оператора.
  • FastCAL L-BFGS: если линейный поиск не нашёл шаг со спуском, шаг, увеличивающий
    целевую функцию, больше не делается.
  • Подсказка о поглощении смолы: α — натуральный коэффициент, α = 2,303·A на мм = 1/Dp.

Внутри

  • Самопроверка без экрана больше не падает на Linux CI: 3D-вид без экрана использует
    обычный off-screen plotter и пропускает события отрисовки Qt.
  • Новые тесты: .spin туда-обратно и битые копии, тег MP4, загрузка и профиль принтера
    на локальном сервере, абсолютная доза и время печати по Бугеру–Ламберту.

Full Changelog: v0.6.1...v0.7.1

SpinSlicer v0.6.1

Choose a tag to compare

@github-actions github-actions released this 05 Nov 21:37

SpinSlicer v0.6.1 — FastCAL only / Только FastCAL


English

One engine

  • FastCAL is the only projection engine. The app already used it for every job:
    a round vial, in air or in an immersion bath, with equally spaced frames over a full
    turn. Everything it could never reach is gone.
  • No native library. The C++/OpenMP SIRT backend, its build step and the bundled
    OpenMP runtime are removed. FastCAL is pure Python (numpy and SciPy FFTs plus batched
    BLAS products on all CPU cores), so building from source needs no compiler.
  • Removed: the SIRT optimizer, the Radon and VAMToolbox backends with the conda
    installer, and square cuvettes.

Under the hood

  • optics/optimization.py is now optics/system_matrix.py: the exact sparse ray
    matrix that the tests and tools/engine_judge.py check FastCAL against.
  • SliceParams fills in the vial size when it is not given: the outer diameter is the
    vat diameter, the inner one is two 2 mm glass walls less.
  • About 2,400 lines of unused code, translations and outdated documents removed.

Русский

Один движок

  • FastCAL — единственный движок проекций. Приложение и так считало им каждое
    задание: круглая колба в воздухе или в иммерсионной ванне, кадры равномерно по
    полному обороту. Всё, до чего оно не могло дойти, удалено.
  • Без нативной библиотеки. Убраны C++/OpenMP-бэкенд SIRT, его сборка и
    OpenMP-рантайм в установщике. FastCAL написан на чистом Python (БПФ numpy и SciPy и
    пакетные произведения BLAS на всех ядрах), поэтому для сборки из исходников
    компилятор не нужен.
  • Удалены: оптимизатор SIRT, движки Radon и VAMToolbox вместе с установкой через
    conda и квадратные кюветы.

Внутри

  • optics/optimization.py переименован в optics/system_matrix.py: точная
    разреженная матрица лучей, с которой тесты и tools/engine_judge.py сверяют FastCAL.
  • SliceParams сам подставляет размеры колбы, если их не задать: внешний диаметр
    равен диаметру ванны, внутренний — на две стенки по 2 мм меньше.
  • Удалено около 2400 строк неиспользуемого кода, переводов и устаревших документов.

Full Changelog: v0.7.0...v0.6.1

SpinSlicer v0.6.0

Choose a tag to compare

@github-actions github-actions released this 02 Nov 21:02

SpinSlicer v0.6.0 — Interface rework / Новый интерфейс


English

Interface

  • Two fonts: Syne, the letter of the logo, for titles and Onest for everything else.
    Text is drawn with FreeType on Windows, without colour fringes. Syne has no Cyrillic,
    so Russian titles use Onest.
  • Dark theme: the side panel stands apart from the scene, secondary text is readable
    and the selected option is clearly marked.
  • Settings regrouped: interface, vial, projector, resin, and a collapsed "fine
    tuning". The language is on top. Throw ratio shows only for a cone, bath liquid only
    with a bath.
  • Field height follows the projector: it is computed from the projector picture and
    the print zone (a manual change lasts until the geometry changes).
  • Lines: a new setting with straight lines (default), hand-drawn or alive. Marker
    hints are off by default.
  • The header shows the app name; the step hints under the title and the captions under
    the games are gone.

Virtual print

  • A button, available after the light is computed.
  • The view shows the print alone: the vial, beam and model are hidden. Extra resin is red,
    undersize is blue, and parts that did not cure at all are a separate blue shape, with a
    legend. The old dot-pattern look is gone.
  • Extra files next to virtual_print.stl: virtual_print.ply (coloured surface) and
    virtual_print_missing.stl.

Scene

  • A round Fresnel lens turns the projector's cone into a parallel sheet (parallel rays).
  • While the light is computed, the whole sheet of one layer moves through the vial.

Under the hood

  • tests/conftest.py keeps test runs away from the user's real settings;
    .gitattributes stores text with LF.

Русский

Интерфейс

  • Два шрифта: Syne (буква с логотипа) для заголовков и Onest для остального. На
    Windows текст рисуется через FreeType, без цветной каймы. В Syne нет кириллицы,
    поэтому русские заголовки набраны Onest.
  • Тёмная тема: боковая панель отделена от сцены, второстепенный текст читается,
    выбранный вариант хорошо виден.
  • Настройки перегруппированы: интерфейс, колба, проектор, смола и свёрнутая «Тонкая
    настройка». Язык наверху. Throw ratio виден только для конуса, жидкость ванны —
    только с ванной.
  • Высота поля следует за проектором: считается по картинке проектора и зоне печати
    (ручная правка держится, пока не изменится геометрия).
  • Линии: новая настройка — прямые (по умолчанию), от руки или живые. Подсказки
    маркером по умолчанию выключены.
  • В шапке имя программы; подсказки шага под заголовком и подписи под играми убраны.

Виртуальная печать

  • Кнопка, доступная после расчёта света.
  • В режиме остаётся одна деталь: колба, луч и модель скрыты. Лишняя смола красная,
    недопечатка синяя, а детали, которые совсем не затвердели, — отдельная синяя фигура,
    с легендой. Прежний точечный вид убран.
  • Новые файлы рядом с virtual_print.stl: virtual_print.ply (раскрашенная поверхность)
    и virtual_print_missing.stl.

Сцена

  • Круглая линза Френеля превращает конус проектора в параллельный лист (параллельные
    лучи).
  • Пока считается свет, по колбе идёт весь лист света одного слоя.

Внутри

  • tests/conftest.py не даёт тестам менять настройки пользователя; .gitattributes
    хранит текст с LF.

Full Changelog: v0.5.4...v0.6.0

SpinSlicer v0.5.4

Choose a tag to compare

@github-actions github-actions released this 02 Nov 19:12

SpinSlicer v0.5.4 — New logo / Новый логотип


English

New look

  • New logo: the letter S in a spinning resin vial. It replaces the old icon in the
    app window, the taskbar, the Windows installer, the Linux packages and on the
    project page.

Fixes

  • Cone mode in a bath: the projector distance now accounts for the flat bath
    window, which makes the air part of the path look longer from inside the liquid.
    Ray divergence in the bath is computed correctly.

Under the hood

  • The Python modules moved into the spinslicer package; SpinSlicer.py stays as the
    launcher.
  • Includes everything from v0.5.3.

Русский

Новый вид

  • Новый логотип: буква S во вращающемся флаконе со смолой. Он заменил старую
    иконку в окне программы, на панели задач, в установщике Windows, в пакетах для
    Linux и на странице проекта.

Исправления

  • Режим конуса в ванне: расстояние до проектора теперь учитывает плоское окно
    ванны, из-за которого воздушная часть пути изнутри жидкости кажется длиннее.
    Расходимость лучей в ванне считается правильно.

Внутри

  • Модули Python переехали в пакет spinslicer; SpinSlicer.py остался запускающим
    файлом.
  • Включает всё из v0.5.3.

Full Changelog: v0.5.3...v0.5.4

SpinSlicer v0.5.3

Choose a tag to compare

@github-actions github-actions released this 31 Oct 18:21

SpinSlicer v0.5.3 — Fix for the engine crash on Windows / Исправление падения движка на Windows


English

Fixes

  • Generating frames no longer fails on Windows with 'utf-8' codec can't decode byte 0xcf. The engine process now sends ASCII-only messages to the window, so the
    console code page of a localized Windows (cp1251 and others) cannot break them, and
    stray output from native libraries is ignored instead of stopping the run.
  • Includes everything from v0.5.2 (Settings page, step order, virtual print and
    taskbar icon fixes, 1024×768 projector resolution).

Русский

Исправления

  • Расчёт кадров больше не падает на Windows с ошибкой 'utf-8' codec can't decode byte 0xcf. Процесс движка теперь передаёт окну только ASCII-сообщения, поэтому
    кодовая страница консоли русской Windows (cp1251 и другие) их не ломает, а
    посторонний вывод нативных библиотек игнорируется и не останавливает расчёт.
  • Включает всё из v0.5.2 (страница настроек, порядок шагов, виртуальная печать и
    иконка на панели задач, разрешение проектора 1024×768).

Full Changelog: v0.5.2...v0.5.3

SpinSlicer v0.5.2

Choose a tag to compare

@github-actions github-actions released this 31 Oct 17:55

SpinSlicer v0.5.2 — Settings page, clearer step order, Windows fixes / Страница настроек, понятный порядок шагов, исправления для Windows


English

Changes

  • Settings page. The printer page is now called Settings and is grouped into Vial,
    Projector, Optics and Resin. The projector group has the resolution, the projector
    refresh rate (Hz), picture offsets, gamma, contrast and irradiance; refractive indices
    are in their own fold-out.
  • Refresh rate check. The rotation speed row warns when frames would change faster
    than the projector refresh rate you set.
  • Logical order of the side panel. Model: orientation, scale, position, fit, exact
    position, voids. Light: quality, frames, results, then virtual print. Print: output,
    projector setup tools, speed, brightness, dose and plan.
  • Projector resolutions: 1024×768 added, 4K removed. The saved resolution choice is
    reset once.
  • Print screen: the extra frame-rate readout above the projector preview is gone.

Fixes (Windows)

  • Virtual print no longer keeps asking to recalculate the light right after a run:
    the preview is dropped only when the part has really moved.
  • Taskbar icon is back: the app has its own Windows identity and uses the .ico
    for the window icon.

Русский

Изменения

  • Страница настроек. Страница принтера теперь называется «Настройки» и разбита на
    «Колба», «Проектор», «Оптика» и «Смола». В «Проекторе» — разрешение, частота
    проектора (Гц), сдвиги картинки, гамма, контраст и облучённость; показатели
    преломления — в отдельном раскрывающемся блоке.
  • Проверка частоты. Строка скорости вращения предупреждает, если кадры будут
    меняться чаще, чем частота проектора, которую вы задали.
  • Логичный порядок боковой панели. Модель: ориентация, масштаб, положение,
    «влезает», точная позиция, отверстия. Свет: качество, кадры, результаты, затем
    виртуальная печать. Печать: вывод, настройка проектора, скорость, яркость, доза и план.
  • Разрешения проектора: добавлено 1024×768, убрано 4K. Сохранённый выбор
    разрешения один раз сбросится.
  • Экран печати: убрана лишняя надпись с частотой кадров над превью проектора.

Исправления (Windows)

  • Виртуальная печать больше не просит пересчитать свет сразу после расчёта:
    предпросмотр сбрасывается, только если деталь действительно сдвинули.
  • Иконка на панели задач вернулась: у приложения свой идентификатор Windows, а
    для окна используется .ico.

Full Changelog: v0.5.1...v0.5.2

SpinSlicer v0.5.1

Choose a tag to compare

@redbluecarrot redbluecarrot released this 31 Oct 16:11

SpinSlicer v0.5.1 — New interface, faster engine, print-ready output / Новый интерфейс, быстрый движок, вывод, готовый к печати


English

Overview

v0.5.1 is the first public release of the 0.5 line (a v0.5.0 build was withdrawn minutes after
publishing because of the Photon game's drawing, fixed here). It rebuilds the interface around three steps (Model → Light → Print), makes
the FastCAL engine 1.3–2× faster on the same hardware, and makes the projector
output safe to print from: frames placed 1:1, one row per layer, timed by the
clock and stopped automatically when the planned dose is delivered.

Interface

  • Three steps and a printer page. Every setting shows what it physically
    changes (zone diameter, voxel, refraction in air, frame rate, cone smear…).
  • Hand-drawn 3D scene: the part plus a live sketch of the vial, bath, beam and
    projector that follows the settings; day and night themes.
  • Print screen: the projector's whole screen at true scale, the dose card with
    the exposure slider, the print plan, projector setup tools and mini-games.
  • Projector brightness and exposure are real settings: brightness dims the
    frames and lengthens the exposure for the same dose; the exposure scales the dose.
  • Mini-games while frames are computed (Cure, Layers, Photon — Photon flies
    through the light of your actual print frames).
  • Complete English interface, including the log and engine messages.

Engine

  • Runs in its own process at low priority: the window never freezes.
  • Uses every CPU core (per-frequency products, independent layer batches,
    voxelization, virtual print) and adapts its batch width to free memory.
  • The angular smoothness penalty is evaluated in frequency space and the solver
    makes fewer passes over memory; results are identical to float precision.
  • Benchy, 2-core 2.1 GHz VM, same settings as v0.4: grid 256 28 → 21 s, grid 384
    75 → 48 s, grid 384 / 720 frames 141 → 68 s. With the quality changes below, grid 256
    takes 34 s and grid 384 69 s. See the resources report.

Engine quality (measured by a separate benchmark: engine judge)

  • New tools/engine_judge.py: every engine plans the same job and is judged on a 2x finer
    grid with an exact operator none of them planned with, from 8-bit frames as a projector
    shows them, including 8 virtual machines with exposure, blur, axis and timing errors.
  • Fixed: face layers did not cure. A layer that matched the 50/50 mix of a full and an
    empty neighbour got their mixed frames — half the dose. Now every neighbour must itself
    match the layer.
  • Finer detector bins: Normal and Fine plan frames with 1.5 bins per voxel (the
    projector has far more pixels than voxels); measured with 2 bins, IoU, surface error and
    mean robustness improved on every test job. Fast keeps 1 bin for speed.
  • Thin-feature awareness: features thinner than 2.5 voxels get more weight and thin
    voids a dark target. Resolution target: surface error 0.172 → 0.081 mm, worst-case
    robustness 0.888 → 0.911, 0.8 mm pins and holes print; Benchy and the nut unchanged.
  • At grid 128 FastCAL has the best IoU and surface error on all test jobs against OSMO,
    PM, BCLP and classic CAL; BCLP/PM keep a lead of ≤ 0.005 in worst-case robustness on
    some jobs, and 0.6 mm holes still close at that grid.

Print quality

  • One frame row per layer, exactly. For part heights close to a half row the
    frame used to be one row taller or shorter than the layer count, and every row
    was resampled (half a pixel of vertical blur, one-row stretch).
  • No timing drift. The projector window chooses the frame from elapsed time;
    counting 42 ms timer ticks at 24 Hz used to fall 0.8 % behind the vial.
  • Frames preloaded in memory before projecting (no late frames from disk).
  • Automatic stop when plan time × exposure ÷ brightness has elapsed, with a
    countdown in the panel.

Efficiency

  • An idle window uses no CPU: the 3D view only redraws when something changes,
    the sketch animation settles 4 s after the last change, the game repaints only
    while something moves, the print preview plays one turn and stops.

Fixes

  • Photon game is crisp. The glass walls are solid with a light rim at every opening, the two
    limits of the field are drawn, and what you hit is exactly what you see.
  • The virtual-print switch can be turned off again.
  • Changing output type, rotation speed, brightness or screen offset no longer
    discards a finished computation.

Known limits

  • The packaged Windows application is built by the release workflow, but its automatic smoke
    check is switched off for now (it hangs on the hosted runner); the same check passes on Linux.
  • At grid 128 the 0.6 mm holes still close; 0.8 mm pins and holes print.

Русский

Обзор

v0.5.1 — первый публичный выпуск линейки 0.5 (сборка v0.5.0 была отозвана через несколько минут
из-за отрисовки игры «Фотон», здесь это исправлено). В нём интерфейс перестроен вокруг трёх шагов (Модель → Свет → Печать), движок
FastCAL стал в 1,3–2 раза быстрее на том же железе, а вывод на проектор готов к
печати: кадры 1:1, одна строка на слой, время по часам и автоостановка, когда
набрана доза плана.

Интерфейс

  • Три шага и страница принтера. Каждая настройка показывает, что она физически
    меняет (зона печати, воксель, преломление в воздухе, частота кадров, конус лучей…).
  • Нарисованная 3D-сцена: деталь и живой эскиз колбы, ванны, луча и проектора,
    который следует за настройками; дневная и ночная темы.
  • Экран печати: весь экран проектора в настоящем масштабе, карта дозы с ползунком
    экспозиции, план печати, настройка проектора и мини-игры.
  • Яркость проектора и экспозиция — настоящие настройки: яркость делает кадры
    тусклее и удлиняет засветку при той же дозе, экспозиция меняет дозу.
  • Мини-игры на время расчёта («Засветка», «Слои», «Фотон» — «Фотон» летит сквозь
    свет ваших настоящих кадров печати).
  • Полный английский интерфейс, включая журнал и сообщения движка.

Движок

  • Работает в отдельном процессе с низким приоритетом: окно не замирает.
  • Использует все ядра (произведения по частотам, независимые пачки слоёв,
    вокселизация, виртуальная печать) и подбирает ширину пачки по свободной памяти.
  • Штраф гладкости по углу считается в частотной области, решатель делает меньше
    проходов по памяти; результат совпадает до точности float.
  • Benchy, ВМ 2 ядра 2,1 ГГц, те же настройки, что в v0.4: сетка 256 28 → 21 с,
    сетка 384 75 → 48 с, сетка 384 / 720 кадров 141 → 68 с. С улучшениями качества ниже
    сетка 256 считается 34 с, сетка 384 — 69 с. См. отчёт о ресурсах.

Качество движка (отдельный замер: судья движков)

  • Новый tools/engine_judge.py: все движки планируют одну задачу, а судит их точный
    оператор на вдвое более мелкой сетке, которым никто из них не планировал, по 8-битным
    кадрам, как их показывает проектор, плюс 8 виртуальных станков с ошибками экспозиции,
    размытия, оси и времени кадра.
  • Исправлено: слои у граней не твердели. Слой, совпадавший со смесью 50/50 полного
    и пустого соседа, получал их смешанные кадры — половину дозы. Теперь каждый сосед
    сам должен совпадать со слоем.
  • Детектор мельче вокселя: «Норма» и «Точно» планируют кадры с 1,5 бина на воксель
    (у проектора пикселей гораздо больше, чем вокселей); при 2 бинах IoU, ошибка поверхности
    и средняя устойчивость были лучше на всех тестовых деталях. «Быстро» оставляет 1 бин.
  • Учёт тонких элементов: элементам тоньше 2,5 вокселя — больший вес, тонким пустотам —
    тёмная цель. Мишень: ошибка поверхности 0,172 → 0,081 мм, худший станок 0,888 → 0,911,
    печатаются штифты и отверстия 0,8 мм; Benchy и гайка без изменений.
  • На сетке 128 у FastCAL лучшие IoU и ошибка поверхности на всех тестовых деталях против
    OSMO, PM, BCLP и классического CAL; BCLP/PM сохраняют перевес ≤ 0,005 в худшем случае
    на части деталей, отверстия 0,6 мм на этой сетке ещё затягиваются.

Качество печати

  • Ровно одна строка кадра на слой. При высоте детали около половины строки кадр
    получался на строку выше или ниже числа слоёв, и все строки пересэмплировались
    (полпикселя размытия по вертикали, растяжение на строку).
  • Без ухода по времени. Окно проектора выбирает кадр по прошедшему времени; счёт
    тиков таймера по 42 мс при 24 Гц отставал от колбы на 0,8 %.
  • Кадры заранее в памяти перед выводом (никаких опоздавших кадров с диска).
  • Автоостановка, когда прошло время плана × экспозиция ÷ яркость, с обратным
    отсчётом в панели.

Эффективность

  • Окно в простое не грузит процессор: 3D перерисовывается только при изменениях,
    анимация эскиза замирает через 4 с после последнего действия, игра рисует только
    пока что-то движется, превью печати показывает один оборот и останавливается.

Исправления

  • Игра «Фотон» чёткая. Стенки сплошные, у каждого проёма светлая кромка, обе границы поля
    нарисованы, а попадание совпадает с тем, что видно на экране.
  • Переключатель «Виртуальная печать» снова снимается.
  • Смена способа вывода, скорости вращения, яркости или сдвига экрана больше не
    сбрасывает готовый расчёт.

Известные ограничения

  • Собранное приложение для Windows делается релизным процессом, но его автоматическая проверка
    пока отключена (на сервере GitHub она зависает); на Linux та же проверка проходит.
  • На сетке 128 отверстия 0,6 мм ещё ...
Read more

SpinSlicer v0.4.0

Choose a tag to compare

@github-actions github-actions released this 29 Oct 20:54

SpinSlicer v0.4.0 — Compute Modes, H.264 Export and Optional GPU / Режимы вычислений, экспорт H.264 и необязательный GPU


English

Read this first: projector gamma is now applied

The projector gamma of the machine profile is now applied to the exported MP4. In v0.3.2
the profile had a gamma field, but the export ignored it. The default is still 1.0
(linear)
, so a default profile gives the same frames as before.

  • Most projectors have a gamma close to 2.2. With 1.0 the frames are sent unchanged, a mid-gray
    value shows less than half of the light it should, and the delivered dose is no longer
    linear
    . Set the projector gamma in the machine profile (ideally from a measurement, see the
    test ramp below).
  • If your profile already contained a gamma other than 1.0, it takes effect now and changes
    the exported frames and the dose
    compared with v0.3.2.
  • The PNG frames in the run folder and the projector tab's preview always stay linear. Gamma
    only reaches the MP4. For a gamma other than 1 the frames are encoded in floating point
    before the single 8-bit rounding and kept in projector_frames/.

Other changes that alter what the printer receives, compared with v0.3.2:

  • The default frame rate is 30 fps (24 before; 30 divides the 60 Hz projector refresh
    evenly). With the same number of frames the rotation speed changes (360 frames: 5 rpm instead
    of 4). Check the speed in the file name.
  • The MP4 is H.264 in full range (black 0, white 255), not mp4v, and is named
    projection_<rpm>rpm.mp4.
  • output_res must be even.

Overview

SpinSlicer v0.4.0 adds three compute modes (Auto, Economy, Maximum) that change speed and
memory but not the frames for printing, GPU acceleration through Taichi as an optional
installer component, an H.264 export built for the printer, and a direct-projection view next
to the optimised frames.

What's New in v0.4.0

1. Export for OpenCAL

  • Full-range H.264. Black stays 0 and white 255. In limited range the background became
    16/255 (about 6 % light all the way round) and 36 gray levels were lost. A range option
    (full 0–255 or limited 16–235) is in the projector tab; limited range is the safer choice
    for players that ignore the range flag, but a player or HDMI output that treats everything as
    full range then shows black as 16/255.
  • Full-resolution source. The MP4 is built from the PNG files of the run, not from the
    preview, which is shrunk to 900 px. The rotation speed in the name comes from the frame count
    on disk and the manifest's frame rate, with at most two decimals. Whether OpenCAL's file-name
    parser accepts a decimal point has not been verified: prefer a frame count that gives a whole
    number of revolutions per minute.
  • Test ramp. A button saves gray bars 0–255 (dense at both ends) with the chosen range, to
    check the whole playback chain and the projector, for example with a light meter. It is linear
    unless "With the profile gamma" is ticked, so the projector gamma can be measured from
    scratch, and it follows the last run's frame count and rate (ramp_5rpm.mp4 for 360 frames at
    30 fps).

2. Compute modes

  • Auto, Economy, Maximum. Economy uses little memory and one thread (it does not create the
    direct projection, and says so in the log). Maximum uses every core and, with Taichi and a
    suitable graphics card, runs the optimiser on the GPU: the whole Z block stays on the device.
    Auto chooses by the machine and picks a GPU only when its memory is known (NVIDIA, through
    nvidia-smi); an explicit Maximum may use any Vulkan or Metal device.
  • Same frames. Economy and Maximum frames agree to one gray level; GPU and CPU frames were
    identical in the tests. A job on a 3DBenchy (grid 256, 360 frames, 505 layers, dose window on)
    took 143 s and 0.45 GB of memory in Economy, about 50 s on 12 cores and about 17 s on an
    RTX 4060 Ti in Maximum (measured when running from source).
  • The ray matrix is kept between jobs in Maximum mode and released in Economy mode.
  • If the GPU cannot be used, the log says why and the job continues on the CPU; the manifest
    records what really ran (compute.device_used, compute.gpu_error).

3. Optimiser and projections

  • Dose window (option, off by default). Extra threshold steps after the linear fit. It is a
    heuristic that changes the objective, roughly doubles the optimisation time and is not tied to
    a measured resin threshold; level and steepness are recorded in the manifest.
  • Direct projection. The projector tab can show the direct projection of the part (no SIRT,
    no vial compensation). It is not a "corrected vs. uncorrected" pair: the difference to the
    printed frames comes from the optimisation as well as from refraction.

4. GPU acceleration is an optional component

  • Taichi is no longer a required dependency. pip install .[gpu] (or requirements-gpu.txt)
    adds it to a source install, and the program build does not contain it.
  • The Windows installer offers it as the optional GPU acceleration component (about 150 MB,
    a gpu folder next to the program), explained on its own page as a suggestion. It is
    pre-selected only when an NVIDIA driver is found. Silent install:
    SpinSlicer-Setup-0.4.0.exe /SILENT /COMPONENTS="app,gpu" (or just app). Run the installer
    again and choose "Custom installation" to add or remove it. The same add-on is published as
    SpinSlicer-gpu-addon-windows-x64.zip (unpack it as gpu next to SpinSlicer.exe).
  • The add-on holds a compiled Taichi core, so it only works with the Python the program was
    built with (3.12). The release workflow runs the packaged program with the add-on and requires
    a real kernel to run.
  • Without the add-on everything runs on the CPU with the same results.

5. Camera control is back

The 3D view uses the earlier CAD-style navigation again (the terrain-style mode of v0.3.2
is gone): left drag orbits the model freely, right or middle drag pans, and the wheel zooms.

Upgrading

Regenerate your projections: the frame rate, the codec and, with a non-default profile, the
gamma changed. Check the rotation speed in the new file name, set the projector gamma, and
check the playback chain with the test ramp before a real print.

Downloads

  • Windows installer: SpinSlicer-Setup-0.4.0.exe (with the optional GPU component).
  • Windows portable: SpinSlicer-windows-x64.zip or standalone SpinSlicer.exe, and
    SpinSlicer-gpu-addon-windows-x64.zip for GPU acceleration.
  • Arch Linux / Manjaro: SpinSlicer-0.4.0-1-x86_64.pkg.tar.zst.
  • Ubuntu / Debian / Mint: SpinSlicer-0.4.0-amd64.deb.
  • Fedora / RHEL: SpinSlicer-0.4.0-1.x86_64.rpm.
  • Linux portable: SpinSlicer-linux-x64.tar.gz.

Русский

Главное: гамма проектора теперь работает

Гамма проектора из профиля станка наконец применяется к MP4, который вы отдаёте принтеру. В v0.3.2 поле гаммы в профиле было, но экспорт его просто не учитывал. По умолчанию там по-прежнему 1.0 (линейно), так что с профилем по умолчанию кадры остаются такими же, как раньше.

  • У большинства проекторов гамма около 2.2. Пока в профиле 1.0, кадры уходят как есть: средний серый светит заметно слабее, чем нужно, и доза перестаёт быть линейной. Укажите в профиле реальную гамму проектора, лучше измеренную (для этого есть тестовая рампа, о ней ниже).
  • Если у вас в профиле уже стояла гамма не 1.0, раньше она ничего не делала, а теперь изменит и кадры, и дозу по сравнению с v0.3.2.
  • PNG-кадры в папке прогона и предпросмотр на вкладке «Проектор» остаются линейными. Гамма применяется только к MP4. Если гамма не равна 1, кадры пересчитываются в дробных числах и округляются до 8 бит один раз; результат лежит в папке projector_frames/.

Ещё несколько отличий от v0.3.2, которые влияют на то, что получит принтер:

  • Частота кадров по умолчанию теперь 30 fps (раньше 24). 30 ровно укладывается в 60 Гц обновления проектора. При том же числе кадров изменится скорость вращения: для 360 кадров будет 5 об/мин вместо 4. Сверьтесь со скоростью в имени файла.
  • MP4 теперь H.264 с полным диапазоном яркости (чёрный — 0, белый — 255) вместо mp4v, а файл называется projection_<об/мин>rpm.mp4.
  • Разрешение кадра (output_res) должно быть чётным.

Коротко

В v0.4.0 три режима вычислений (Авто, Экономный, Максимальный): они меняют скорость и расход памяти, но не сами кадры для печати. Расчёт на видеокарте через Taichi теперь необязательный компонент установщика. Экспорт стал H.264 и рассчитан на принтер, а на вкладке «Проектор» можно посмотреть прямую проекцию рядом с оптимизированными кадрами.

Что нового

1. Экспорт для OpenCAL

  • H.264 с полным диапазоном. Чёрный остаётся нулевым, белый — 255. В ограниченном диапазоне фон получался 16/255, то есть примерно 6 % лишнего света на весь оборот, и пропадали 36 уровней серого. На вкладке «Проектор» диапазон можно выбрать: полный 0–255 или ограниченный 16–235. Ограниченный безопаснее, если плеер игнорирует флаг диапазона, но плеер или HDMI-выход, которые считают всё полным диапазоном, покажут чёрный как 16/255.
  • Полное разрешение. MP4 собирается из PNG-файлов прогона, а не из предпросмотра, который уменьшен до 900 px. Скорость вращения в имени файла считается по числу кадров на диске и частоте из манифеста, с точностью до двух знаков после запятой. Понимает ли OpenCAL десятичную точку в имени файла, мы не проверяли, поэтому лучше выбирать такое число кадров, чтобы скорость вышла целой.
  • Тестовая рампа. Кнопка сохраняет видео из серых полос от 0 до 255 (к краям полосы чаще) с выбранным диапазоном. По нему можно проверить всю цепочку от плеера до проектора, например фотометром. Пока не отмечено «С гаммой профиля», рампа линейная, так что по ней можно измерить гамму проектора с нуля. Число кадров и частота берутся от последнего прогона (для 360 кадров при 30 fps файл называется `r...
Read more

SpinSlicer v0.3.2

Choose a tag to compare

@github-actions github-actions released this 19 Oct 20:19

SpinSlicer v0.3.2 — Square Cuvette Coverage / Покрытие углов квадратной кюветы


English

Overview

SpinSlicer v0.3.2 fixes the projection field in square-cuvette mode. Rotated
corners could fall outside the incident ray field in v0.3.1 and disappear from
some views. The correction keeps sparse matrices, bounded Z batches and native
CPU acceleration.

What's New in v0.3.2

1. Corrected Square Projection Field

  • Full geometric field: the square mode uses a constant field equal to the
    outer diagonal, sqrt(2) × outer side, at every angle. A 50 mm cuvette therefore
    uses a 70.71 mm field instead of 50 mm. Cylindrical modes keep their original field.
  • Consistent physical scale: optimization, PNG aspect ratio and preflight
    share the same field. The target voxel grid still spans the original square side.
  • Recorded export geometry: manifests include detector span and spacing,
    output pixel pitch, voxel-grid span, Z pitch and the actual raster layer count.
    Older frame sets remain readable.

2. Regression Checks and Preserved Acceleration

  • Corner coverage: tests cover all four finite corner targets at 5-degree
    intervals, with equal refractive indices to isolate geometric clipping.
  • Independent geometry reference: detector chord lengths are checked against
    slab intersections across multiple square rotations.
  • Actual PNG export: an offset corner model is checked at 45 degrees for
    visibility, position, physical aspect ratio and manifest consistency.
  • Existing optimizations retained: float32 CSR storage, detector-bin count,
    voxel-grid resolution, output width and C++/OpenMP acceleration are preserved.
    The complete local test suite passes 108 tests.

3. Windows & Linux Packages

  • Windows installer: SpinSlicer-Setup-0.3.2.exe.
  • Windows portable: SpinSlicer-windows-x64.zip or standalone SpinSlicer.exe.
  • Arch Linux / Manjaro: SpinSlicer-0.3.2-1-x86_64.pkg.tar.zst.
  • Ubuntu / Debian / Mint: SpinSlicer-0.3.2-amd64.deb.
  • Fedora / RHEL: SpinSlicer-0.3.2-1.x86_64.rpm.
  • Linux portable: SpinSlicer-linux-x64.tar.gz.

Regenerate square-mode projections to apply the correction. At the same pixel
count, the wider field increases the physical pixel pitch; it does not preserve
the previous millimetres-per-pixel value. Calibrate the projector to the recorded
field. Software cannot extend a narrower hardware field, and refraction can
independently limit corner coverage. See the validation report.


Русский

Обзор

SpinSlicer v0.3.2 исправляет поле проекций в режиме квадратной кюветы. В v0.3.1
повёрнутые углы могли выходить за пределы падающих лучей и пропадать на части
ракурсов. Сохранены разреженные матрицы, обработка Z небольшими блоками и
нативное ускорение на CPU.

Главные изменения в v0.3.2

1. Исправленное поле квадратной кюветы

  • Полное геометрическое поле: для всех углов используется постоянная ширина
    по внешней диагонали, sqrt(2) × внешняя сторона. Для кюветы 50 мм это 70,71 мм
    вместо 50 мм. В цилиндрических режимах ширина поля прежняя.
  • Согласованный физический масштаб: оптимизатор, пропорции PNG и проверка
    перед расчётом используют одно поле. Воксельная сетка сохраняет исходную сторону квадрата.
  • Геометрия в метаданных: сохраняются ширина поля, шаг детектора и пикселя
    кадра, размер воксельной сетки, шаг Z и фактическое число слоёв растеризации.
    Старые наборы кадров по-прежнему читаются.

2. Проверки углов и сохранённое ускорение

  • Покрытие углов: тестируются конечные участки во всех четырёх углах с шагом
    ракурса 5°. Равные показатели преломления позволяют отдельно проверить отсечение поля.
  • Независимая проверка геометрии: длины хорд сверяются с аналитическим
    пересечением луча с границами квадрата при разных поворотах.
  • Проверка сохранённых PNG: для смещённой к углу модели проверяются видимость
    при 45°, положение в кадре, физические пропорции и согласованность метаданных.
  • Оптимизации сохранены: float32, CSR, число лучей детектора, разрешение
    воксельной сетки, ширина кадров и C++/OpenMP. Полный локальный набор — 108
    пройденных тестов
    .

3. Пакеты для Windows и Linux

  • Windows, установщик: SpinSlicer-Setup-0.3.2.exe.
  • Windows, портативная версия: SpinSlicer-windows-x64.zip или SpinSlicer.exe.
  • Arch Linux / Manjaro: SpinSlicer-0.3.2-1-x86_64.pkg.tar.zst.
  • Ubuntu / Debian / Mint: SpinSlicer-0.3.2-amd64.deb.
  • Fedora / RHEL: SpinSlicer-0.3.2-1.x86_64.rpm.
  • Linux, портативная версия: SpinSlicer-linux-x64.tar.gz.

Проекции квадратного режима нужно сгенерировать заново. При прежнем числе
пикселей расширенное поле увеличивает физический шаг пикселя — прежнее значение
мм/пиксель не сохраняется. Проектор нужно откалибровать на указанную ширину поля.
Программа не расширяет физическое поле оборудования; преломление также может
отдельно ограничивать покрытие углов. Подробности — в отчёте проверки.


Installation / Установка

Arch Linux / Manjaro

sudo pacman -U SpinSlicer-0.3.2-1-x86_64.pkg.tar.zst

Ubuntu / Debian / Mint

sudo apt install ./SpinSlicer-0.3.2-amd64.deb

Fedora / RHEL

sudo dnf install ./SpinSlicer-0.3.2-1.x86_64.rpm

Windows

Запустите SpinSlicer-Setup-0.3.2.exe или распакуйте SpinSlicer-windows-x64.zip.

Full Changelog: v0.3.1...v0.3.2

Full Changelog: v0.3.1...v0.3.2