新闻详情

新闻详情

首页 / 资讯中心 / 详情

F3D 版本演进全览:从 0.1.0 到 3.5.0 的功能迭代、破坏性变更与架构演进解析

发布时间:2026/9/18 18:21:14来源:尧图网络
F3D 版本演进全览:从 0.1.0 到 3.5.0 的功能迭代、破坏性变更与架构演进解析
F3D 版本演进全览从 0.1.0 到 3.5.0 的功能迭代、破坏性变更与架构演进解析【免费下载链接】f3dFast and minimalist 3D viewer.项目地址: https://gitcode.com/GitHub_Trending/f3/f3dF3DFast and Minimalist 3D Viewer是一款专注于快速、极简的 3D 模型查看器本篇文章以仓库中的 doc/CHANGELOG.md 为骨架系统梳理 F3D 从 v0.1.0 到 v3.5.0 的完整版本演进脉络并深入解析各版本中 CLI 选项、libf3d API、插件体系、渲染特性与打包方式的变更细节。阅读本文后你将能够对照版本号快速定位某项功能的引入时间与对应配置项理解 v3.0.0 大规模破坏性变更背后的设计取舍掌握 v3.5.0 新增的图像、WebIFC、PDAL 与 2D 交互等能力的实际用法与源码对应关系。一、版本脉络总览一条从查看器到渲染库 查看器的演进线F3D 的版本历史可以清晰划分为三个阶段v1.x 之前v0.1.x功能原型期。v0.1.0 是首个发布版本v0.1.1 修复了--version与--help的崩溃问题。v1.xv1.0.0 ~ v1.3.1桌面查看器成熟期。加入体渲染、HDRI、点精灵point sprites、色彩映射、Cheat Sheet、拖放、Shell 补全、多格式读取CityGML、PTS、TIFF、Exodus、STEP、IGES、FBX、DAE、OFF、DXF、Alembic等核心能力v1.3.0 引入libf3d alpha 版宣告 F3D 从应用走向应用 库的双层架构。v2.x ~ v3.xv2.0.0 ~ v3.5.0架构重构期。v2.0.0 引入插件plugin体系与 plugin SDK实现真正可选的依赖v3.0.0 完成自 1.x 以来最大规模的破坏性重构UI 重写为 ImGui、CLI 语法统一为--optionvalue、libf3d API 全面改写v3.5.0 则是当前仓库对应的最新版本围绕图像格式、点云、高斯泼溅与 Web 查看器做了大量增强。当前仓库根目录的 README.md 明确给出了 F3D 的自我定位支持 glTF、USD、STL、STEP、PLY、OBJ、FBX、Alembic 等大量格式支持动画、缩略图生成、实时 PBR 渲染与光线追踪完全可从命令行控制并包含 C17 接口的 libf3d 及其 C/Python/Java/JavaScript 绑定。二、v3.5.0图像、点云、高斯泼溅与 Web 能力全面增强作为当前最新版本v3.5.0 的变更可以从四类受众F3D 用户、libf3d 用户、打包者、Web 查看器用户分别展开。2.1 面向 F3D 用户新渲染特性与交互能力v3.5.0 为命令行与交互层带来了大量新选项这些 CLI 选项与 libf3d 选项的映射关系可在 application/F3DOptionsTools.h 中确认如checkerboard→model.checkerboard.enable、display-depth→render.effect.display_depth、dpi-aware→ui.dpi_aware、normal-glyphs→model.normal_glyphs.enable、notifications→ui.notifications.enable、scene-hierarchy→ui.scene_hierarchy。逐项说明如下--output支持动画多帧输出当加载包含动画的文件并用--output保存图像时可以写出多张图像按帧输出序列这是自动化渲染流水线中很实用的能力。--display-depth对应render.effect.display_depth直接显示深度图像用于调试深度缓冲与相机裁剪。测试 application/testing/tests.features.cmake 中的TestDisplayDepth、TestDisplayDepthColorMap、TestDisplayDepthCustomColorMap与TestDisplayDepthWithGrid覆盖了该选项与标量着色、色彩映射、网格的组合场景。--checkerboard对应model.checkerboard.enable在模型上叠加棋盘格纹理用于检查 UV 展开是否正确是资产制作与校验的实用调试工具。--scene-hierarchy对应ui.scene_hierarchy 交互绑定ShiftH弹出场景层级小部件可以逐个启用/禁用 actor 的可见性。该功能依赖 ImGui 实现交互层在 library/src/interactor_impl.cxx 中处理节点复选框被切换的事件。测试TestSceneHierarchyGLTF、TestSceneHierarchyMultiBlock、TestSceneHierarchyMultipleFiles等覆盖了 glTF、多块数据与多文件场景。--normal-glyphs对应model.normal_glyphs.enable以箭头字形显示法线配--normal-glyphs-scale可调节字形缩放默认 1.0范围 0.0~10.0。当模型不包含法线时会输出does not contain any normals提示见TestNormalGlyphsNoNormalsAvailable测试的 REGEXP 断言。--notifications对应ui.notifications.enable 交互绑定CtrlK按下任意交互绑定时弹出通知小部件配合ui.notifications.show_bindings可同时显示绑定信息。交互绑定在 library/src/interactor_impl.cxx 中注册为{CTRL, K}切换ui.notifications.enable。--dpi-aware对应ui.dpi_aware仅 Windows在 HiDPI 屏幕上自动重缩放字体。测试TestDPI125、TestDPI150通过 DPI_SCALE 参数验证 1.25 与 1.5 倍缩放下的 UI 表现。--font-color对应ui.font_color设置界面字体颜色默认值在 library/options.json 中定义为f3d_whiteTestFontColor测试使用--font-colorOrange验证效果。2D 交互模式--interaction-style2d对应interactor.style默认用于图像查看提供平移/缩放等适合 2D 内容如 PNG、JPG的交互--interaction-styletrackball为原--interaction-trackball的替代。interactor.style的枚举域在 options.json 中为[default, trackball, 2d]。2.2 新插件与格式支持webifc 与 pdalv3.5.0 新增两个插件webifc插件基于 web-ifc 引擎支持.ifc文件建筑信息模型BIM。打包者通过F3D_PLUGIN_BUILD_WEBIFCCMake 选项启用插件源码位于 plugins/webifc/。pdal插件通过 VTK 的 IOPDAL 模块支持众多点云格式包括.las与.lazLiDAR 常用格式。打包者通过F3D_PLUGIN_BUILD_PDAL启用源码位于 plugins/pdal/。2.3 新命令动画关键帧与配置信息jump_to_keyframe index跳转到指定动画关键帧配套的jump_to_keyframe_relative offset可相对前后移动若干关键帧。两者在 library/src/interactor_impl.cxx 中注册官方文档描述分别为 jump to a specific animation keyframe 与 move a number of keyframes forward or backward。print_config_info打印当前正在使用的配置文件信息方便排查实际生效的是哪个配置文件。set_camera命令新增back、bottom、left三个位置参数此前已支持 front/right/top/isometric 等标准机位本次补齐背面、底面与左面视角。2.4 渲染与交互的底层增强高斯泼溅 CPU 排序--blendingsort_cpurender.effect.blending.mode的枚举域在 options.json 中为[none, ddp, sort, sort_cpu, stochastic]sort_cpu模式将排序放到 CPU 执行从而让高斯泼溅在 macOS 上也可用。流式与管道输入支持cat file.glb | f3d -形式的 stdin 管道输入这是 Web 查看器大幅提升性能的基础见下文。图像格式支持直接读取.png、.jpg、.hdr、.exr等 2D 图像格式并进入 2D 交互模式。更多点精灵类型--point-sprites的枚举域扩展为[none, sphere, gaussian, circle, stddev, bound, cross]。非 PBR 格式以 PBR 方式渲染为没有 PBR 材质的传统格式提供更现代的观感。f3d 内置颜色选项可直接使用f3d_white、f3d_red、f3d_blue、f3d_yellow等命名色见 options.json 中parsed_default_value字段的用法同时修复了解析颜色时可能出现的段错误。其他修复修复了部分.vrml文件的崩溃、axes grid 未正确居中的数据问题--interaction-trackball已废弃。2.5 面向 libf3d 用户API 新增动画关键帧/名称恢复 API新增用于恢复动画关键帧与动画名称的接口配合jump_to_keyframe命令形成完整闭环。C 绑定异常支持部分C 绑定开始支持异常部分能力。Qt/QML 示例重写examples/libf3d/下的 Qt/QML 示例从零重写以正常工作。scene的add与addBufferAPI 在 Java/Python 绑定中重构。npm 包新增 webp 支持WebAssembly 产物与 npm 包能力对齐。新增 libf3d 选项ui.font_color、render.effect.display_depth、model.checkerboard.enable、ui.scene_hierarchy、model.normal_glyphs.enable、interactor.style含2d模式、ui.notifications.enable、ui.notifications.show_bindings、ui.dpi_awareinteractor.trackball废弃。2.6 面向打包者与 Web 查看器用户打包者所有内置依赖vendored dependencies更新新增可选依赖clip通过F3D_MODULE_CLIP启用暂不生效、web-ifc、pdal修复 FreeBSD 上使用 sysproc 检测可执行文件的逻辑。Web 查看器全面使用 libf3d 的流式特性获得显著性能提升移除了不支持流式的格式新增.3mf、.dxf与.ifc支持。Web 查看器基于 WebAssembly其绑定实现见 webassembly/F3DEmscriptenBindings.cxx。三、v3.4.x点精灵、Alembic 增强与 C 绑定引入v3.4.1 是 v3.4.0 的补充仓库 CHANGELOG 以 v3.4.1 为代表记录该分支行为变更高斯点精灵gaussian point sprites现在必须配合--point-sprites-absolute-size使用Alembic 默认不再显示标量。点精灵控制新增--point-sprites-absolute-sizelibf3dmodel.point_sprites.absolute_size控制点精灵是否随距离缩放--point-sprites-type废弃为--point-sprites。Alembic 增强支持 XForm 动画、含曲线的 Alembic 文件导入并显著提升了动画性能。交互新增CtrlShiftSpace反向播放动画命令toggle_animation_backward在 library/src/interactor_impl.cxx 中绑定为{CTRL_SHIFT, Space}O切换点精灵模式CtrlY/CtrlZ动态切换 up 方向ShiftN显示 HDRI 文件名。命令新增jump_to_frame跳转到指定帧配套jump_to_frame_relative按偏移移动。坐标轴与网格配色--x/y/z-colorlibf3dui.x_color/ui.y_color/ui.z_color默认分别为f3d_red/f3d_green/f3d_blue控制坐标轴小部件与网格颜色。libf3d 新增ui.hdri_filename、model.point_sprites.absolute_size、interactor::requestStop异步停止循环 API、log转发 API将日志转发而非显示、C 语言绑定F3D_BINDINGS_CCMake 选项无额外依赖。examples/libf3d/下新增完整的 C、Qt6、QML、Fltk、C、Java 示例。打包者VTK 最低版本提升至 v9.3.0移除 v9.2.6 及更早兼容。Web 查看器支持高斯泼溅与交互控制台优化配色主题。其他修复修复了noneCLI 选项解析、外部渲染上下文的混合问题、CtrlShift绑定显示、QuakeMDL 读取器的内存问题、elevation/azimuth 选项、体渲染后相机复位等问题macOS 修复了原生窗口焦点问题并新增原生文件菜单。四、v3.0.0最大规模破坏性重构——CLI 语法、libf3d API 与 UI 全面翻新v3.0.0 是 F3D 历史上最重要的转折点CHANGELOG 用大量 BREAKING CHANGE 记录了这次重构理解它们对迁移旧脚本与旧代码至关重要。4.1 CLI 层的破坏性变更配置语法变更配置文件语法整体变更详见 doc/user/06-CONFIGURATION_FILE.md。强制使用--option value不再支持必须写成--optionvalue。--scalars拆分拆分为--scalar-coloring与--coloring-array。多文件加载重构移除geometry-only、group-geometries新增更灵活的multi-file-mode。无头渲染统一不再发布独立 headless 二进制使用标准二进制加--rendering-backendegl即可。批量重命名--dry-run→--no-config、--bg-color→--background-color、--comp→--coloring-component、--progress→--loading-progress、--cells→--coloring-by-cells、--range→--coloring-range、--bar→--coloring-scalar-bar、--inverse→--volume-inverse、--samples→--raytracing-samples、--denoise→--raytracing-denoise、--ref→--reference、--ref-threshold→--reference-threshold、--readers-list→--list-readers。交互变更退出快捷键从Esc改为CtrlQ移除?信息转储交互改用命令系统见 doc/user/07-COMMANDS.md。4.2 新能力与 UI 重写UI 全面改用 ImGui 实现当前external/imgui/即为其内置依赖Console、Cheat Sheet、Drop Zone、文件对话框等全部基于 ImGui。命令系统成型--command-script脚本执行、Esc打开 ImGui 控制台输入命令、clear清空控制台、print_*系列命令scene/coloring/mesh/options 信息、--list-bindings、--list-rendering-backends。渲染后端可选--rendering-backend选择渲染后端包括 EGL 无头后端。交互增强CtrlO文件对话框、CtrlArrow切换文件时保持相机、4/6旋转相机 90 度、ShiftDrop仅拖入 HDRI、CtrlDrop仅拖入 3D 文件、ShiftF12保存最小截图。其他--armature显示骨骼glTF、.xbf与.brep支持、--input选项、~路径展开、按类型解析选项见 doc/user/08-PARSING.md、兼容 VFX CY2025 平台规范。4.3 libf3d API 重写所有废弃方法移除optionsAPI 从零重写且大量选项变为可选loader类被新的scene类取代engine创建 API 重写并新增context类camera、image::compareAPI 重构interactor移除setKeyPressCallBack、setDropFilesCallBack、timerCallback。C17 化全面使用nodiscard、std::filesystem、std::string_view移除 Python 3.8 支持新增 Python 3.13 支持与类型桩stubs。新增interactor::command*与interactor::binding*API、scene::loadAnimationTime、utils::collapsePathinteractor::start支持事件循环时长与回调。打包者VTK 最低版本要求 v9.2.6新增F3D_BINDINGS_PYTHON_GENERATE_STUBS选项tinyfiledialogs 成为内部可选依赖F3D_LINUX_APPLICATION_LINK_FILESYSTEM更名为F3D_LINUX_LINK_FILESYSTEM且默认关闭。插件开发者新增vtkF3DImporter与vtkF3DGLTFImporter便于继承子类化。五、v2.x插件体系、点云格式与 WebAssembly 兴起5.1 v2.5.0 ~ v2.5.1新增 WebAssembly 在线版本neutral 色调映射F12截图及--screenshot-filename--final-shader自定义后期处理--grid-color--animation-progress--backface-type文件名模板化见 doc/user/03-OPTIONS.md 的 filename templating 章节macOS 原生菜单。libf3d 新增相机 pan/zoom API、tkinter Python 示例、Python 日志级别暴露。v2.5.1 为小版本兼容 VTK v9.4.0。5.2 v2.4.0高斯泼溅新增二进制.splat格式的 3D Gaussians Splatting 支持--point-type控制点精灵显示方式即后来的model.point-sprites.type。glTF Draco支持 Draco 编码的 glTF 文件。相机--camera-orthographic正交投影交互5W循环切换动画并显示动画名。其他--colormap-file色彩映射预设--watch文件变更自动重载输出图像到 stdout-文件名Alembic 动画支持OCCT 插件STEP/IGES性能大幅提升。libf3dimage::toTerminalText将图像转为终端文本、image 元数据 API、vtkext模块、pluginsdk组件find_package的 f3d 组件之一。5.3 v2.3.0插件扩展新增实验性vdb插件OpenVDB 读.vdb与usd插件OpenUSD 读.usdassimp 插件新增.3mf与.x。交互--animation-autoplaylibf3dscene.animation.autoplay加载即播放动画。选项变更--verbose变为字符串选项--verbosequiet/--verbosedebug--quiet废弃--input废弃改为位置参数默认配置文件默认启用半透明支持。Alembic 插件重写以读取纹理坐标与法线EXR 多线程读取修复 254 以上骨骼数崩溃需 OpenGL 4.3等问题。打包者新增 OpenUSDF3D_PLUGIN_BUILD_USD与 OpenVDBF3D_PLUGIN_BUILD_VDB可选依赖。5.4 v2.2.1HDRI 细粒度控制新增hdri-file、hdri-ambient、hdri-skybox选项libf3drender.hdri.file、render.hdri.ambient、render.background.skyboxhdri废弃无hdri-file时使用默认 HDRI交互F切换环境光、J切换天空盒。标准机位快捷键1前、3右、7顶、9等轴测。OCCT 插件新增 Open CASCADE BRep 格式。libf3dimage API 重构支持多格式读写读 EXR/HDR写 PNG/JPG/TIF/BMPloader::loadGeometry从内存缓冲加载几何。5.5 v2.1.0动画支持重构并新增大量动画选项--camera-direction、--camera-zoom-factor--texture-matcapMatCap 纹理拖放打开 HDRI.exrHDRI/纹理EGL 无头二进制发布选项名拼写错误时给出建议--invert-zoomUP重载保持相机--grid-absolute网格定位启动时Drop Zone。打包者F3D_PLUGIN_OCCT_COLORING_SUPPORT、SONAME、F3D_PLUGINS_INSTALL_DIR、F3D_MODULE_EXR、外部 cxxopts/nlohmann-json 支持。5.6 v2.0.0插件体系落地移除--fullscreen新增--position窗口位置、--light-intensity光照强度及绑定、--group-geometries中键点击将相机居中到光标下点HDRI 缓存场景包围盒信息转储网格渲染大幅增强。libf3dloader API 从零重写新增实验性 JavaScript 绑定WebAssembly/Emscriptenmodel选项全部动态支持插件 SDK用于为任意格式创建插件。打包者插件实现真正可选依赖F3D_APPLICATION_LINK_FILESYSTEM选项基于组件的安装方式取代F3D_INSTALL_*移除打包支持。六、v1.x查看器核心能力成型与 libf3d 诞生v1.3.xv1.3.0 引入libf3d alphaC 库F3D 自身即使用它支持 Python 绑定新增--font-file、Alembic 格式几何支持v1.3.1 修复光线追踪与 macOS 窗口定位。v1.3.0 同时完成了应用 / libf3d / VTKExtensions三层架构的分离这也是当前仓库目录结构application/、library/、vtkext/的来源。v1.2.xv1.2.0 通过 OCCT 加入 STEP/IGES通过 Assimp 加入 FBX/DAE/OFF/DXFLinux 缩略图与桌面集成、Windows 缩略图--config、--quiet、--camera-index、--camera-azimuth/--camera-elevation修复 Windows 用户名含特殊字符的崩溃。v1.2.1 修复 Windows 缩略图崩溃 explorer.exe 的问题并新增.deb包。v1.1.x加入直接标量着色、turntable 交互器默认、glTF/Exodus 动画空格播放、glTF 蒙皮与形变、TIFF/Exodus 支持、--animation-indexv1.1.1 兼容 VTK v9.1.0。v1.0.xv1.0.0 加入体渲染、HDRI天空盒/HDR 文件/Filmic 色调映射、点精灵、inferno 色彩映射、拖放、多文件打开、Cheat Sheet、文件关联、--no-render、Shell 补全bash/zsh/fish、CityGML 与 PTS 读取器。七、关键演进趋势总结从完整 CHANGELOG 中可以提炼出 F3D 演进的四条主线这些趋势在后续使用与二次开发中值得重点关注从单机应用到多端覆盖v1.x 是桌面应用v2.x 加入 EGL 无头渲染与 WebAssemblyv3.5.0 新增 Android 版本并将 macOS 二进制迁移到 macOS 14 framework形成桌面 无头 Web 移动的完整矩阵。插件化与可选依赖v2.0.0 引入插件 SDK 后v2.3.0 的 vdb/usd、v3.5.0 的 webifc/pdal 全部以F3D_PLUGIN_BUILD_*CMake 选项接入plugins/目录下的每个子目录对应一个可选格式族。CLI 与 libf3d 双轨对应几乎每个 CLI 选项都有对应的 libf3d 点分选项如--display-depth↔render.effect.display_depth完整的默认值与枚举域定义在 library/options.json 中这是查阅任何选项语义的第一手资料。破坏性变更集中在 v3.0.0CLI 的--optionvalue语法、配置语法、libf3d 的 scene/options/engine API 均在 v3.0.0 定型后续 v3.x 版本如 v3.4.1、v3.5.0主要做增量扩展与废弃替换如--interaction-trackball→--interaction-styletrackball、--anti-aliasing-mode→--anti-aliasingAPI 相对稳定。如需进一步查阅各功能细节可对照 doc/user/03-OPTIONS.md全部选项说明、doc/user/07-COMMANDS.md命令系统、doc/libf3d/02-CLASSES.mdlibf3d 类与 doc/libf3d/05-PLUGINS.md插件开发等文档深入阅读。【免费下载链接】f3dFast and minimalist 3D viewer.项目地址: https://gitcode.com/GitHub_Trending/f3/f3d创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Unity 3D+C#羌族刺绣虚拟展馆漫游交互开发实战 2026/9/18 19:42:29

