news 2026/10/17 1:54:57

F3D:轻量3D预览,全格式即开即看

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
F3D:轻量3D预览,全格式即开即看

F3D:轻量3D预览,全格式即开即看

【免费下载链接】f3dFast and minimalist 3D viewer.项目地址: https://gitcode.com/GitHub_Trending/f3/f3d

F3D 要解决的问题很具体:任何一个 3D 文件,几秒内看到它的 3D 预览。它由 F3D-APP Foundation 维护,C++ 编写、基于 VTK 渲染,文档列出的格式条目有 55 个,从 glTF、STL 到 STEP、Alembic,旁边还带一个可直接集成的渲染库 libf3d。当你手头有一份几百 MB 的 CAD 文件,只想花 10 秒确认结构对不对的时候,F3D 就是拿来干这个的。打开文件,直接看模型。

🚀 5分钟跑通 F3D:从安装到第一次打开模型

最直接的路径是二进制发行包:到 F3D 官网下载页选对应平台的包,装完终端里直接有f3d命令。纯 Python 脚本场景也可以pip install f3d拿到 Python 绑定。源码编译是备选路径,依赖 CMake ≥ 3.21、C++20 编译器和已装好的 VTK ≥ 9.4.0,仓库自带 CMake preset,cmake --preset=vcpkg可以直接用 vcpkg 拉依赖。

克隆仓库后配置、编译,就两步:

git clone https://gitcode.com/GitHub_Trending/f3/f3d cd f3d cmake -B build # 需要系统已安装 VTK >= 9.4.0 cmake --build build --parallel

这一步只构建f3d可执行文件和 libf3d,各格式插件是可选依赖,没装 Assimp、OCCT 之类的库就只是少了对应格式支持,不影响主程序。编译成功后,第一次运行就一行:

f3d /path/to/model.stl

跑对的标志很明确:弹出一个 3D 窗口,模型自动居中取景,灰底,没有菜单也没有按钮。用f3d --list-readers能确认当前构建带哪些读取器,f3d --version看版本号。文件打开后按 F1 弹出 Cheatsheet,全部热键都列在那张表里。

🔧 能力拆解:四类高频任务

预览任意模型文件

F3D 的格式覆盖面从 VTK 系列、glTF、USD、FBX,一直排到 LAS、PCD 这类激光点云。glTF、OBJ、FBX 这些"full scene"格式会保留文件里的灯光、相机和材质,其余格式走默认场景:灰色基色加 PBR 光照参数。一次传多个文件时,按 ↑ / ↓ 键切换文件组,F5 重载当前文件,加--watch可以让文件在磁盘上被修改后自动重新加载。

批量出图:命令行一次渲染一批

--output指定 PNG 路径后不弹窗口,直接渲染到文件。文件名支持模板变量:{model}是模型名,{frame}是帧号,配 for 循环就能一次出一批预览图:f3d "$f" --output=thumbs/{model}.png --no-background。生成文件管理器缩略图时再加--max-size=256,大文件直接跳过。--output-video则把渲染过程写成视频文件。

把 F3D 嵌进你的应用

仓库里的 libf3d 是 C++17 API,另有 C、Python、Java、JavaScript 四套绑定,格式全部以插件形式组织,用--load-plugins按需加载。examples/libf3d/ 目录里每个语言都有可直接编译的示例,最常用的是离屏渲染路径:Engine.create(True)建引擎,scene.add加模型,window.render_to_image拿图像,全程不弹窗。

按自己的习惯配置

命令行能控的选项几乎都能写进 JSON 配置文件,match字段按文件名正则给不同格式分配不同默认值,bindings字段把自定义按键绑到命令上。--list-bindings查看当前绑定,--config=xxx换一份配置。

指标数值备注
支持格式条目55glTF / USD / STEP / 点云等
格式插件109 个插件 + 内置 native
语言绑定5C++ / C / Python / Java / JavaScript
渲染基线VTK ≥ 9.4.0推荐 9.7.0,光线追踪可选编译
交互热键50+F1 打开 Cheatsheet 速查

这是 F3D 内置的默认环境天空图,PBR 光照用它计算环境光,也可以换一张自己的,命令是--hdri-file。

⚙️ 工作流嵌入:放进你的日常

CI 里批量出缩略图。背景:CI 产物页要给每个模型挂一张预览图。操作:循环执行f3d "$f" --output=thumbs/{model}.png --no-background --rendering-backend=osmesa。结果:透明背景 PNG 直接上页面,沙箱里没有 X 环境也能跑。

Python 平台生成资产缩略图。背景:数据平台要给每个资产出一张 512px 缩略图。操作:参考官方示例 examples/libf3d/python/offscreen-thumbnail/ 里的 offscreen_thumbnail.py,十几行配置关 UI、调光照、开 SSAA。结果:render_to_image拿图落盘,窗口从头到尾不出现。

