拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Houdini 启动提示 SHFS not current installed 解决方案

Houdini 启动提示 SHFS not current installed 解决方案

适用版本:Houdini 22 及以上(本文实测 22.0.368)。SHFS 是 Houdini 22 才引入的机制,更早的版本没有这个东西,也就不会遇到这个提示。实测环境:Windows 11 + Houdini 装在E:\3D\Houdini。

一、问题现象

把 Houdini 装到 C 盘以外的盘之后,每次启动都会看到这么一条提示:

SHFS not current installed: E:/3D/shfs

(注意原文就是这个语法,current installed不是currently——按这串原文搜就对了。)

点掉之后 Houdini 能正常启动、正常用,但会缺东西:自带的示例 / 测试内容全部不可用,比如 Test Geometry 节点里的 Otto、Capybara、Electra,以及配套的测试贴图和视频。

二、原因:Launcher 把 SHFS 下错地方了

从 Houdini 22 开始,官方把「示例 / 测试内容」从安装包里拆了出来,单独做成一个叫SHFS的共享包(多个 Houdini 版本共用同一份),共 145 个必需文件、约810 MB。

Houdini 找它的位置是写死的:

$HFS 的上一级目录 + \shfs

也就是说,Houdini 装在E:\3D\Houdini,它就会去E:\3D\shfs找。

而官方Houdini Launcher 有个坑:即使你把 Houdini 本体装到了别的盘,SHFS 依然会被下到 C 盘的默认位置——

C:\Program Files\Side Effects Software\shfs

两边对不上,于是每次启动都报。

三、先确认你自己的两个路径

1. 看 Houdini 期望 SHFS 在哪里

打开 cmd,把开头的路径换成你自己的 Houdini 安装目录:

"E:\3D\Houdini\bin\hython.exe" -c "import os; print('HFS =', os.environ['HFS']); print('SHFS =', os.environ['SHFS'])"

输出示例:

HFS = E:/3D/Houdini

SHFS = E:/3D/shfs

第二行的SHFS就是它期望 SHFS 所在的位置,报错信息里那个路径也是它。

2. 看 Launcher 实际把它下到哪里了

dir "C:\Program Files\Side Effects Software\shfs"

如果里面有houdini这个子文件夹、体积 800 MB 左右,说明文件早就下好了,只是放错了地方——那么照下面任选一种解法搬一下就行。

四、四种解法(选一个就行)

解法 1:把文件挪到正确位置(推荐,最稳)

把 Launcher 下好的那份整个复制到 Houdini 期望的位置。假设你的期望路径是E:\3D\shfs,在 cmd 里执行:

robocopy "C:\Program Files\Side Effects Software\shfs" "E:\3D\shfs" /E

  • /E—— 连子目录一起复制(含空目录)
  • /MOVE—— 复制完删掉源目录,省一份空间。想保留原件就别加

⚠️ 注意复制完的目录层级:应该是E:\3D\shfs\houdini\...,而不是E:\3D\shfs\shfs\houdini\...。

我自己的机器上就是这么解决的:把 Launcher 下好的那份复制到安装目录的上一级,145 个文件 / 810 MB,逐个校验通过,重启后提示消失。

复制到 Program Files 需要管理员权限,所以在「以管理员身份运行」的 cmd 里做。

解法 2:设环境变量指过去(不搬文件)

不想动文件,也可以直接告诉 Houdini「SHFS 在那边」。

系统属性 → 环境变量 → 新建(系统变量或用户变量都行):

SHFS = C:\Program Files\Side Effects Software\shfs

或者用另一个变量,查找效果一样(两个变量的区别见下面那条注意):

HOUDINI_SHFS_PATH = C:\Program Files\Side Effects Software\shfs

这两个变量的区别(官方文档原文):

  • SHFS—— 共享文件的根目录本身
  • HOUDINI_SHFS_PATH—— Houdini 去哪些路径找这个根目录,默认值就指向 $SHFS

⚠️ 实测一个很容易踩的点:HOUDINI_SHFS_PATH 是「替换」而不是「追加」。把它指到 B 目录之后,原来 A 目录里的文件就找不到了——我实测把查找路径指到新目录后,老目录里独有的文件查询结果直接变成 False。所以别想着两边都留着,二选一。

解法 3:建目录联接(不复制、不占第二份空间)

如果 C 盘和 Houdini 不在同一个盘,又不想多占 810 MB,可以建一个目录联接(Junction),让期望位置「指向」Launcher 那份。在 cmd 里执行:

mklink /J "E:\3D\shfs" "C:\Program Files\Side Effects Software\shfs"

mklink 是 cmd 的内置命令,必须在 cmd 里跑;PowerShell 里直接敲会提示找不到命令。对应的 PowerShell 写法是:

New-Item -ItemType Junction -Path "E:\3D\shfs" -Target "C:\Program Files\Side Effects Software\shfs"

⚠️ 建之前目标位置不能已经存在(目录已存在会直接报错),有就先把原来的改名或删掉。

目录联接对上层程序是完全透明的——Houdini 读到的就是里面的真实文件。

我实测过:通过联接,hou.shfs.isInstalled() 对三个文件的检查全部返回 True,和直接读真实目录没有任何区别。

删除联接用:

rmdir "E:\3D\shfs"

实测本机三种删法(cmd 的 rmdir、Git Bash 的 rm -rf、PowerShell 的 Remove-Item -Recurse)都只删掉链接本身、不会动目标目录里的内容;但稳妥起见,建议就用 rmdir。

解法 4:让 Houdini 自己重新下

