append;PublicMember::CTS_pSearchPath->append;PublicMember::CTS_pSearchPath->append;PublicMember::CTS_pSearchPath->append;从代码中可以看出,使用了绝对路径,这样就限制了对物体对象的管理和加载,更不便于物体和程序的统一发布管理,须进行必要的处理。"/>
理论教育 路径搜索:VegaPrime虚拟现实技术成功改造

路径搜索:VegaPrime虚拟现实技术成功改造

时间:2023-11-24 理论教育 版权反馈
【摘要】:引入路径搜索类的头文件为:#include "vpSearchPath.h"。在这个应用中,对象都储存于VegaPrime 安装目录下的某个子目录中,所以在配置物体路径时采用了以下代码:图6.5.1路径搜索类继承图PublicMember::CTS_pSearchPath=vpSearchPath::instance();PublicMember::CTS_pSearchPath->append;PublicMember::CTS_pSearchPath->append;PublicMember::CTS_pSearchPath->append;PublicMember::CTS_pSearchPath->append;从代码中可以看出,使用了绝对路径,这样就限制了对物体对象的管理和加载,更不便于物体和程序的统一发布管理,须进行必要的处理。

路径搜索:VegaPrime虚拟现实技术成功改造

引入路径搜索类的头文件为:#include "vpSearchPath.h"。

路径搜索类视图如图6.5.1所示。在场景中加载的对象主要是物体,而物体很有可能是以文件形式储存在某个位置。如何来管理对象的路径呢?Vega Prime 提供了vpSearchPath对象来完成这个功能。在这个应用中,对象都储存于VegaPrime 安装目录下的某个子目录中,所以在配置物体路径时采用了以下代码:

图6.5.1 路径搜索类继承图

PublicMember::CTS_pSearchPath=vpSearchPath::instance();

PublicMember::CTS_pSearchPath->append("C:/Program Files/MultiGen-Paradigm/resources /tutorials/vegaprime/desktop_tutor/tornado/data/land");

PublicMember::CTS_pSearchPath->append("C:/Program Files/MultiGen-Paradigm/resources /tutorials/vegaprime/desktop_tutor/tornado/data/farmhouse");

PublicMember::CTS_pSearchPath->append("C:/Program Files/MultiGen-Paradigm/resources /tutorials/vegaprime/desktop_tutor/tornado/data/humv-dirty");

PublicMember::CTS_pSearchPath->append("C:/Program Files/MultiGen-Paradigm/resources /tutorials/vegaprime/desktop_tutor/tornado/data/grainstorage");

从代码中可以看出,使用了绝对路径,这样就限制了对物体对象的管理和加载,更不便于物体和程序的统一发布管理,须进行必要的处理。把"C:/Program Files/MultiGen-Paradigm/ resources/tutorials/vegaprime/desktop_tutor/tornado/data"目录复制到应用程序VPTestDialog 目录下,这样,只要获取当前程序所在的目录,再加上data 目录,就能得到物体的路径。

首先,为PublicMember 类添加一个静态数据成员:

static CString CTS_RunPath; //存储程序运行路径

然后,利用下面的代码获取程序所在的路径:(www.daowen.com)

char buf[MAX_PATH];

::GetCurrentDirectory(MAX_PATH,buf);

PublicMember::CTS_RunPath.Format("%s",buf);

做完这些工作,就可以把原来的路径搜索代码替换为以下代码:

PublicMember::CTS_pSearchPath=vpSearchPath::instance();

PublicMember::CTS_pSearchPath->append(PublicMember::CTS_RunPath +"/data/land");

PublicMember::CTS_pSearchPath->append(PublicMember::CTS_RunPath+"/data/farmhouse");

PublicMember::CTS_pSearchPath->append(PublicMember::CTS_RunPath+"/data/humv-dirty");

PublicMember::CTS_pSearchPath->append(PublicMember::CTS_RunPath+"/data/grainstorage");

在进行了这样的路径配置之后,对物体的管理和应用就与应用程序的管理和应用统一了起来,非常灵活方便,特别是在动态加载物体对象时非常方便。当然,这样配置就要求data目录与可执行文件必须在同一个目录中。例如,如果要在VPTestDialog 目录中找到Release目录,直接运行VPTestDialog.exe 文件,就要求把data 目录复制到Release 目录下。

当然,只要真正明白了Vega Prime 目录对象的作用,就可以灵活地配置和管理目录。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