dsh-3d-viewer:在 DSH 右侧边栏预览 FBX / OBJ / glTF / STL 模型

前言

在 DSH 里做空间相关的工作流时,模型文件往往是”看得见目录、看不见样子”:一个 .fbx 或 .glb 放在会话工作区里,除了用外部建模软件打开,很难快速判断它长的什么样、有没有动画、材质对不对。dsh-3d-viewer 想解决的就是这一步:把工作区里的 3D 模型直接拉到右侧边栏里预览,开箱即转、即缩放、即播放动画,不需要上传到任何外部服务。

它的定位是 DSH 客户端侧边栏插件,维护者是 ybniaobu,托管在 GitHub 和 npm 上,当前 GitHub 星标 1。下面按功能、安装、用法、限制的顺序介绍。

这是什么

一句话:dsh-3d-viewer 是 DeepSeek Harness(DSH)的侧边栏插件,用于从当前会话的工作区预览 3D 模型,支持 FBX、OBJ、glTF/GLB、STL。

它的关键约束是:不上传、不联网。模型文件从会话的工作区直接读取,预览在本地完成;插件包内自带四个 HDRI 环境贴图,由本地 DSH server 的一个只读路由提供,所以切换环境也不需要访问网络。

核心功能

  • 支持预览 FBX、OBJ、glTF、GLB、STL 共五类模型。
  • 在右侧边栏的文件树里点击模型文件,即在预览页签中打开。
  • 提供轨道旋转、缩放、材质切换、环境切换等交互。
  • 支持播放模型内嵌的动画。
  • 运行时不需要网络:HDRI 走本地 server 的 /dsh-3d-viewer/hdri/ 路由。
  • 外部资源(FBX/glTF 贴图、glTF 的 .bin、OBJ 的 MTL 与贴图)从会话工作区读取。

安装与启用

插件以 npm 包 dsh-3d-viewer 的形式分发,当前版本 0.1.1。官方推荐从 npm 安装,也支持从本地目录安装。

从 npm 安装(推荐)

1、打开 DSH Desktop,在侧边栏选择 Plugins。
2、点击 Add plugin → Install a third-party plugin。
3、输入 dsh-3d-viewer,或输入 dsh-3d-viewer@0.1.1 指定版本。
4、将 Registry 设置为官方 npm registry(国内可用 npmmirror)。
5、点击 Install,然后在 Installed plugins 下确认 3D Viewer 为 On。
6、在任意会话中打开模型。如果没有出现预览,先刷新页面;仍不行再重启 DSH。

更新方式:在 Plugins 下移除旧版本,再安装更高的新版本。

从本地目录安装(可选)

适用于离线或内网分发。先把插件目录解压到任意位置,目录内必须包含 package.json、client.js、index.js、cordis.patch.yml 以及 assets/hdri/ 目录。

1、打开 DSH Desktop,选择 Plugins。
2、点击 Add plugin → Install a third-party plugin。
3、输入目录的绝对路径(例如 F:\plugins\dsh-3d-viewer),点击 Install。
4、在 Installed plugins 下确认 3D Viewer 为 On。
5、在任意会话中打开模型,若没有预览则刷新页面,仍不行再重启 DSH。

本地安装是对目录的链接,不是复制。安装后不要移动、重命名或删除该目录,否则 DSH 下次启动可能找不到插件。

运行要求

  • DSH Desktop 0.2.2-rc.1 或更高版本(官方在 0.2.2-rc.1 上构建和测试)。
  • 浏览器支持 WebGL 2;不支持时预览会报错。
  • 模型文件需要放在会话工作区中,并能在右侧边栏的 Files 里访问到。

典型用法

1、打开任意会话,点击对话区右上角的右侧边栏按钮。
2、打开侧边栏的 Files(或按 Mod+P)。
3、点击任意 .fbx、.obj、.gltf、.glb 或 .stl 文件。
4、模型在预览页签中打开。文件较大或第一次切换环境时,可能需要等待几秒。

