昨天晚上尝试将用wings3d构建的模型转换到Panda3D的egg格式,中间遇到一些小问题,其中一个到今早才解决,记录在这里,备忘。
正如我在上一篇blog里所说的,x文件是目前Panda3D支持最好的格式,先用wings3d将模型导出为x格式文件,然后用x2egg file.x file.egg将x格式文件转为egg格式,很简单,至少看起来是这样。模型的大小对速度影响很大,简单的模型在导出和转换步骤都很快,复杂的模型在两个环节都会很慢,甚至出现内存不足的错误!这个其实是可以解决的,我后面再讲,先说说x文件转换为egg文件常会遇到的问题。
最常见的两个问题是大小写和非法字符。导出的x文件中一般都有图片文件的路径,图片文件名一般都是大写的,而x2egg命令好像是大小写敏感的,而实际的文件名一般都是小写的,因此会出现找不到指定文件的错误。解决方法很简单,用文本编辑器打开x文件,找到图片文件名(一般在开头部分),修改为小写即可。非法字符主要是x文件中的frame或者material中的命名有时候会出现“()”等字符,甚至是乱码。乱码就要手动一个个找出来,随便改个名字就行,其他的非法字符用查找替换去掉就行。需要注意的是,有时候x文件很大,好几M,有的文本编辑器(如PSPad)打开速度会很慢,有的打开速度很快(如记事本),但保存时会写入其他东西(BOM),也不敢用,最后还是用Ulipad比较靠谱,当然也可以用其他的,不过我机子上目前就这几个了~
再来说说内存不足的问题。其实一般的电脑上都不会出现这个问题的,因为有虚拟内存嘛~我恰好昨天装了一个TrueCrypt,它在安装时禁用了虚拟内存,我当时没在意。后来转换大一点的x文件时老是抱怨内存不足,我查看了一下,x2egg果然很耗内存,当时以为无解了,心想图形图像处理果然是耗内存啊!今早突然想到可能是禁用了虚拟内存的问题,马上恢复过来,再一试,果然就可以了~
还有一个问题没解决,有一个模型转换没问题,但在用pview查看egg文件时出错。暂时不管它了,其实那些复杂的模型虽然我也转换了,但鉴于导入后太占内存,以后使用的机会也不多,更多的是使用那些简单的模型,毕竟我对模型的细节要求不高~
另外,发现用egg2bam将egg文件转为二进制的bam文件导入速度果然提高了,但是之后再用pview查看egg文件导入速度也很快,怀疑是不是pview会自动将查看过的egg文件缓存,抑或是自动先找有没有相同文件名的bam文件?
下面的任务就是自己写程序构建一个简单的三维场景,放入车辆,运动起来。还是那句话,程序不复杂,难点还是在三维场景的建模上~加油吧!
没有评论:
发表评论