到目前为止,我一直对Panda3d的模型导入感到沮丧。Panda3d只会导入模型一次,并且永远不会再更新(即使在更改了.egg文件的名称之后)
我首先将一个模型(让我们称之为版本1)导入到VS2010 panda3d中。然后我在3dsMax中修改了模型,并再次将其导出为egg (版本2)。但是,无论我导入多少次,panda3d都会顽固地使用版本1。重命名.egg也无济于事。我怀疑panda3d缓存系统正在缓存我以前的模型,并且有一些重要的东西将所有版本链接在一起,默认panda3d引擎返回到版本1。
主要的问题是,我如何解决panda3d不接受最新模型的问题?谢谢。
发布于 2012-12-01 23:06:59
我认为如果你在Panda3D论坛上问他们,你会更快地得到关于Panda3D的问题的答案。
但是为了回答你的特定问题,Panda确实包含了一个模型缓存,它默认情况下读取一次特定的文件名(在会话期间),但在同一会话期间不会再次读取磁盘,即使文件发生更改(但如果您需要的话,可以明确地要求它再次读取磁盘)。Panda还有一个持久的磁盘缓存,默认情况下,它也缓存会话之间的模型加载,尽管在这种情况下,它总是在盲目返回之前的模型之前检查文件的时间戳,如果文件更新,它将始终重新读取并返回新版本。
在这两种情况下,如果您完全重命名文件,它都不会返回缓存版本,所以在这种情况下一定发生了其他事情。
禁用缓存的确切方式取决于用于加载模型的特定调用。您引用了VS2010,所以我推断您是用C++编写的(但是官方并不支持使用VS2010而不是VS2008,所以您可能还会遇到其他问题,除非您很难正确地使用VS2010 )。
要避免特定模型的缓存,请尝试将标志中设置了LF_no_cache位的LoaderOptions对象传递给ModelPool::load_model() (或用于加载模型的任何接口)。
https://stackoverflow.com/questions/13641009
复制相似问题