该插件通过 dsh 包元数据里的 client 配置,注入到 DSH 的右侧边栏与文档预览两个位置,因此入口就在右侧边栏,不需要额外命令行参数。

支持的格式与限制

FBX:网格、层级、材质、内嵌贴图、动画和节点数据。

OBJ:多边形、o/g 分组、法线、UV、顶点色、线/点图元,以及 mtllib/MTL 和常见贴图。

glTF / GLB:动画、蒙皮、内嵌资源,以及外部 .bin 与贴图。

STL:ASCII 与二进制 STL;中性双面 PBR 材质;二进制顶点色会保留。

需要注意的几点:

  • 所有格式:文件内嵌的灯光、相机和音频都会被移除,预览使用插件自己的灯光与相机。
  • FBX:缺失的外部贴图会提示警告,但不阻塞几何体加载。
  • OBJ:缺失 MTL 时回退到默认材质;缺失贴图用白色占位。
  • glTF / GLB:多个图元共享的资源只会读取一次。
  • STL:没有材质和动画。

明确不支持的内容:

  • 需要额外解码器的 glTF 扩展:Draco、Meshopt、KTX2。
  • DSH 无法直接解码的贴图格式:TGA、DDS、EXR 等(显示为白色占位)。
  • MTL 的 map_Ks / map_Ns 尚未完整映射到 PBR(Kd/Ks/Ns/d 以及漫反射、法线、凹凸、自发光、alpha、位移贴图已支持)。

代码结构

插件代码按宿主端(Host)和客户端(Client)两侧划分,几个关键路径:

路径 职责
index.js Host 侧:注册只读的 /dsh-3d-viewer/hdri/ 路由,提供打包在包内的 HDRI
src/client.js 客户端入口:按格式注册文档预览与侧边栏槽位
src/formats.js 格式注册表:id、扩展名、标题/徽标键、格式归一化
src/ui/ModelViewer.js 查看器容器:加载/错误状态、格式绑定、场景生命周期
src/scene/createSceneView.js 场景编排:渲染器、相机、控制器、生命周期
src/scene/environment.js 从 Host 路由获取 HDRI、解码、构建 PMREM、按 id 缓存
src/loaders/model-loader.js FBX / OBJ / glTF / GLB / STL 的异步加载与表驱动分发
src/vendor/FBXLoaderPbr.js 自带的 Three.js FBXLoader,支持金属度/粗糙度自定义属性
assets/hdri/ 打包的 HDRI 文件(Poly Haven,CC0),由 Host 路由提供

包内 devDependencies 里的 Three.js 会被预先打包进 client.js,React 则由 DSH 提供,不随包分发。

适用场景与注意事项

适合这类需求:在 DSH 会话里需要快速查看工作区中的 3D 资产,做格式或材质的初步核对;不想为了看一眼模型而切换到外部建模工具,也不想走任何云端预览。

两点需要提前知道:

  • 插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证(仓库内提供 LICENSE 和 THIRD_PARTY_NOTICES.md,许可证为 MIT;Three.js 为 MIT,Poly Haven HDRI 为 CC0)。
  • 只从可信来源安装插件。

另外,该插件收录在社区插件目录 SkillHub 上;社区目录是独立站点,与 DeepSeek / 幻方没有官方从属关系,不是官方应用商店。

小结

dsh-3d-viewer 解决的是”在 DSH 里快速看一眼 3D 模型”这件小事:从工作区直接读文件、本地预览、离线可用。安装路径明确(npm 或本地目录),运行要求也写清楚了。如果你的工作流涉及 3D 资产,可以先装上试一下,注意确认源码来源与许可证。

  • 目录页:https://www.skillhub.cn/plugins/ybniaobu/dsh-3d-viewer
  • GitHub:https://github.com/ybniaobu/dsh-3d-viewer
  • npm:https://www.npmjs.com/package/dsh-3d-viewer
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