前言:这个东西也是我的本科毕业设计,原本想过段时间再写这些,看来时间有些不够了,无奈,只好匆匆下笔

以前一直是致力于游戏方面,认为室外场景主要有两种,一种是Terrain,一种是大块的StaticMesh。前者很难用于城市场景,后者对美工的要求很高,工作量很大,而且修改起来也很困难。对于VR,应该说是一点也不了解,感觉目前应用还不是特别广,只有在某些大的工程或科研中才会使用到,因为成本问题。

最近写的这个东西,用两个词概括一下就是Dynamic Mesh,它是由CtrlPoint和Brush这两种东西动态生成的。CtrlPoint就是三维坐标,用它们连成曲线,Brush是各种各样的画笔,封装了不同的算法和shader,然后沿着曲线生成Mesh,听起来很简单,实际上也很简单:)

动态Mesh的计算量很大么?应该说,不会大于skeleton mesh,而且,有相当一部分计算可以放到VS中做。对于一些CPU强劲的商务机,使用SoftVS不会影响性能,固定管线的像素处理也能够满足基本的应用。

DBuffer的效率究竟怎样呢?其实只要在Lock的时候保证上一桢已经画完,CPU就不会停下。一个直观的办法就是准备两组Buffer,画一组的时候填充另一组。

有些地方不用staticmesh是不行的,但staticmesh的instancing是个好东西,而且,这些instance的位置和方向也可以用Brush算。

全局四叉树中只保存了CtrlPoint和它们连成的曲线,每一桢只需要生成可见的Mesh,利用有限的内存,场景可以做得相当大,而且没有dynamic loading。在构造可见列表的时候粗略地按照从近到远的顺序,如果instance个数超过最大值,就画最近的n个,不会对画面造成太大影响。

这个东西目前的完成度还很低,而且它的可用性还是个未知数,不管怎么说,能把自己的想法实现出来是一件很高兴的事,如果你对这个东西感兴趣,请一定要让我知道^^!