Houdini 自带一个修复脚本 shfs_repair.py,在:

<Houdini 安装目录>\houdini\python3.13libs\shfs_repair.py

(python3.13libs这个目录名跟着 Houdini 内置的 Python 版本走,别的版本可能是python3.11libs之类,按实际情况找。)

它会照着 $HFS\shfs\file_list.json 里的清单,把缺的文件下到当前 SHFS 目录。执行:

cd /d E:\3D\Houdini\bin

hython.exe ..\houdini\python3.13libs\shfs_repair.py

想连可选文件一起下,加 --optional:

hython.exe ..\houdini\python3.13libs\shfs_repair.py --optional

实测三点注意事项:

  • 下载默认往SHFS 那个目录写。这时候改HOUDINI_SHFS_PATH是没用的(它是查找路径,不管下载落盘),要改就改SHFS变量。
  • 服务器偶尔会失败,实测遇到过 HTTP 500 和 SSL 连接错误,隔一会儿重跑一次通常就好了。
  • 下到一半中断的话,目录里会留下.hdownload后缀的临时文件,重跑脚本即可。

五、怎么确认修好了

方法一:重启 Houdini,启动提示消失。

方法二:不用开界面,用 hython 直接问(更快):

"E:\3D\Houdini\bin\hython.exe" -c "import hou; print(hou.shfs.isInstalled('houdini/pic/testimage/stump.heic'))"

打印True就是通了;False说明还没找对地方。

方法三:在 Houdini 里建一个 Test Geometry: Otto 节点,能正常出模型就对了。

六、常见问题

Q:这 810 MB 不装行不行?

行。那条提示只是个提醒,Houdini 本身能正常启动和工作,缺的只是自带的示例 / 测试内容。但你迟早会用到 Test Geometry 节点,建议装上。

Q:必需文件和可选文件有什么区别?

必需 145 个约 809 MB,是示例几何体、测试贴图 / 视频这些;可选 23 个约 6.3 GB,全是 AI 节点的模型权重(Neural Terrain、SAM2 图像分割、MoGe2 深度估计等)。不用 AI 节点的话,可选部分完全不需要下。

Q:设置环境变量后要重启吗?

要。环境变量对已经打开的进程不生效,改完把 Houdini 完全关掉再重新启动。

Q:Houdini 升级后还要重来一遍吗?

不用。SHFS 本来就是给多个 Houdini 版本共用的一份,装一次所有版本共享。除非你换了 SHFS 的存放位置。

Q:能不能干脆把 SHFS 删掉让提示消失?

不能,删了还是「找不到」。要么让它找得到,要么按解法 2 把它指到一个空目录——但那和没装是一回事,不如直接装上。

Q:我按文章改完还是报同样的错?

按顺序检查三件事:① 复制完的目录层级对不对(别多套一层 shfs);② 环境变量是不是设了两处互相打架;③ 是不是在「查找路径」上指了 A、而文件在 B。用第五节的 hython 命令验证一下,输出 False 就是还没对。

七、命令速查

目的

命令

查 Houdini 期望的 SHFS 位置

<安装目录>\bin\hython.exe -c "import os; print(os.environ['SHFS'])"

查 Launcher 下到哪了

dir "C:\Program Files\Side Effects Software\shfs"

复制到正确位置

robocopy "C:\Program Files\Side Effects Software\shfs" "E:\3D\shfs" /E

建目录联接

mklink /J "E:\3D\shfs" "C:\Program Files\Side Effects Software\shfs"

删除目录联接

rmdir "E:\3D\shfs"

重新下载必需文件

hython.exe ..\houdini\python3.13libs\shfs_repair.py

重新下载含可选文件

hython.exe ..\houdini\python3.13libs\shfs_repair.py --optional

验证是否修好

hython.exe -c "import hou; print(hou.shfs.isInstalled('houdini/pic/testimage/stump.heic'))"

八、本文的验证记录

下面这些结论不是照文档抄的,是在本机上逐条跑出来的,列出来供参考:

结论

怎么验的

结果

Houdini 期望 SHFS 在 $HFS 的上一级

hython 读 os.environ["SHFS"]

HFS=E:/3D/Houdini → SHFS=E:/3D/shfs

Launcher 下到了 C 盘

dir 该目录

确实在 C:\Program Files\Side Effects Software\shfs,145 个文件 / 810 MB

那份文件是完整可用的

把它设成 SHFS 再查三个文件

全部 True

HOUDINI_SHFS_PATH 是替换不是追加

指到新目录后再查老目录独有的文件

老目录文件变成 False(所以别两边都留)

它只管查找、不管下载

设了它再调用下载

文件仍然下到 $SHFS,没进它指的目录

SHFS 变量既管查找也管下载

指到空目录后跑 shfs_repair.py

25 秒下了 6 个文件 / 15 MB,落点正确

目录联接对 Houdini 透明

建联接后再查三个文件

全部 True,与真实目录无差别

删联接不会动目标内容

建联接后分别用 rmdir / rm -rf / Remove-Item -Recurse 删

三种都只删链接,目标文件完好

shfs_repair.py 可用

文件齐全时整跑一遍

退出码 0,约 2 秒完成(只校验不下载)

九、小结

一句话:SHFS 必须待在「Houdini 安装目录的上一级 \shfs」,而 Launcher 默认把它下到了 C 盘。搬过去、或者用环境变量 / 目录联接指过去,都能解决。

搬文件最稳,目录联接最省空间,环境变量最省事——按自己的情况挑一个。

返回列表