ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Lorien 版本演进深度解析:从 v0.1.0 到 v0.7.0 的无限画布应用迭代全记录

Lorien 版本演进深度解析:从 v0.1.0 到 v0.7.0 的无限画布应用迭代全记录 桌面应用图形学【免费下载链接】LorienInfinite canvas drawing/whiteboarding app for Windows, Linux and macOS. Made with Godot.项目地址https://gitcode.com/gh_mirrors/lo/Lorien点击查看免费下载本文以 Lorien 官方 docs/changelog.md 为核心骨架结合仓库内 GDScript 源码、Godot 工程配置与 docs/manuals/manual_v0.7.0.md 使用手册完整梳理这款基于 Godot 引擎的无限画布绘图/白板应用从首版到 v0.7.0 的功能演进、关键架构决策与破坏性变更。读完本文你将掌握 Lorien 各版本的核心能力边界、画笔与橡皮擦的底层实现原理、设置项与快捷键系统的设计脉络以及 Godot 3 到 Godot 4 迁移过程中的工程取舍。一、Changelog 概览七个版本的迭代主线Lorien 的完整开发历程横跨 2021 年 5 月至 2024 年底v0.7.0其变更记录遵循 Keep a Changelog 格式按Added / Fixed / Changed / Breaking Changes分类。以下时间线可纵览全局版本发布日期引擎版本里程碑主题[0.1.0]2021-05-23—首版无限画布、无限撤销、极小存档[0.2.0]2021-06-03GLES2选择工具、移动/删除笔画、颜色拾取器、PNG 导出[0.3.0]2021-07-23GLES3无限网格、复制粘贴、命令行打开、性能优化[0.4.0]2021-10-10Godot 3.3.4专注模式、色板系统、矩形工具、F12 彩蛋[0.5.0]2022-06-12Godot 3.4.4SuperEraser 破坏性变更、SVG 导出、圆形工具、全屏[0.6.0]2023-11-06Godot 3.5.3可重绑定快捷键、画笔倒置即橡皮、点状网格、简体/繁体中文[0.7.0]—Godot 4.3笔刷稳定器、速度感知线宽、原生文件对话框、UI 大改版从演进脉络看Lorien 的开发路径非常清晰先夯实基础画布能力v0.1–v0.2再补齐工具与文件管理v0.3–v0.4随后引入破坏性更强的矢量橡皮擦与导出能力v0.5最后转向可用性、快捷键与性能v0.6–v0.7。其中 v0.5.0 与 v0.7.0 分别带来了存档兼容性与快捷键格式两类破坏性变更是升级时必须重点关注的版本。二、v0.1.0无限画布的基因起点首版奠定了 Lorien 的全部核心基因后续所有版本都是在这套架构上的增量演进无限画布Infinite canvas对应源码中的 lorien/InfiniteCanvas/InfiniteCanvas.gd 与 lorien/InfiniteCanvas/PanZoomCamera.gd。相机系统支持无限平移与缩放是后续几乎无限缩放能力的源头。无限撤销/重做Infinite undo/redo依赖 Godot 内置的UndoRedo机制在 lorien/ProjectManager/Project.gd 中维护撤销重做粒度细化到单个笔刷笔画见后文橡皮擦的源码佐证。极小存档文件Extremely small savefiles这是 Lorien 区别于位图绘图软件Krita/GIMP/Photoshop的本质——它不以像素存储画面而是将笔画保存为点集运行时再渲染原理类似 SVG。存档格式规范详见 docs/file_format.md。多文档同时工作对应 lorien/ProjectManager/ProjectManager.gd从 v0.3 起与文件标签页机制配合。三件初始工具自由画笔、橡皮擦、直线工具分布在 lorien/InfiniteCanvas/Tools/ 目录下。颜色拾取器与画布背景色v0.1 允许通过易用的颜色拾取器为笔画和画布背景设置不同颜色该能力在 v0.4 被色板系统取代、v0.6 将画布背景色迁入设置面板。数位板支持与压感设计目标明确面向 Wacom 等数位板支持压力敏感度压感管线细节见第五节。三平台支持Windows、Linux 与 macOS。三、工具系统演进从三件套到完整矢量工具集v0.7.0 的手册 docs/manuals/manual_v0.7.0.md 列出了完整工具集自由画笔、橡皮擦、直线、矩形、圆/椭圆、选择工具。它们在 changelog 中的登场顺序如下3.1 直线工具v0.1与 15° 吸附v0.2v0.1 首发即包含直线工具v0.2.0 新增按住 Shift 以 15° 步进吸附v0.3.0 又改进为直线端点细分首尾间插入更多点以降低选中难度对应源码 lorien/InfiniteCanvas/Tools/LineTool.gd。工具类均继承自 lorien/InfiniteCanvas/Tools/CanvasTool.gd 基类统一实现tool_event(event)事件入口。3.2 矩形工具v0.4与正方形约束v0.7v0.4.0 引入矩形工具lorien/InfiniteCanvas/Tools/RectangleTool.gdv0.7.0 增强为按住 Shift 绘制完美正方形与直线/圆工具的 Shift 约束逻辑形成一致的交互范式。3.3 圆形/椭圆工具v0.5v0.5.0 新增 Circle/Ellipse 工具lorien/InfiniteCanvas/Tools/CircleTool.gd默认绘制椭圆按住 Shift 约束为完美圆形。3.4 选择工具与批量编辑v0.2 起持续增强v0.2.0选择工具上线可移动选中笔画、Delete 键删除、新增选中笔画时修改颜色的体验。v0.3.0支持CTRLC/CTRLV复制粘贴、CTRLD一步复制选择工具按住 Shift 可逐个取消选择独立笔画选中判定规则改为只要至少一个笔画点落入选择矩形即选中。v0.5.0选中状态下更换画笔颜色会实时改变已选中笔画颜色优化了大文档下的选择工具性能。实现细节可参考 lorien/InfiniteCanvas/Tools/SelectionTool.gd 与 lorien/InfiniteCanvas/Tools/SelectionRectangle.gd。3.5 颜色拾取器工具的进退v0.2 → v0.4v0.2.0 实现了画布颜色拾取工具吸取画布上任一颜色v0.4.0 引入色板系统后将其移除同时移除默认笔画颜色设置——颜色管理从此统一收敛到色板。四、橡皮擦的两次革命从伪橡皮到 SuperEraser橡皮擦是 Lorien 历史上最典型的架构决策案例v0.5.0 的 Breaking Changes 章节给出了详细说明旧实现v0.1–v0.4传统橡皮擦只是用背景色在笔画上画新笔画制造出位图软件GIMP/Photoshop橡皮擦的视觉错觉。v0.5.0 破坏性变更全新SuperEraser以几何相交判定替代绘制覆盖——橡皮擦笔刷一旦与笔画相交整条笔画即被删除。旧实现被完全移除。存档格式未变但旧版本保存的橡皮擦笔画在加载时会被跳过重新保存后永久丢失。changelog 明确警告依赖旧橡皮擦笔画的用户不要升级或升级前务必备份.lorien文件。从源码 lorien/InfiniteCanvas/Tools/EraserTool.gd 可还原其实现原理按下左键时先为所有笔画构建包围盒缓存_update_bounding_boxes()边距BOUNDING_BOX_MARGIN 20.0每一帧对屏幕内笔画get_strokes_in_camera_frustrum()做线段-圆相交检测将笔画按压力拆分为线段叠加橡皮笔刷半径后用Geometry2D.segment_intersects_circle()判定OVERLAP_THRESHOLD 0.95略收紧判定相交的笔画批量进入UndoRedo的单个 actionErase Stroke保证整批擦除可一步撤销。后续增强v0.6.0 支持数位笔倒置自动切换橡皮模式v0.7.0 修复了擦除单个点dot困难的体验问题。五、画笔系统压感、稳定器与速度感知线宽v0.7.0 集中落地了画笔的三项核心升级源码证据在 lorien/InfiniteCanvas/Tools/BrushTool.gd 与 lorien/BrushStroke/BrushStroke.gd笔刷稳定器/平滑v0.7.0 AddedSettings.GENERAL_STABILIZER_STRENGTH默认值见 lorien/Config.gd 的DEFAULT_STABILIZER_STRENGTH 0.5。当强度 ≥ 0.01 时用最近三个采样点加新点做三次贝塞尔插值Utils.cubic_bezier(p3, p2, p1, pos, t)其中t 0.5 (1.0 - strength) * 0.5即强度越高插值系数越保守、线条越平滑。速度感知线宽v0.7.0 Added在原有压感基础上叠加速度维度。_current_velocity来自event.screen_velocity归一化后的长度绘制时按速度对压力做衰减_current_pressure - min(velocity * 1.5, 0.33)最终经pressure_curve.sample()采样曲线资源见 lorien/InfiniteCanvas/default_pressure_curve.tres得到该点压力。这解释了快速划过线条更细、慢速更粗的书写手感。恒定笔画宽度开关v0.7.0 AddedSettings.GENERAL_CONSTANT_PRESSURE默认false开启后禁用压感、始终以恒定笔宽绘制适合不需要压感的场景。笔画的底层数据结构在 lorien/BrushStroke/BrushStroke.gd每笔画持有平行数组points: Array[Vector2]与pressures: Array[float]渲染时通过Line2Dwidth_curve逐点映射宽度压力值会被平滑与钳制MAX_PRESSURE_DIFF 0.05防止 Linux 上的压力尖峰MIN/MAX_PRESSURE_VALUE 0.1/1.0单笔画点上限MAX_POINTS 1000——这是 GodotLine2D/Polygon索引数量限制的工程妥协笔画超长时自动结束当前笔画并另起新笔画BrushTool.gd中points.size() BrushStroke.MAX_POINTS分支从根上修复了 v0.3.0 记录的长笔画消失问题changelog 中引用 issue #26v0.3.0 将压力灵敏度默认值从 1.0 提升到 1.5当前 lorien/Config.gd 中DEFAULT_PRESSURE_SENSITIVITY : 1.0可在设置中调整v0.7.0 将最大线宽从 50 降至32v0.5.0 起默认圆头笔帽DEFAULT_BRUSH_ROUNDING ROUNDED。点击一次即画出点dot的行为在 v0.7.0 得到修复_is_stroke_a_dot()综合点数量与累计距离DOT_MAX_DISTANCE_THRESHOLD 6.0判定单击并通过_draw_point()写入三个微小偏移点保证可见渲染。六、导出能力从 PNG 到 SVG 的取舍v0.2.0实现整张画布 PNG 导出。v0.5.0新增基础 SVG 导出器并移除粗糙的 PNG 导出Removed rudimentary png export in favor of the new SVG exporter——这一取舍与笔画即点集的矢量内核完全自洽。v0.7.0 Fixed修复使用移动工具移动过的笔画导出 SVG 后停留在原位置的 bug。导出实现见 lorien/Misc/SvgExporter.gd以所有笔画的包围盒并集计算画布尺寸含EDGE_MARGIN 0.025边距输出svg 背景rect 每条笔画的polyline并统计导出耗时。注意当前实现采用固定stroke-width:2changelog 与源码 TODO 均承认笔画宽度/压力数据尚未写入 SVG这是已知限制。七、画布交互与相机缩放、平移与网格v0.3.0引入无限网格设置菜单新增前台/后台 FPS 设定、线帽flat/round与压力灵敏度倍率选项禁用 VSync 并将固定目标 FPS 设为144低刷新率屏幕手感更顺滑窗口失焦时降为10 FPS以降低负载这两个默认值至今保留在 lorien/Config.gdDEFAULT_FOREGROUND_FPS : 144、DEFAULT_BACKGROUND_FPS : 10切换 GLES3 后端引入最小窗口尺寸防缩为 0。v0.5.0CTRLMMB缩放数位板用户友好SPACE键按当前鼠标位置居中画布窗口尺寸跨重启保存恢复。v0.6.0网格新增点状图案可在设置中切换回直线或完全关闭Settings.APPEARANCE_GRID_PATTERN默认DOTS网格尺寸默认 25.0网格开关按钮从工具栏移入设置。v0.7.0SPACE键 移动鼠标的替代平移方式缩放至鼠标光标精度优化。渲染设置常量在 lorien/Misc/Settings.gd 中以RENDERING_*、APPEARANCE_*前缀分组定义。八、文件管理、标签页与命令行打开v0.2.0改进含未保存更改文件的关闭流程About 对话框列出贡献者。v0.3.0菜单实现打开/保存新增另存为支持从文件系统拖拽打开文件支持命令行参数打开文件及 Windows 的打开方式集成修复切换标签页时相机位置与缩放被重置的问题新开标签页使用设置中的默认画布色。v0.5.0自动记忆并在退出/启动时自动重开.lorien文件对应 lorien/Misc/StatePersistence.gd。v0.7.0原生文件对话框取代 Godot 自带对话框文件标签支持响应式滚动与拖拽排序。九、设置系统与快捷键v0.6/v0.7 的破坏性变更9.1 设置项全貌源码级设置持久化由 lorien/Misc/Settings.gd 负责写入user://settings_v4.cfg路径常量见 lorien/Config.gd分settings与keybindings两个节区。按前缀分组的完整配置键如下均为 changelog 中对应能力的落点分组配置键默认值lorien/Config.gd常规general_pressure_sensitvity1.0常规general_constant_pressurefalsev0.7 新增常规general_stabilizer_strength0.5v0.7 新增常规general_default_brush_size10常规general_languageen切换即时生效无需重启v0.6常规general_tablet_driver平台相关v0.7 新增外观appearance_theme/appearance_ui_scale_mode/appearance_ui_scaleAUTO / 1.0外观appearance_grid_pattern/appearance_grid_sizeDOTS / 25.0v0.6外观appearance_canvas_color#202124v0.6 迁入.lorien文件不再存储背景色渲染rendering_foreground_fps/rendering_background_fps144 / 10v0.3渲染rendering_brush_roundingROUNDEDv0.39.2 可重绑定快捷键v0.6与格式变更v0.7v0.6.0 由贡献者实现可重绑定键盘快捷键核心机制在 lorien/Misc/KeybindingsManager.gd启动时遍历InputMap中所有非ui_/player_前缀的 action用Settings.get_keybinding()覆盖默认事件并通过rebind_action()写回InputMap快捷键定义于 lorien/project.godot 的[input]节。v0.7.0 Breaking Changeskeybindings 的存储格式发生变化自定义过快捷键的用户升级后需要重新设置。同时 v0.7.0 新增默认退出快捷键CTRLQ。完整默认快捷键表可查阅 docs/manuals/manual_v0.7.0.md如CTRLS保存、CTRLO打开、CTRLESVG 导出、CTRLZ/Y撤销重做、TAB专注模式、F12彩蛋等对应 lorien/project.godot 中shortcut_*与toggle_*系列 action。十、v0.7.0 的 Godot 4 迁移与工程决策v0.6.0 明确预告这是 Godot 3 的最后一个大版本接下来将移植到 Godot 4v0.7.0 落地迁移。工程证据lorien/project.godot 中config/featuresPackedStringArray(4.3)渲染方法为gl_compatibility延续了 v0.3 起 GLES3 与低端硬件兼容的折中路线run/low_processor_modetrue呼应 v0.7.0空闲时自适应帧率降低 GPU/CPU 负载配合 lorien/Config.gd 的BACKGROUND_IDLE_TIME_THRESHOLD : 250ms 与后台 10 FPS 策略[audio] driver/driverDummy印证 v0.7.0 的禁用所有继承自 Godot 的音频功能pen_tablet/driver.windowswintab对应 v0.7.0 新增的设置中更换数位板驱动选项迁移期修复了 macOS 模糊界面v0.6、隐现光标丢失、UI 自动缩放尤其 Windows/macOS等问题。v0.7.0 还包含UI 全面翻新、Windows 图标分辨率优化、新增乌克兰语与阿拉伯语翻译v0.6 已加入简体/繁体中文完整语言列表见 lorien/Assets/I18n/ 目录与 docs/i18n.md。十一、升级与兼容性注意事项实操结论综合 changelog 的破坏性变更与已知限制面向实际使用者给出结论v0.5.0 起旧存档中的橡皮擦笔画会被丢弃升级前备份.lorien文件v0.6.0 起.lorien文件不再保存画布背景色背景色由设置管理语言切换无需重启v0.7.0 起自定义快捷键需重新配置最大线宽上限为 32旧设置中的更大值会受限SVG 导出当前为固定线宽stroke-width:2压力/宽度数据尚未写入精确复刻笔触请以.lorien原生格式为准存档格式稳定性README 明确提示项目仍为 WIP存档格式未来可能变化。结语从 2021 年的首版到 Godot 4.3 时代的 v0.7.0Lorien 的 changelog 完整记录了一个点集渲染型无限画布应用的成长轨迹矢量内核决定了它必然走向 SuperEraser 与 SVG 导出数位板定位推动了压感、稳定器与速度线宽的三重进化而 v0.5/v0.7 的两次破坏性变更则展示了项目在可用性与格式自由之间的清醒取舍。对开发者而言docs/changelog.md 是理解该项目设计决策的第一手史料对用户而言配合 docs/manuals/manual_v0.7.0.md 与 docs/file_format.md 即可完整掌握其能力边界。赞分享桌面应用图形学【免费下载链接】LorienInfinite canvas drawing/whiteboarding app for Windows, Linux and macOS. Made with Godot.项目地址https://gitcode.com/gh_mirrors/lo/Lorien点击查看免费下载相关推荐Rough.js 4.x 版本演进深度解析从虚线绘制到扫描线填充的算法迭代全记录Rough.js 4.x 版本演进深度解析从虚线绘制到扫描线填充的算法迭代全记录 导读 Rough.js 是一个用 HTML Canvas 与 SVG 绘制手图形学X-AnyLabeling 版本演进全览从 v0.1.0 到 v4.0.6 的 CHANGELOG 深度解读X AnyLabeling 版本演进全览从 v0.1.0 到 v4.0.6 的 CHANGELOG 深度解读 X AnyLabeling 是一个轻量、高效、跨人工智能AI 应用数据标注计算机视觉桌面应用多模态fish-shell 版本演进全记录从 4.9 到 3.0 的发布说明深度解读fish shell 版本演进全记录从 4.9 到 3.0 的发布说明深度解读 本文基于 fish shell 官方发布说明 Release notes hCLI开发工具上一篇拆解Windows窗口样式位SRWE如何用复选框轻松开关标题栏、边框与菜单按钮下一篇如何用xmpp4cj管理联系人和在线状态:Roster与Presence完整实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表