F3D:3条命令免费打开任意3D文件的开源查看器
【免费下载链接】f3dFast and minimalist 3D viewer.项目地址: https://gitcode.com/GitHub_Trending/f3/f3d
F3D 是一款免费的开源 3D 查看器,专为命令行设计。它支持 glTF、USD、STL、STEP、Alembic 等 50 多种格式,从游戏资产到科学数据集都能直接打开,并且完整暴露了渲染选项供脚本调用。如果你不想为看一眼 STL 或 FBX 文件启动大型软件,或者需要在流水线里批量出图,F3D 就是为此准备的工具。
核心能力一览
| 能力 | 说明 | 适合场景 |
|---|---|---|
| 50+ 格式读取 | 几何数据、点云、体积、科学数据、CAD 交换格式,格式插件可插拔 | 统一管理多来源 3D 文件 |
| 命令行全控制 | 数百个选项、配置文件、命令脚本,无人值守运行 | 批量渲染、CI 出图 |
| 动画播放 | 支持 glTF/FBX/USD/Alembic 等格式的动画,可指定索引、导出逐帧序列 | 快速预览动画资产 |
| 科学数据可视化 | 标量着色、colormap、网格参照、点云显示 | 科研数据检查 |
| libf3d 渲染库 | C++17 API,附带 C、Python、Java、JavaScript 绑定 | 在自有应用中嵌入 3D 渲染 |
安装到第一张渲染图
普通用户直接安装发行包即可,装完后终端里会出现f3d命令。开发者想定制格式插件或语言绑定时,从源码构建:
git clone https://gitcode.com/GitHub_Trending/f3/f3d cd f3d mkdir build && cd build cmake .. cmake --build . -j$(nproc)CMake 变量控制功能开关,比如F3D_PLUGIN_BUILD_OCCT打开 STEP/BREP 等 CAD 格式,F3D_BINDINGS_PYTHON生成 Python 绑定,完整清单见 构建文档。
构建完成后,打开一个文件只需:
f3d model.glb窗口打开后是交互式视图:左键拖拽旋转、滚轮缩放、Enter复位相机,按F1显示快捷键备忘单。加一个参数就能直接出图:
f3d model.glb --output=render.png执行后不弹窗口,直接得到一张 PNG。加--no-background输出透明背景,加--resolution控制分辨率。
非交互批量出图
F3D 的所有渲染选项都能从命令行传入,这让批处理非常简单。下面几个选项在无人值守场景里最常用到:
| 选项 | 作用 |
|---|---|
--output=<png> | 渲染到文件,可用{frame}变量导出动画帧序列 |
--output-video=<file> | 渲染到视频帧文件,可配合 FFmpeg 封装 |
--rendering-backend=osmesa | 强制离屏后端,用于无显示器的服务器 |
--max-size=<MiB> | 拒绝加载超过指定大小的文件,生成缩略图时常用 |
--watch | 文件在磁盘上变化时自动重载 |
配合配置文件(--config指定)和命令脚本(--command-script),同一套渲染参数可以固定下来反复使用,适合放进自动化流程。
打开动画并指定播放哪一段
glTF、FBX、USD、Alembic 等格式内嵌的动画可以直接播放。在交互窗口中按W切换当前动画,按Space播放。命令行方式则先选索引再自动播放:
f3d anim.glb --animation-indices=1 --animation-autoplay--animation-indices=-1表示同时播放文件内全部动画。用--output配合{frame}模板变量可以把选中的动画逐帧导出为图片序列。
科学数据的标量着色与参照网格
打开 VTK 系列(.vtu/.vti)等数据集后,F3D 自动识别几何类型(表面、点云、体积)并给出合理默认显示。标量字段着色加 colormap、水平参照网格,一个命令即可叠加:
f3d data.vtu --grid网格支持单元尺寸、颜色、反射强度等参数,-e显示单元边线,-x显示坐标轴。完整格式列表及各自的流式读取、动画支持情况,见 支持格式文档;所有渲染选项及效果对比图见 选项文档。
libf3d:把渲染能力嵌入自己的程序
F3D 的核心是一个独立的 BSD 许可库 libf3d,提供 C++17 API,附带 C、Python、Java 和 WebAssembly 绑定。几行代码即可完成离屏渲染并保存图像:
f3d::engine::autoloadPlugins(); f3d::engine eng = f3d::engine::create(true); // offscreen eng.getScene().add("path/to/file.ext"); f3d::image img = eng.getWindow().setSize(300, 300).renderToImage(); img.save("img.png");它也可以从内存 buffer 加载网格,甚至通过mesh_view派生类做零拷贝的 in-situ 可视化。各语言的完整示例在 examples/libf3d/,API 说明见 libf3d 文档。
什么场景该用、什么场景别用
需要快速查看 3D 文件、批量生成缩略图或渲染图、在 CI 里校验模型能否正常加载、或者给自有程序嵌一个轻量 3D 渲染窗口时,F3D 都很合适。反过来,如果目标是编辑模型、做布尔运算或格式转换,不要用 F3D:官方明确不提供数据加工和导出功能,它只负责读入和显示。
资源索引
- 快速入门指南:运行、交互、动画的完整入门
- 支持的文件格式:全量格式表与 reader 级选项
- 命令行选项:每个选项的默认值与效果对比
- 交互说明:鼠标、快捷键、截图
- 贡献指南:构建预设与提交规范
F3D 把"快速看到 3D 数据"这件事做成了一个可以完全用命令行驱动、并能嵌入应用的开源工具,格式、渲染、动画三个维度都留足了参数空间。
【免费下载链接】f3dFast and minimalist 3D viewer.项目地址: https://gitcode.com/GitHub_Trending/f3/f3d
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考