远程协作分享同一视角。背景:你和同事各看各的角度,讨论对不上。操作:你这边f3d model.glb --save-statefile=view.json把状态文件发过去,对方f3d model.glb --load-statefile=view.json打开。结果:相机、选项、文件组完全一致。

🔍 F3D 配置项速查与高频坑

最常调的五个选项,格式统一为"配置项 → 默认值 → 推荐值 → 理由":

  • --axis(角落坐标轴三轴架)→ 关 → 开 → 转模型时知道朝向
  • --grid(地面网格)→ 关 → 开 → 给模型一个距离和位置参照
  • --edges(面边线)→ 关 → 看 STL / CAD 时开 → 轮廓细节清晰
  • --hdri-ambient(HDRI 环境光)→ 关 → 开 → 材质光照更真实
  • --coloring-mode(着色模式)→ material → 看科学数据时改 scivis → 场量按数值着色

Linux 上配置文件放在~/.config/f3d/config.json(即${XDG_CONFIG_HOME}/f3d/config.json),命令行选项永远覆盖配置文件。下面第一块对所有文件生效,第二块只命中 STEP 文件,第三块是自定义按键,行尾 # 是讲解注释,真实 JSON 文件里不含 #:

[ { "options": { "axis": true, "grid": true, "edges": true, "hdri-ambient": true } }, # 全局默认 { "match": ".*\\.(step|stp)$", # 按文件名正则匹配 "options": { "coloring-mode": "material" } }, { "bindings": { "O": "set_camera isometric", "Any+3": "roll_camera -90" } } # 按键 → 命令 ]

⚠️ 高频坑

  • 高斯泼溅 .ply 显示不对:.ply 是通用格式,F3D 不会默认按 3DGS 处理,补上--point-sprites-size=1 --point-sprites=gaussian --coloring-mode=direct -k,或写进配置的 match 块。
  • STEP 文件不认--color:OCCT 插件默认走标量着色,追加--coloring-mode=material颜色才生效。
  • 无头环境跑不起来:文件管理器生成缩略图的沙箱场景用--rendering-backend=osmesa(或 egl);Windows 下命令行执行--version等无窗口命令不显示输出,换f3d-console.exe。
操作默认键说明
旋转视图左键拖动绕焦点旋转相机
平移视图中键拖动平行移动相机
缩放滚轮 / 右键拖动加 Ctrl 缩放到光标处
重置相机Enter回到初始视角
截图F12Ctrl+F12 输出透明背景

📬 适合谁,下一步去哪

适合需要快速核验 3D 模型结构、不想打开重型 DCC 软件的用户。适合要在脚本或 CI 里批量生成预览图的用户。适合想在产品里嵌入一个 3D 渲染组件的开发者。

下一步:doc/user/目录从 Quickstart 开始读,选项、配置、交互都有专页;集成 libf3d 看doc/libf3d/01-OVERVIEW.md;构建细节看doc/dev/05-BUILD.md。生态侧,VTK 是 F3D 的渲染底座,格式读取能力基本都来自 VTK 的 IO 模块和上面那些插件。

下次那个几百 MB 的 CAD 文件再出现在收件箱里,你只需要一行:f3d,打开,看一眼。

【免费下载链接】f3dFast and minimalist 3D viewer.项目地址: https://gitcode.com/GitHub_Trending/f3/f3d

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 1:50:45

A-29P音频前端模块:突破性解决语音通信回声消除难题

突破性A-29P模块:彻底解决语音通信回声难题干了这些年音频方案集成,提起回声问题,几乎每个做语音通信设备的工程师都有一肚子话要说。前阵子我帮一位做通信前置模块的朋友评估一款新的芯片方案,正好遇到了他丢过来的灵魂拷问&…

作者头像 李华
网站建设 2026/10/17 1:44:10

SC34018 免提通话电路

概述SC34018合并了必需的放大器、衰减器和几种控制功能做成一种高品质的免提手柄式扬声电话系统。它包括一个话筒放大器、一个用于扬声器的音频功率放大器、发送和接收衰减器、背景噪声电平检测系统和一个衰减器控制系统,对发送和接收电平好于背景噪声做出反应。电路…

作者头像 李华
网站建设 2026/10/17 1:43:07

Linux内核总线机制:从platform bus到自定义总线实战

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

作者头像 李华
网站建设 2026/10/17 1:42:56

从0到1搭建Code Review机制:流程、指标与落地实践

很多团队都搞过 Code Review,但真正把它做成机制的,十个里面未必有一个。大多数情况是:定了规矩、建了流程、拉了群,头两周热情高涨,一个月后就开始流于形式,review 变成了“rebase 一下我就 merge”&#…

作者头像 李华