
在开发SteamVR项目时,很多开发者会遇到VR项目在运行时不显示手柄控制器的问题。
出现该问题的主要原因,多数是因为VR项目路径存在于中文路径下(包括项目名称)所致。
自SteamVR 2.0发布以来,SteamVR SDK所需的手柄控制器模型不再包含在开发包内,而是在SteamVR客户端的安装目录下,具体路径为(以HTC VIVE 为例): (Steam安装目录)\steamapps\common\SteamVR\resources\rendermodels\vr_controller_vive_1_5

在此文件夹下,可以看到包含了多个多种文件,包括obj模型、mtl材质、png贴图和一个名称为vr_controller_vive_1_5.json的文件。其中,json文件负责记录手柄控制器的各个部件信息,通过它提供的信息,可以将各个部件组织为一个完整的手柄控制器,以下为该文件部分内容:

当程序运行时,会按照路径先找到json文件,然后基于json文件提供的信息找到这些部件。
当路径中存在中文时,系统可能因编码问题生成乱码路径,导致json文件解析失败,模型部件引用路径生成乱码(如 vr_controller_vive_1_5_æ§å¶å¨.obj),最终导致手柄控制器不能顺利加载呈现。同时可能伴随如下错误日志:

因此,在日常开发过程中,要养成英文命名的习惯,无论是项目、变量、资源还是路径,可从根本上规避因路径解析失败导致的资源加载异常问题。

最后,SteamVR手柄模型不显示的问题,是中文命名在技术开发中引发问题的典型案例。实际上,中文命名在其它技术场景下也可能带来兼容性或功能性问题。例如,在文件系统中,中文路径可能导致资源加载失败;在编程中,中文变量名可能引发编译错误;在数据库中,中文字段名可能导致查询失败;在网络中,URL包含中文可能导致解析错误。