欲降低面数,提升fps,屡遭挫折,终失败
前几日测我地图fps,结果出乎意料,6800xt在开启阴影的情况下,最低fps仅为13,关闭阴影则为23。我原先以为,3060以上的显卡应该不会这么卡。
这样不行,还是决定找找有什么方法,可以提升fps。我用了建模的方法制作模型,避免不了面数过多,过多的面数会降低fps。我目前的转换方法是su导出.3ds→explor3d导出.x→OmsiXConv导出.o3d。.3ds格式,将完整的平面分割成了无数三角形,他只能保存三角形。我普通的建筑物都有几千面数,高楼甚至有几万面数,就是被分割成了三角形,白白增加面数。
图:实验中模型面数为1669
还有什么方法能绕开.3ds?我试试从3dmax入手,查阅信息后得知,3dmax可以用插件实现导出.x格式。于是有了第一条路线:su→3dmax导出.x→OmsiXConv导出.o3d。3dmax 2022版可以据说直接导入无缝衔接su,我下载了,确实没错。不过插件只能2009-2012版本使用,于是又下载了3dmax 2009版。先试试插件,费了一番周折,在tb上得到了这个插件,遗憾的是导出的.x仍有三角形。又得到了其他插件,效果同样为仅为三角形。
方向转向另一款主流建模软件Blender。第二条路线:su→blender导出.x→OmsiXConv导出.o3d。然而最新版blender3.0.1并没有导出.x的选项,查询后,在stackoverflow网站中有人提到,2.49版本可以导出和导入.x,2.57版本可以导出.x。下载后,确实有用,导出的.x不再是只有三角形了。
但是,这条路线最大的困难在于,Su搬运到blender没有好办法,主要就是通过中转.3ds来实现,包括转换插件被网友拆开后发现,也是通过中转.3ds,这还是绕不开他。虽然说可以在blender中转换为四边面,但是四边面也是达不到多边面的效果的,最终面数也是1100+。
不过意外发现,.obj格式可以保存多边形,由于su导出设置中默认将.obj也保存为三角形,所以我都没发现这一点。先用su直接导出.obj,取消勾选保存三角形,面数降低了,为1186,但是没有达到完美的地步,还是存在很多三角形以及四边形。于是有了第三条路线:su→3dmax/blender导出.obj→explor3d导出.x→OmsiXConv导出.o3d。3dmax导出.obj是接近完美了面数:538,看得出已经没有多余的线条,虽然还是有几根,可以忽略。但是不知道为什么,使用3dmax导出不管是.3ds/.o3d没有贴图了,可能是我的3dmax出了问题,也有可能是我不会用3dmax,也有可能是su导入进来3dmax就别想出去了?blender就没有尝试,因为su只能通过中转导入blender,所以就没有意义尝试。除非一开始就在blender里建模。如果一开始就在3dmax/blender里面建模,应该行,只要别出现和我一样的导出没材质贴图的情况。尤其是blender低版本能直接导出.x(能导出至少四边形,因为不会用,就没有测试能否导出完美的面)。
如果费劲导出的.obj,最终导入游戏出了差错,也是白费劲。假设我已经得到了完美的.obj,就拿先前的没有贴图的模型实验吧,现在将要使用explor3d导出.x。结果发现,explor3d,又画上了三角形,面数是1117。这虽然比.3ds的纯三角形情况好,但是和用su直接导出不完美的.obj效果差不多。原来我都是在白忙活。
看来又得绕开explor3d了。其实是有办法的,用来勘察面数和线条的3dconverter(截图中已展示),也可以导出.x。不仅可以导出.x,还可以直接导出.o3d,听起来很方便。但是用它导出的模型没有明暗面,同时,在omsi中,被阳光照射刺眼程度,也和使用explor3d有区别,在我地图(暂未发布)中,先前建设好的马路,贪图方便就是用了他来转换的。其实,如果只使用3dconverter转换也没啥问题,但是由于我的建筑是建模得来的,没有明暗面就是一坨。如果是实景贴图做的建筑,就没有这个担忧。先实验3dconverter导出.x,就用有材质贴图的.obj来试试吧,果然,没有明暗面,模型竟然还来了个镜像,这样肯定是行不通的。3dconverter导出.o3d,明暗比.x稍微强一点,模型没有镜像了。
这样看根本没有好的办法使fps提升。还是有一些土办法的。我目前使用不了的有:
1)使用实景贴图,降低建模复杂度。
2)一开始就在3dmax中建模,导出为多边形.obj,然后中转.x,转换.o3d,但是需要解决导出的时候没有贴图的问题,有可能是软件的问题,有可能是我不会弄。
还需要解决中转.x的问题,通过explor3d会让模型又增加三角形,增加面数、通过3dconverter会没有明暗面。还有一个办法是通过ZM软件中转得到.x,也有一些问题,步骤比较繁琐、尚未得知会不会增加三角形增加面数、尚未得知会不会没有明暗面。
3)一开始就在blender中建模,导出为多边形.obj,/直接导出.x。
同样,需要解决中转.x带来的问题/直接导出.x是否完美的面数和是否有明暗面。
4)su导入3dmax,后续操作同“ 2)”。
我正在使用的:
1)拆散模型,单个文件面数控制在500面数。500面数是取fps和操作方便程度中和下来考虑的。模型的占地面积(长宽高)、面数(图元信息参数)、数量,都和fps有关,他们与fps的相互平衡关系尚未得知。
可以使用的:
1)su导出.obj。虽然仍旧不完美,但是比导出.3ds少得多。
行不通的:
1)3dmax直接通过explor3d中转.x。虽然在软件界面上写了支持.max文件的打开,但是实际上打不开。
2)3dmax导出为.x。仍然是全是三角形。即使将来能完美保存.x,也面临是否有明暗面的问题。
本文所述,可能对使用实景贴图的地图,参考意义不大,因为实景贴图的模型相对简单,面数较少,不必大费周章。
采用建模的方法做地图对omsi来真难,从出发点上就走错了,只好将错就错,这样下去只有进一步降低最大可见距离,和关闭阴影,关闭后视镜了。
ps:对比下来su思路真简单。3dmax和blender的套路好像是差不多的。
百夜米迦尔 是吸血鬼