Unity 3D+C#羌族刺绣虚拟展馆漫游交互开发实战

第一次有人跟我说"能不能给羌族刺绣做个虚拟展馆"的时候,我脑子里冒出来的第一个问题不是技术选型,而是一个很实在的疑问:这东西到底是给谁看的?是给游客在手机上随手点两下,还是给研究者戴上头显慢慢看纹样…

阅读更多 →
Unity粒子、线条与拖尾特效实战:原理、调参与性能优化 2026/9/18 19:42:29

Unity粒子、线条与拖尾特效实战:原理、调参与性能优化

做游戏开发的朋友应该都清楚,视觉特效这东西,单看一个粒子、一条线、一段拖尾都不算难,难的是把它们放进同一个画面里,还能让人觉得“这个效果很整”。Unity(第二十部)这次选的“粒子、线条和拖尾”其实非常…

阅读更多 →
护工系统开发实战:从订单设计到计费结算的完整方案 2026/9/18 19:42:29

护工系统开发实战:从订单设计到计费结算的完整方案

先说明一下我的经历。前两年我参与开发过一套护工/陪护管理类软件,服务对象是一家做医院陪护和居家养老陪护的创业公司,系统跑通后,覆盖了十几个服务站点、几百名护工,日均订单量级虽然不是很大,但因为涉及真实服务履约…

阅读更多 →
为什么传导发射到30MHz就停,辐射发射却从30MHz开始? 2026/9/18 19:42:29

为什么传导发射到30MHz就停,辐射发射却从30MHz开始?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
因果锁相技术原理与工程应用解析 2026/9/18 19:42:29

因果锁相技术原理与工程应用解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
开源CMDB与资产管理平台选型:从概念到落地的避坑指南 2026/9/18 19:39:29

开源CMDB与资产管理平台选型:从概念到落地的避坑指南

CMDB和资产管理平台,这两个词放在一起,每年都要被翻出来讨论一轮。我这两年陆续调研、试用、并在生产环境里落地过几套开源方案,发现很多团队在选型阶段就把方向搞偏了——要么把CMDB理解成"高级Excel",要么指望一套开源…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