Fotufilm:开源胶片模拟引擎
开源的胶片模拟引擎,可处理照片与视频,附带 macOS/Linux 桌面应用、命令行工具、Resolve 与 Final Cut 插件及浏览器编辑器。
- 浏览
- 4
- 访问
- 0
- 下载
- 0
- 版本
- v1.14.1
- 平台
- macOS、Linux
详细介绍
项目简介
Fotufilm 是一个开源的胶片模拟引擎,用于照片与视频。它不只套用预设滤镜,还按照真实胶片的工作流程分阶段建模:光线如何让胶片曝光、图像如何显影成染料或银盐,以及这卷胶片如何变成照片、扫描件或被观看的反转片。颜色、对比度、颗粒与光晕都跟随所选胶片的属性与渲染工艺。
仓库包含共享引擎、命令行工具、Mac 应用、DaVinci Resolve 与 Final Cut Pro 插件,以及浏览器端的照片与视频编辑器。
主要功能
- 分阶段胶片模型:场景光 → 胶片曝光 → 显影与颗粒 → 打印/扫描/直接观看 → 输出图像。
- 光谱曝光:从 RGB 估算光谱,在 380–780 nm 范围内以 5 nm 步进(81 个波长)评估胶片感光度,各层按自身感光度记录光线。
- 乳剂扩散与光晕(halation):模拟光线穿过片基返回并曝光邻近区域,在高光源周围形成光晕。
- 特性曲线显影:把每层曝光映射为光学密度,塑造暗部响应、中间调对比与高光。
- 颗粒生成:按胶片的颗粒度与密度响应改变显影密度,颗粒尺寸以真实胶片物理尺寸表达,再按所选画幅与取景范围缩放。
- 输出介质建模:打印介质带有自己的光谱响应与显影曲线;扫描模式把负片转成正像;反转片可直接观看或印到 Ilfochrome/Cibachrome 相纸。
- Digital Reference 转换:提供 Reference Exposure、Graded Print、Auto Levels(默认)三种负片转换方式;Auto Levels 像实验室扫描仪那样逐帧重新定时。
- 输出控制:Paper Grade(0–5,默认 2)设定分级曲线对比度;Screen Exposure(±3 档)在中间灰处整体提亮或压暗。
- 彩色负片色彩校正:Cyan / Red、Magenta / Green、Yellow / Blue 在 Auto Levels 之后、输出曲线之前调整,范围 -1 到 +1。
- 数据驱动胶片配置:同一引擎读取彩色负片、黑白与反转片的感光特性、特性曲线、染料、颗粒与空间行为数据。
命令行对应参数包括 --paper screen --digital-reference reference-exposure|graded-print|auto-levels、--screen-grade、--screen-exposure、--scene-kelvin、--screen-cyan、--screen-magenta、--screen-yellow。
安装与使用
macOS 桌面应用:使用 Fotufilm-macOS.pkg 安装,或把 Fotufilm-macOS.zip 解压到「应用程序」目录;两者均已签名并公证。仅需 Resolve 插件时可使用 Fotufilm-OFX-macOS-1.14.1.zip。
Linux(alpha):Fotufilm-Linux-x86_64.AppImage 可在 x86-64 桌面运行,通过 CUDA 使用 NVIDIA GPU,其他 GPU 走 Vulkan;影片通过系统 FFmpeg 打开与导出,但暂时无声。安装 Resolve 插件需执行:
./Fotufilm-Linux-x86_64.AppImage --install-ofx-plugin
然后重启 Resolve。
从源码构建引擎(需要 Xcode 26 或更新版本,以及 Halide):
brew install halide
swift build
python3 tools/test-engine.py
命令行处理图像:
swift run fotufilm --list-stocks
swift run fotufilm input.jpg output.jpg --stock gold200
构建桌面应用与插件(目标为 Apple silicon、macOS 14 或更新版本,以及 x86-64 Linux):
flutter/build.sh
构建产物位于 build/flutter-host/Fotufilm.app,同时包含 Resolve 插件;若需包含 Final Cut 插件,需先安装 Apple 的 FxPlug SDK。
注意事项
- 模型结合了公开测量数据与物理、统计近似。RGB 无法唯一还原原始场景光谱,已裁剪的高光也无法补回缺失的曝光;数字化曲线受原始图表限制,超出已公布范围的部分为外推;颗粒模型描述的是整体纹理而非单颗晶体。结果会因输入、配置数据与观看条件而异。
- Auto Levels 逐帧测光,适合单张照片;若要在视频或批量处理中保持一致曝光,应改用固定模式。引擎宿主可为视频提供时间平滑的
sceneHighlightStops测量值。 - 彩色负片的 CMY 校正采用相对校正单位,并非标定过的扫描仪步进;三项取相同正值会整体压暗,可用 Screen Exposure 补偿,校正也可能让近黑区域染色或把通道推向裁切。反转片与黑白不受这些设置影响。
- Linux 支持目前为 alpha。
本作品整理自 GitHub 开源项目 DhaliwalX/fotufilm-engine,原作者 @DhaliwalX,许可证 Apache-2.0。中文介绍由 AI 根据项目 README 整理,以原仓库为准。
更新记录
- v1.14.1当前版本
DaVinci Resolve 与 Final Cut Pro 插件在 Output 下新增 Shadow Detail 与 Highlight Detail;同步发布已签名公证的 macOS 安装包和 Linux(alpha)AppImage。
评论