news 2026/10/29 19:47:47

F3D:一条命令打开 60 多种 3D 文件的命令行查看器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
F3D:一条命令打开 60 多种 3D 文件的命令行查看器

F3D:一条命令打开 60 多种 3D 文件的命令行查看器

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

要确认一个.stl的孔位对不对,双击文件却要等完整的 CAD 软件启动,还要点进菜单才能旋转视角;如果想在 CI 里给一批模型出缩略图,图形界面更是走不通。F3D(Fast and minimalist 3D viewer)就是为这种"只看不建"的场景做的 3D 命令行查看器:一条f3d model.stl打开模型,鼠标直接接管视角,再配--output参数就能无界面直接出图。

为什么值得试 F3D 这类 3D 命令行查看器

用排除法看它填的是哪个空位。

  • 重型 CAD / DCC 软件:能做建模和编辑,但只是"看一眼模型"就要付出整个软件的启动成本,且大多没法在服务器上无界面运行;
  • 通用图片查看器:能开 PNG 和 EXR,但打不开.step、.vtu、.las这类 3D 与科学数据;
  • 单语言脚本库:能渲染,但往往只有 Python 一种绑法,没法同时喂给 C 后端和 Java 前端。

F3D 的取舍写在官方愿景里:明确不做菜单栏 UI、不做数据加工、不做导出功能,只把"快速且正确地显示"这一件事做深。换来的结果是:11 个官方插件覆盖 60 多种格式(完整清单见 格式支持页),喂.glb、.fbx、.usd这类完整场景文件时,灯光、相机、材质、动画直接按文件定义生效;--output让窗口可以整个消失,F3D 变成一台静帧渲染机。如果你打开过它的窗口,左上角一行小字是当前文件名,按F1会弹出快捷键速查表——交互方式和熟悉的 3D 软件一致,只是没有菜单栏。

F3D 最快安装与首次运行:最小可跑通路径

两条安装路线:

  • 用发行版包管理器或预编译安装包,装完终端里就有f3d命令;
  • 需要最新特性或自定义插件时从源码构建,依赖是 CMake、C++20 编译器和 VTK ≥ 9.5,各格式插件按需开启,构建细节见 构建文档:
git clone https://gitcode.com/GitHub_Trending/f3/f3d cd f3d && mkdir build && cd build cmake .. -DF3D_MODULE_OCCT=ON -DF3D_MODULE_ASSIMP=ON cmake --build . -j$(nproc)

验证成功的两个信号,看到就算跑通:

  1. f3d --list-readers打出一份读取器清单——这份清单代表你这次构建实际能用哪些格式,构建没坏;
  2. f3d /path/to/model.stl --output=out.png --resolution=1280,720执行完,out.png落盘,尺寸 1280×720——不弹窗口,直接出图,这就是后面所有批量用法的地基。

拆一个核心机制:文件是怎么被路由到读取器的

F3D 处理一个文件的链路是"输入 → 识别与路由 → 输出"。输入是文件路径;中间 F3D 先按扩展名匹配,再校验文件头内容(可用--skip-content-check跳过),然后路由到对应插件的读取器。11 个官方插件各管一摊:occt管 STEP/IGES/BREP/FCStd,assimp管 FBX/DAE/OFF,usd管 USD,alembic、draco、hdf、pdal、vdb、webifc各管一族,native插件自动加载,覆盖 VTK XML、STL、OBJ、glTF、点云与图片等最常见格式(划分见 格式支持页)。输出分两种场景:.glb、.fbx、.usd、.3ds、.wrl这类完整场景文件,灯光、相机、材质、动画一并读出直接生效;纯几何文件则套用默认场景——灰色 PBR 材质、标准相机,先看清模型本身。其余能力一句话带过:colormap 标量着色、体渲染、光线追踪都在选项里,f3d --help能一次翻完。

实战配方:批量出图、动画与无头渲染

批量渲染缩略图

  • 前提:一个目录里的 50 个.obj,加一个 shell。
  • 做法:
for f in models/*.obj; do f3d "$f" --output="${f%.obj}.png" --resolution=1280,720 done
  • 预期结果:每个.obj旁边多一张同名 PNG,不打开任何窗口,全程几分钟。

播放模型动画

  • 前提:文件内含动画(.abc、.fbx、.gltf)。
  • 做法:加载后按W在动画列表间切换、空格播放,F1看当前动画名;命令行则用--animation-indices指定编号,-1表示全部同时播放,参数细节见 动画文档。
  • 预期结果:窗口底部出现蓝色进度条,模型开始动;输出文件名里带{frame}模板时,还能把整个动画逐帧导成 PNG 序列。

无头渲染进 CI 或服务器

  • 前提:一台没有显示器的机器,比如 CI runner。
  • 做法:f3d model.glb --output=out.png --no-background --rendering-backend=osmesa。
  • 预期结果:生成透明背景 PNG,可直接叠在网页上;--rendering-backend切到egl或osmesa就是无界面渲染模式,选项全表见 命令行选项文档。

集成与扩展:把 libf3d 接进你的程序

应用层只是外壳,核心是 C++17 库 libf3d:入口类f3d::engine由create()创建,scene、window、interactor、options 全靠 getter 取,加载一个文件、interactor.start()就开始渲染交互。同一套 API 导出到四种绑定:C(c/)、Python(python/)、Java(java/)、WebAssembly(webassembly/F3DEmscriptenBindings.cxx),能在浏览器里跑。最小 Python 示例在 examples/libf3d/python/render-image/render_image.py,十几行完成加载、渲染、存图。插件化方面,每个格式是独立插件,native之外用--load-plugins按需加载;想自研格式读法,从 plugins 目录 里挑一个结构照抄,插件 SDK 指南 给了f3d_plugin_declare_reader等 CMake 宏,构建产物是一个.so加一份自注册 JSON;渲染层在 vtkext/。架构细节见 libf3d 概述 和 语言绑定说明。

决策清单:谁该装 F3D,谁该绕开

适合:

  • 要频繁"打开一个 3D 文件看一眼",而格式在 STL、STEP、glTF、FCStd、VTK、点云之间来回切换;
  • 需要批量出图、生成缩略图,或在无显示环境里渲染;
  • 想把 3D 渲染嵌进自己的程序,且目标语言不止一种。

不适合:

  • 需要建模、布尔运算、数据加工——F3D 明确不提供数据加工与导出功能;
  • 工作流里必须有菜单、按钮式的图形界面;
  • 文件格式不在 格式支持页 的清单里,且暂无对应插件(此时再看一遍插件 SDK,或者换个工具)。

下一步动作:装上 F3D 后,先跑一遍f3d /path/to/model.stl --output=test.png——test.png 落盘的那一刻,批量、无头、脚本化这些用法对你就全部解锁了。

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

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

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

Druid连接池:8个最常配错的参数、默认值与生产推荐值

Druid连接池:8个最常配错的参数、默认值与生产推荐值 【免费下载链接】druid 阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池 项目地址: https://gitcode.com/gh_mirrors/druid/dr…

作者头像 李华
网站建设 2026/10/29 19:25:32

GoFrame+Vue3+ElementPlus 动态表格列配置

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

作者头像 李华
网站建设 2026/10/29 19:25:31

GoFrame+Vue3+ElementPlus 后台开发流程拆解

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

作者头像 李华
网站建设 2026/10/29 19:23:44

基于GD32HC与minimp3的软解码MP3播放器设计与实现

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

作者头像 李华
网站建设 2026/10/29 19:22:20

网站整站下载器实战:wget镜像与Playwright动态补抓全流程

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

作者头像 李华